mirror of
https://git.savannah.gnu.org/git/guile.git
synced 2025-04-29 19:30:36 +02:00
Merge commit '9b0975f1dc
'
Conflicts: libguile/foreign.c module/ice-9/psyntax-pp.scm module/ice-9/psyntax.scm
This commit is contained in:
commit
855db1905d
331 changed files with 1929 additions and 817 deletions
1
.gitignore
vendored
1
.gitignore
vendored
|
@ -147,3 +147,4 @@ INSTALL
|
|||
/lib/stdalign.h
|
||||
/lib/signal.h
|
||||
/lib/sys/types.h
|
||||
/lib/dirent.h
|
||||
|
|
|
@ -1,11 +1,11 @@
|
|||
# Having a separate GNUmakefile lets me `include' the dynamically
|
||||
# Having a separate GNUmakefile lets me 'include' the dynamically
|
||||
# generated rules created via cfg.mk (package-local configuration)
|
||||
# as well as maint.mk (generic maintainer rules).
|
||||
# This makefile is used only if you run GNU Make.
|
||||
# It is necessary if you want to build targets usually of interest
|
||||
# only to the maintainer.
|
||||
|
||||
# Copyright (C) 2001, 2003, 2006-2011 Free Software Foundation, Inc.
|
||||
# Copyright (C) 2001, 2003, 2006-2012 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
|
||||
|
@ -114,7 +114,7 @@ endif
|
|||
|
||||
abort-due-to-no-makefile:
|
||||
@echo There seems to be no Makefile in this directory. 1>&2
|
||||
@echo "You must run ./configure before running \`make'." 1>&2
|
||||
@echo "You must run ./configure before running 'make'." 1>&2
|
||||
@exit 1
|
||||
|
||||
endif
|
||||
|
|
138
NEWS
138
NEWS
|
@ -5,6 +5,144 @@ See the end for copying conditions.
|
|||
Please send Guile bug reports to bug-guile@gnu.org.
|
||||
|
||||
|
||||
Changes in 2.0.4 (since 2.0.3):
|
||||
|
||||
* Notable changes
|
||||
|
||||
** Better debuggability for interpreted procedures.
|
||||
|
||||
Guile 2.0 came with a great debugging experience for compiled
|
||||
procedures, but the story for interpreted procedures was terrible. Now,
|
||||
at least, interpreted procedures have names, and the `arity' procedure
|
||||
property is always correct (or, as correct as it can be, in the presence
|
||||
of `case-lambda').
|
||||
|
||||
** Support for cross-compilation.
|
||||
|
||||
One can now use a native Guile to cross-compile `.go' files for a
|
||||
different architecture. See the documentation for `--target' in the
|
||||
"Compilation" section of the manual, for information on how to use the
|
||||
cross-compiler. See the "Cross building Guile" section of the README,
|
||||
for more on how to cross-compile Guile itself.
|
||||
|
||||
** Fluids can now have default values.
|
||||
|
||||
Fluids are used for dynamic and thread-local binding. They have always
|
||||
inherited their values from the context or thread that created them.
|
||||
However, there was a case in which a new thread would enter Guile, and
|
||||
the default values of all the fluids would be `#f' for that thread.
|
||||
|
||||
This has now been fixed so that `make-fluid' has an optional default
|
||||
value for fluids in unrelated dynamic roots, which defaults to `#f'.
|
||||
|
||||
** Garbage collector tuning.
|
||||
|
||||
The garbage collector has now been tuned to run more often under some
|
||||
circumstances.
|
||||
|
||||
*** Unmanaged allocation
|
||||
|
||||
The new `scm_gc_register_allocation' function will notify the collector
|
||||
of unmanaged allocation. This will cause the collector to run sooner.
|
||||
Guile's `scm_malloc', `scm_calloc', and `scm_realloc' unmanaged
|
||||
allocators eventually call this function. This leads to better
|
||||
performance under steady-state unmanaged allocation.
|
||||
|
||||
*** Transient allocation
|
||||
|
||||
When the collector runs, it will try to record the total memory
|
||||
footprint of a process, if the platform supports this information. If
|
||||
the memory footprint is growing, the collector will run more frequently.
|
||||
This reduces the increase of the resident size of a process in response
|
||||
to a transient increase in allocation.
|
||||
|
||||
*** Management of threads, bignums
|
||||
|
||||
Creating a thread will allocate a fair amount of memory. Guile now does
|
||||
some GC work (using `GC_collect_a_little') when allocating a thread.
|
||||
This leads to a better memory footprint when creating many short-lived
|
||||
threads.
|
||||
|
||||
Similarly, bignums can occupy a lot of memory. Guile now offers hooks
|
||||
to enable custom GMP allocators that end up calling
|
||||
`scm_gc_register_allocation'. These allocators are enabled by default
|
||||
when running Guile from the command-line. To enable them in libraries,
|
||||
set the `scm_install_gmp_memory_functions' variable to a nonzero value
|
||||
before loading Guile.
|
||||
|
||||
** SRFI-39 parameters are available by default.
|
||||
|
||||
Guile now includes support for parameters, as defined by SRFI-39, in the
|
||||
default environment. See "Parameters" in the manual, for more
|
||||
information. `current-input-port', `current-output-port', and
|
||||
`current-error-port' are now parameters.
|
||||
|
||||
** Add `current-warning-port'
|
||||
|
||||
Guile now outputs warnings on a separate port, `current-warning-port',
|
||||
initialized to the value that `current-error-port' has on startup.
|
||||
|
||||
** Syntax parameters.
|
||||
|
||||
Following Racket's lead, Guile now supports syntax parameters. See
|
||||
"Syntax parameters" in the manual, for more.
|
||||
|
||||
Also see Barzilay, Culpepper, and Flatt's 2011 SFP workshop paper,
|
||||
"Keeping it Clean with syntax-parameterize".
|
||||
|
||||
** Parse command-line arguments from the locale encoding.
|
||||
|
||||
Guile now attempts to parse command-line arguments using the user's
|
||||
locale. However for backwards compatibility with other 2.0.x releases,
|
||||
it does so without actually calling `setlocale'. Please report any bugs
|
||||
in this facility to bug-guile@gnu.org.
|
||||
|
||||
* New interfaces
|
||||
|
||||
** (ice-9 session): `apropos-hook'
|
||||
** New print option: `escape-newlines', defaults to #t.
|
||||
** (ice-9 ftw): `file-system-fold', `file-system-tree', `scandir'
|
||||
|
||||
* Bug fixes
|
||||
|
||||
** Fix R6RS `fold-left' so the accumulator is the first argument.
|
||||
** fix <dynwind> serialization.
|
||||
** Fix bugs in the new `peval' optimizer.
|
||||
** Allow values bound in non-tail let expressions to be collected.
|
||||
** Fix bit-set*! bug from 2005.
|
||||
** Fix bug in `make-repl' when `lang' is actually a language.
|
||||
** Hack the port-column of current-output-port after printing a prompt.
|
||||
** FFI: Hold a weak reference to the CIF made by `procedure->pointer'.
|
||||
** FFI: Hold a weak reference to the procedure passed to `procedure->pointer'.
|
||||
** FFI: Properly unpack small integer return values in closure call.
|
||||
** Allow overlapping regions to be passed to `bytevector-copy!'.
|
||||
** Fix `validate-target' in (system base target).
|
||||
** `,language' at REPL sets the current-language fluid.
|
||||
** `primitive-load' returns the value(s) of the last expression.
|
||||
** Add an exception printer for `getaddrinfo-error'.
|
||||
** Add a deprecated alias for $expt.
|
||||
** Document invalidity of (begin) as expression; add back-compat shim.
|
||||
** Web: Allow URIs with empty authorities, like "file:///etc/hosts".
|
||||
** HTTP: Fix validators for various list-style headers.
|
||||
** HTTP: Extend handling of "Cache-Control" header.
|
||||
** HTTP: Fix qstring writing of cache-extension values
|
||||
** HTTP: `write-request-line' writes absolute paths, not absolute URIs.
|
||||
** HTTP: Permit non-date values for Expires header.
|
||||
** FreeBSD build fixes.
|
||||
** Fix generalized-vector-{ref,set!} for slices.
|
||||
** Fix erroneous check in `set-procedure-properties!'.
|
||||
** Don't leak file descriptors when mmaping objcode.
|
||||
** Fix bugs related to mutation, the null string, and shared substrings.
|
||||
** Deprecate SCM_ASRTGO.
|
||||
** Add deprecated shim for `scm_display_error' with stack as first argument.
|
||||
** i18n: Fix gc_malloc/free mismatch on non-GNU systems.
|
||||
** Make sure `regexp-quote' tests use Unicode-capable string ports.
|
||||
** Have `cpu-word-size' error out on unknown CPUs; add support for MIPSEL.
|
||||
** `scm_from_stringn' always returns unique strings.
|
||||
** Empty substrings no longer reference the original stringbuf.
|
||||
** `scm_i_substring_copy' tries to narrow the substring.
|
||||
** Avoid calling `u32_conv_from_encoding' on the null string.
|
||||
|
||||
Changes in 2.0.3 (since 2.0.2):
|
||||
|
||||
* Speed improvements
|
||||
|
|
13
README
13
README
|
@ -93,10 +93,15 @@ Guile requires the following external packages:
|
|||
- pkg-config
|
||||
|
||||
Guile's ./configure script uses pkg-config to discover the correct
|
||||
compile and link options for libgc and libffi. If you don't have
|
||||
pkg-config installed, or you have a version of libgc that doesn't
|
||||
provide a .pc file, you can work around this by setting some
|
||||
variables as part of the configure command-line:
|
||||
compile and link options for libgc and libffi. For this to work,
|
||||
the `PKG_CONFIG_PATH' environment variable must be set to point to
|
||||
the places where libgc's and libffi's `.pc' files can be found:
|
||||
|
||||
PKG_CONFIG_PATH=/path/to/libgc/lib/pkgconfig:/path/to/libffi/lib/pkgconfig
|
||||
|
||||
Alternatively, when pkg-config is not installed, you can work around
|
||||
this by setting some variables as part of the configure
|
||||
command-line:
|
||||
|
||||
- PKG_CONFIG=true
|
||||
|
||||
|
|
|
@ -3,13 +3,13 @@ eval '(exit $?0)' && eval 'exec perl -wS "$0" ${1+"$@"}'
|
|||
if 0;
|
||||
# Generate a release announcement message.
|
||||
|
||||
my $VERSION = '2011-11-09 21:30'; # UTC
|
||||
my $VERSION = '2012-01-06 07:46'; # UTC
|
||||
# The definition above must lie within the first 8 lines in order
|
||||
# for the Emacs time-stamp write hook (at end) to update it.
|
||||
# If you change this file with Emacs, please let the write hook
|
||||
# do its job. Otherwise, update this string manually.
|
||||
|
||||
# Copyright (C) 2002-2011 Free Software Foundation, Inc.
|
||||
# Copyright (C) 2002-2012 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
|
||||
|
@ -44,7 +44,7 @@ sub usage ($)
|
|||
my $STREAM = ($exit_code == 0 ? *STDOUT : *STDERR);
|
||||
if ($exit_code != 0)
|
||||
{
|
||||
print $STREAM "Try `$ME --help' for more information.\n";
|
||||
print $STREAM "Try '$ME --help' for more information.\n";
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -106,7 +106,7 @@ sub sizes (@)
|
|||
my $t = `$cmd`;
|
||||
# FIXME-someday: give a better diagnostic, a la $PROCESS_STATUS
|
||||
$@
|
||||
and (warn "$ME: command failed: `$cmd'\n"), $fail = 1;
|
||||
and (warn "$ME: command failed: '$cmd'\n"), $fail = 1;
|
||||
chomp $t;
|
||||
$t =~ s/^([\d.]+[MkK]).*/${1}B/;
|
||||
$res{$f} = $t;
|
||||
|
@ -210,7 +210,7 @@ sub print_news_deltas ($$$)
|
|||
else
|
||||
{
|
||||
# This regexp must not match version numbers in NEWS items.
|
||||
# For example, they might well say `introduced in 4.5.5',
|
||||
# For example, they might well say "introduced in 4.5.5",
|
||||
# and we don't want that to match.
|
||||
$line =~ /^$re_prefix.*(?:[^\d.]|$)\Q$prev_version\E(?:[^\d.]|$)/o
|
||||
and last;
|
||||
|
@ -222,9 +222,9 @@ sub print_news_deltas ($$$)
|
|||
close NEWS;
|
||||
|
||||
$in_items
|
||||
or die "$ME: $news_file: no matching lines for `$curr_version'\n";
|
||||
or die "$ME: $news_file: no matching lines for '$curr_version'\n";
|
||||
$found_news
|
||||
or die "$ME: $news_file: no news item found for `$curr_version'\n";
|
||||
or die "$ME: $news_file: no news item found for '$curr_version'\n";
|
||||
}
|
||||
|
||||
sub print_changelog_deltas ($$)
|
||||
|
@ -269,7 +269,7 @@ sub print_changelog_deltas ($$)
|
|||
# Append any remaining ChangeLog files.
|
||||
push @reordered, sort keys %changelog;
|
||||
|
||||
# Remove leading `./'.
|
||||
# Remove leading './'.
|
||||
@reordered = map { s!^\./!!; $_ } @reordered;
|
||||
|
||||
print "\nChangeLog entries:\n\n";
|
||||
|
@ -280,11 +280,11 @@ sub print_changelog_deltas ($$)
|
|||
|
||||
my $cmd = "cvs -n diff -u -r$prev_cvs_tag -rHEAD @reordered";
|
||||
open DIFF, '-|', $cmd
|
||||
or die "$ME: cannot run `$cmd': $!\n";
|
||||
or die "$ME: cannot run '$cmd': $!\n";
|
||||
# Print two types of lines, making minor changes:
|
||||
# Lines starting with `+++ ', e.g.,
|
||||
# Lines starting with '+++ ', e.g.,
|
||||
# +++ ChangeLog 22 Feb 2003 16:52:51 -0000 1.247
|
||||
# and those starting with `+'.
|
||||
# and those starting with '+'.
|
||||
# Don't print the others.
|
||||
my $prev_printed_line_empty = 1;
|
||||
while (defined (my $line = <DIFF>))
|
||||
|
@ -310,7 +310,7 @@ sub print_changelog_deltas ($$)
|
|||
# The exit code should be 1.
|
||||
# Allow in case there are no modified ChangeLog entries.
|
||||
$? == 256 || $? == 128
|
||||
or warn "$ME: warning: `cmd' had unexpected exit code or signal ($?)\n";
|
||||
or warn "$ME: warning: '$cmd' had unexpected exit code or signal ($?)\n";
|
||||
}
|
||||
|
||||
sub get_tool_versions ($$)
|
||||
|
@ -329,7 +329,7 @@ sub get_tool_versions ($$)
|
|||
next;
|
||||
}
|
||||
# Assume that the last "word" on the first line of
|
||||
# `tool --version` output is the version string.
|
||||
# 'tool --version' output is the version string.
|
||||
my ($first_line, undef) = split ("\n", `$t --version`);
|
||||
if ($first_line =~ /.* (\d[\w.-]+)$/)
|
||||
{
|
||||
|
@ -410,7 +410,7 @@ sub get_tool_versions ($$)
|
|||
. "in the gnulib source directory.\n"), $fail = 1;
|
||||
|
||||
exists $valid_release_types{$release_type}
|
||||
or (warn "$ME: `$release_type': invalid release type\n"), $fail = 1;
|
||||
or (warn "$ME: '$release_type': invalid release type\n"), $fail = 1;
|
||||
|
||||
@ARGV
|
||||
and (warn "$ME: too many arguments:\n", join ("\n", @ARGV), "\n"),
|
||||
|
@ -505,7 +505,7 @@ then run this command to import it:
|
|||
|
||||
gpg --keyserver keys.gnupg.net --recv-keys $gpg_key_id
|
||||
|
||||
and rerun the \`gpg --verify' command.
|
||||
and rerun the 'gpg --verify' command.
|
||||
EOF
|
||||
|
||||
my @tool_versions = get_tool_versions (\@tool_list, $gnulib_version);
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
# Output a system dependent set of variables, describing how to set the
|
||||
# run time search path of shared libraries in an executable.
|
||||
#
|
||||
# Copyright 1996-2011 Free Software Foundation, Inc.
|
||||
# Copyright 1996-2012 Free Software Foundation, Inc.
|
||||
# Taken from GNU libtool, 2001
|
||||
# Originally by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996
|
||||
#
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
#!/bin/sh
|
||||
# Print a version string.
|
||||
scriptversion=2011-11-13.13; # UTC
|
||||
scriptversion=2012-01-06.07; # UTC
|
||||
|
||||
# Copyright (C) 2007-2011 Free Software Foundation, Inc.
|
||||
# Copyright (C) 2007-2012 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
|
||||
|
@ -98,8 +98,8 @@ while test $# -gt 0; do
|
|||
--version) echo "$version"; exit 0;;
|
||||
--prefix) shift; prefix="$1";;
|
||||
-*)
|
||||
echo "$0: Unknown option \`$1'." >&2
|
||||
echo "$0: Try \`--help' for more information." >&2
|
||||
echo "$0: Unknown option '$1'." >&2
|
||||
echo "$0: Try '--help' for more information." >&2
|
||||
exit 1;;
|
||||
*)
|
||||
if test -z "$tarball_version_file"; then
|
||||
|
@ -107,7 +107,7 @@ while test $# -gt 0; do
|
|||
elif test -z "$tag_sed_script"; then
|
||||
tag_sed_script="$1"
|
||||
else
|
||||
echo "$0: extra non-option argument \`$1'." >&2
|
||||
echo "$0: extra non-option argument '$1'." >&2
|
||||
exit 1
|
||||
fi;;
|
||||
esac
|
||||
|
|
|
@ -3,13 +3,13 @@ eval '(exit $?0)' && eval 'exec perl -wS "$0" ${1+"$@"}'
|
|||
if 0;
|
||||
# Convert git log output to ChangeLog format.
|
||||
|
||||
my $VERSION = '2011-11-02 07:53'; # UTC
|
||||
my $VERSION = '2012-01-06 07:14'; # UTC
|
||||
# The definition above must lie within the first 8 lines in order
|
||||
# for the Emacs time-stamp write hook (at end) to update it.
|
||||
# If you change this file with Emacs, please let the write hook
|
||||
# do its job. Otherwise, update this string manually.
|
||||
|
||||
# Copyright (C) 2008-2011 Free Software Foundation, Inc.
|
||||
# Copyright (C) 2008-2012 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
|
||||
|
@ -47,7 +47,7 @@ sub usage ($)
|
|||
my $STREAM = ($exit_code == 0 ? *STDOUT : *STDERR);
|
||||
if ($exit_code != 0)
|
||||
{
|
||||
print $STREAM "Try `$ME --help' for more information.\n";
|
||||
print $STREAM "Try '$ME --help' for more information.\n";
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -78,6 +78,21 @@ EXAMPLE:
|
|||
$ME --since=2008-01-01 > ChangeLog
|
||||
$ME -- -n 5 foo > last-5-commits-to-branch-foo
|
||||
|
||||
SPECIAL SYNTAX:
|
||||
|
||||
The following types of strings are interpreted specially when they appear
|
||||
at the beginning of a log message line. They are not copied to the output.
|
||||
|
||||
Copyright-paperwork-exempt: Yes
|
||||
Append the "(tiny change)" notation to the usual "date name email"
|
||||
ChangeLog header to mark a change that does not require a copyright
|
||||
assignment.
|
||||
Co-authored-by: Joe User <user\@example.com>
|
||||
List the specified name and email address on a second
|
||||
ChangeLog header, denoting a co-author.
|
||||
Signed-off-by: Joe User <user\@example.com>
|
||||
These lines are simply elided.
|
||||
|
||||
In a FILE specified via --amend, comment lines (starting with "#") are ignored.
|
||||
FILE must consist of <SHA,CODE+> pairs where SHA is a 40-byte SHA1 (alone on
|
||||
a line) referring to a commit in the current project, and CODE refers to one
|
||||
|
@ -93,7 +108,7 @@ s/all tile types/all file types/
|
|||
1379ed974f1fa39b12e2ffab18b3f7a607082202
|
||||
# Due to a bug in vc-dwim, I mis-attributed a patch by Paul to myself.
|
||||
# Change the author to be Paul. Note the escaped "@":
|
||||
s,Jim .*>,Paul Eggert <eggert\@cs.ucla.edu>,
|
||||
s,Jim .*>,Paul Eggert <eggert\\\@cs.ucla.edu>,
|
||||
|
||||
EOF
|
||||
}
|
||||
|
@ -196,9 +211,10 @@ sub parse_amend_file($)
|
|||
my @cmd = (qw (git log --log-size),
|
||||
'--pretty=format:%H:%ct %an <%ae>%n%n'.$format_string, @ARGV);
|
||||
open PIPE, '-|', @cmd
|
||||
or die ("$ME: failed to run `". quoted_cmd (@cmd) ."': $!\n"
|
||||
or die ("$ME: failed to run '". quoted_cmd (@cmd) ."': $!\n"
|
||||
. "(Is your Git too old? Version 1.5.1 or later is required.)\n");
|
||||
|
||||
my $prev_multi_paragraph;
|
||||
my $prev_date_line = '';
|
||||
my @prev_coauthors = ();
|
||||
while (1)
|
||||
|
@ -249,11 +265,33 @@ sub parse_amend_file($)
|
|||
or die "$ME:$.: Invalid line "
|
||||
. "(expected date/author/email):\n$author_line\n";
|
||||
|
||||
my $date_line = sprintf "%s $2\n", strftime ("%F", localtime ($1));
|
||||
# Format 'Copyright-paperwork-exempt: Yes' as a standard ChangeLog
|
||||
# `(tiny change)' annotation.
|
||||
my $tiny = (grep (/^Copyright-paperwork-exempt:\s+[Yy]es$/, @line)
|
||||
? ' (tiny change)' : '');
|
||||
|
||||
my $date_line = sprintf "%s %s$tiny\n",
|
||||
strftime ("%F", localtime ($1)), $2;
|
||||
|
||||
my @coauthors = grep /^Co-authored-by:.*$/, @line;
|
||||
# Omit meta-data lines we've already interpreted.
|
||||
@line = grep !/^(?:Signed-off-by:[ ].*>$
|
||||
|Co-authored-by:[ ]
|
||||
|Copyright-paperwork-exempt:[ ]
|
||||
)/x, @line;
|
||||
|
||||
# Remove leading and trailing blank lines.
|
||||
if (@line)
|
||||
{
|
||||
while ($line[0] =~ /^\s*$/) { shift @line; }
|
||||
while ($line[$#line] =~ /^\s*$/) { pop @line; }
|
||||
}
|
||||
|
||||
# Record whether there are two or more paragraphs.
|
||||
my $multi_paragraph = grep /^\s*$/, @line;
|
||||
|
||||
# Format 'Co-authored-by: A U Thor <email@example.com>' lines in
|
||||
# standard multi-author ChangeLog format.
|
||||
my @coauthors = grep /^Co-authored-by:.*$/, @line;
|
||||
for (@coauthors)
|
||||
{
|
||||
s/^Co-authored-by:\s*/\t /;
|
||||
|
@ -264,9 +302,13 @@ sub parse_amend_file($)
|
|||
. substr ($_, 5) . "\n";
|
||||
}
|
||||
|
||||
# If this header would be the same as the previous date/name/email/
|
||||
# coauthors header, then arrange not to print it.
|
||||
if ($date_line ne $prev_date_line or "@coauthors" ne "@prev_coauthors")
|
||||
# If this header would be different from the previous date/name/email/
|
||||
# coauthors header, or if this or the previous entry consists of two
|
||||
# or more paragraphs, then print the header.
|
||||
if ($date_line ne $prev_date_line
|
||||
or "@coauthors" ne "@prev_coauthors"
|
||||
or $multi_paragraph
|
||||
or $prev_multi_paragraph)
|
||||
{
|
||||
$prev_date_line eq ''
|
||||
or print "\n";
|
||||
|
@ -276,17 +318,7 @@ sub parse_amend_file($)
|
|||
}
|
||||
$prev_date_line = $date_line;
|
||||
@prev_coauthors = @coauthors;
|
||||
|
||||
# Omit "Co-authored-by..." and "Signed-off-by..." lines.
|
||||
@line = grep !/^Signed-off-by: .*>$/, @line;
|
||||
@line = grep !/^Co-authored-by: /, @line;
|
||||
|
||||
# Remove leading and trailing blank lines.
|
||||
if (@line)
|
||||
{
|
||||
while ($line[0] =~ /^\s*$/) { shift @line; }
|
||||
while ($line[$#line] =~ /^\s*$/) { pop @line; }
|
||||
}
|
||||
$prev_multi_paragraph = $multi_paragraph;
|
||||
|
||||
# If there were any lines
|
||||
if (@line == 0)
|
||||
|
|
|
@ -9,7 +9,7 @@
|
|||
|
||||
VERSION=2009-07-21.16; # UTC
|
||||
|
||||
# Copyright (C) 2009-2011 Free Software Foundation, Inc.
|
||||
# Copyright (C) 2009-2012 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
|
||||
|
|
|
@ -1,10 +1,9 @@
|
|||
#!/bin/sh
|
||||
# Sign files and upload them.
|
||||
|
||||
scriptversion=2010-05-23.15; # UTC
|
||||
scriptversion=2012-01-15.15; # UTC
|
||||
|
||||
# Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software
|
||||
# Foundation, Inc.
|
||||
# Copyright (C) 2004-2010, 2012 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
|
||||
|
@ -20,6 +19,8 @@ scriptversion=2010-05-23.15; # UTC
|
|||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
# Originally written by Alexandre Duret-Lutz <adl@gnu.org>.
|
||||
# The master copy of this file is maintained in the gnulib Git repository.
|
||||
# Please send bug reports and feature requests to bug-gnulib@gnu.org.
|
||||
|
||||
set -e
|
||||
|
||||
|
@ -57,7 +58,7 @@ Options:
|
|||
--version output version information and exit
|
||||
|
||||
If --symlink-regex is given without EXPR, then the link target name
|
||||
is created by replacing the version information with \`-latest', e.g.:
|
||||
is created by replacing the version information with '-latest', e.g.:
|
||||
|
||||
foo-1.3.4.tar.gz -> foo-latest.tar.gz
|
||||
|
||||
|
@ -105,8 +106,7 @@ happen to have an ncftp package installed, the ncftpput-ftp script in
|
|||
the build-aux/ directory of the gnulib package
|
||||
(http://savannah.gnu.org/projects/gnulib) may serve as a replacement.
|
||||
|
||||
Report bugs to <bug-automake@gnu.org>.
|
||||
Send patches to <automake-patches@gnu.org>."
|
||||
Send patches and bug reports to <bug-gnulib@gnu.org>."
|
||||
|
||||
# Read local configuration file
|
||||
if test -r "$conffile"; then
|
||||
|
@ -170,7 +170,7 @@ while test -n "$1"; do
|
|||
break
|
||||
;;
|
||||
-*)
|
||||
echo "$0: Unknown option \`$1', try \`$0 --help'" 1>&2
|
||||
echo "$0: Unknown option '$1', try '$0 --help'" 1>&2
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
|
@ -219,7 +219,7 @@ else
|
|||
for file
|
||||
do
|
||||
if test ! -f $file; then
|
||||
echo "$0: Cannot find \`$file'" 1>&2
|
||||
echo "$0: Cannot find '$file'" 1>&2
|
||||
exit 1
|
||||
elif test -n "$symlink_expr"; then
|
||||
linkname=`echo $file | sed "$symlink_expr"`
|
||||
|
@ -238,10 +238,10 @@ fi
|
|||
unset passphrase
|
||||
|
||||
# Reset PATH to be sure that echo is a built-in. We will later use
|
||||
# `echo $passphrase' to output the passphrase, so it is important that
|
||||
# it is a built-in (third-party programs tend to appear in `ps'
|
||||
# 'echo $passphrase' to output the passphrase, so it is important that
|
||||
# it is a built-in (third-party programs tend to appear in 'ps'
|
||||
# listings with their arguments...).
|
||||
# Remember this script runs with `set -e', so if echo is not built-in
|
||||
# Remember this script runs with 'set -e', so if echo is not built-in
|
||||
# it will exit now.
|
||||
PATH=/empty echo -n "Enter GPG passphrase: "
|
||||
stty -echo
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/* A C macro for declaring that specific arguments must not be NULL.
|
||||
Copyright (C) 2009-2011 Free Software Foundation, Inc.
|
||||
Copyright (C) 2009-2012 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
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/* C++ compatible function declaration macros.
|
||||
Copyright (C) 2010-2011 Free Software Foundation, Inc.
|
||||
Copyright (C) 2010-2012 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
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/* A C macro for declaring that specific function parameters are not used.
|
||||
Copyright (C) 2008-2011 Free Software Foundation, Inc.
|
||||
Copyright (C) 2008-2012 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
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/* A C macro for emitting warnings if a function is used.
|
||||
Copyright (C) 2010-2011 Free Software Foundation, Inc.
|
||||
Copyright (C) 2010-2012 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
|
||||
|
|
|
@ -4,13 +4,13 @@ eval '(exit $?0)' && eval 'exec perl -wST "$0" ${1+"$@"}'
|
|||
# Detect instances of "if (p) free (p);".
|
||||
# Likewise "if (p != 0)", "if (0 != p)", or with NULL; and with braces.
|
||||
|
||||
my $VERSION = '2011-04-20 13:43'; # UTC
|
||||
my $VERSION = '2012-01-06 07:23'; # UTC
|
||||
# The definition above must lie within the first 8 lines in order
|
||||
# for the Emacs time-stamp write hook (at end) to update it.
|
||||
# If you change this file with Emacs, please let the write hook
|
||||
# do its job. Otherwise, update this string manually.
|
||||
|
||||
# Copyright (C) 2008-2011 Free Software Foundation, Inc.
|
||||
# Copyright (C) 2008-2012 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
|
||||
|
@ -47,7 +47,7 @@ sub usage ($)
|
|||
my $STREAM = ($exit_code == 0 ? *STDOUT : *STDERR);
|
||||
if ($exit_code != 0)
|
||||
{
|
||||
print $STREAM "Try `$ME --help' for more information.\n";
|
||||
print $STREAM "Try '$ME --help' for more information.\n";
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -62,7 +62,7 @@ detect free-like functions named FOO and BAR.
|
|||
OPTIONS:
|
||||
|
||||
--list print only the name of each matching FILE (\\0-terminated)
|
||||
--name=N add name N to the list of \`free\'-like functions to detect;
|
||||
--name=N add name N to the list of \'free\'-like functions to detect;
|
||||
may be repeated
|
||||
|
||||
--help display this help and exit
|
||||
|
@ -125,7 +125,7 @@ sub is_NULL ($)
|
|||
foreach my $file (@ARGV)
|
||||
{
|
||||
open FH, '<', $file
|
||||
or (warn "$ME: can't open `$file' for reading: $!\n"),
|
||||
or (warn "$ME: can't open '$file' for reading: $!\n"),
|
||||
$err = EXIT_ERROR, next;
|
||||
while (defined (my $line = <FH>))
|
||||
{
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
# Print a version string.
|
||||
scriptversion=2011-05-16.22; # UTC
|
||||
|
||||
# Copyright (C) 2006-2011 Free Software Foundation, Inc.
|
||||
# Copyright (C) 2006-2012 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
|
||||
|
|
|
@ -77,7 +77,7 @@ the FSF.<br />
|
|||
Please send broken links and other corrections or suggestions to
|
||||
<a href="mailto:%%EMAIL%%"><%%EMAIL%%></a>.</p>
|
||||
|
||||
<p>Copyright © 2011 Free Software Foundation, Inc.</p>
|
||||
<p>Copyright © 2012 Free Software Foundation, Inc.</p>
|
||||
|
||||
<p>Verbatim copying and distribution of this entire article are
|
||||
permitted worldwide, without royalty, in any medium, provided this
|
||||
|
|
|
@ -785,6 +785,13 @@ the current implementation that object shares structure with
|
|||
@var{args}, so @var{args} should not be modified subsequently.
|
||||
@end deffn
|
||||
|
||||
@deffn {C Function} scm_c_value_ref (values, idx)
|
||||
Returns the value at the position specified by @var{idx} in
|
||||
@var{values}. Note that @var{values} will ordinarily be a
|
||||
multiple-values object, but it need not be. Any other object
|
||||
represents a single value (itself), and is handled appropriately.
|
||||
@end deffn
|
||||
|
||||
@rnindex call-with-values
|
||||
@deffn {Scheme Procedure} call-with-values producer consumer
|
||||
Calls its @var{producer} argument with no values and a
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
@c -*-texinfo-*-
|
||||
@c This is part of the GNU Guile Reference Manual.
|
||||
@c Copyright (C) 1996, 1997, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2009, 2010, 2011
|
||||
@c Copyright (C) 1996, 1997, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2009, 2010, 2011, 2012
|
||||
@c Free Software Foundation, Inc.
|
||||
@c See the file guile.texi for copying conditions.
|
||||
|
||||
|
@ -417,6 +417,8 @@ quote-keywordish-symbols reader How to print symbols that have a colon
|
|||
'#t' quotes them; 'reader' quotes them
|
||||
when the reader option 'keywords' is
|
||||
not '#f'.
|
||||
escape-newlines yes Render newlines as \n when printing
|
||||
using `write'.
|
||||
@end smalllisp
|
||||
|
||||
These options may be modified with the print-set! syntax.
|
||||
|
|
|
@ -38,9 +38,10 @@ languages}, or EDSLs.}.
|
|||
* Defining Macros:: Binding macros, globally and locally.
|
||||
* Syntax Rules:: Pattern-driven macros.
|
||||
* Syntax Case:: Procedural, hygienic macros.
|
||||
* Syntax Transformer Helpers:: Helpers for use in procedural macros.
|
||||
* Defmacros:: Lisp-style macros.
|
||||
* Identifier Macros:: Identifier macros.
|
||||
* Syntax Parameters:: Syntax Parameters
|
||||
* Syntax Parameters:: Syntax Parameters.
|
||||
* Eval When:: Affecting the expand-time environment.
|
||||
* Internal Macros:: Macros as first-class values.
|
||||
@end menu
|
||||
|
@ -671,28 +672,101 @@ source file, one may write:
|
|||
(newline))))))
|
||||
@end example
|
||||
|
||||
Finally, we should mention the following helper procedures defined by the core
|
||||
of @code{syntax-case}:
|
||||
Readers interested in further information on @code{syntax-case} macros should
|
||||
see R. Kent Dybvig's excellent @cite{The Scheme Programming Language}, either
|
||||
edition 3 or 4, in the chapter on syntax. Dybvig was the primary author of the
|
||||
@code{syntax-case} system. The book itself is available online at
|
||||
@uref{http://scheme.com/tspl4/}.
|
||||
|
||||
@node Syntax Transformer Helpers
|
||||
@subsection Syntax Transformer Helpers
|
||||
|
||||
As noted in the previous section, Guile's syntax expander operates on
|
||||
syntax objects. Procedural macros consume and produce syntax objects.
|
||||
This section describes some of the auxiliary helpers that procedural
|
||||
macros can use to compare, generate, and query objects of this data
|
||||
type.
|
||||
|
||||
@deffn {Scheme Procedure} bound-identifier=? a b
|
||||
Returns @code{#t} iff the syntax objects @var{a} and @var{b} refer to the same
|
||||
lexically-bound identifier.
|
||||
Return @code{#t} iff the syntax objects @var{a} and @var{b} refer to the
|
||||
same lexically-bound identifier.
|
||||
@end deffn
|
||||
|
||||
@deffn {Scheme Procedure} free-identifier=? a b
|
||||
Returns @code{#t} iff the syntax objects @var{a} and @var{b} refer to the same
|
||||
free identifier.
|
||||
Return @code{#t} iff the syntax objects @var{a} and @var{b} refer to the
|
||||
same free identifier.
|
||||
@end deffn
|
||||
|
||||
@deffn {Scheme Procedure} generate-temporaries ls
|
||||
Return a list of temporary identifiers as long as @var{ls} is long.
|
||||
@end deffn
|
||||
|
||||
Readers interested in further information on @code{syntax-case} macros should
|
||||
see R. Kent Dybvig's excellent @cite{The Scheme Programming Language}, either
|
||||
edition 3 or 4, in the chapter on syntax. Dybvig was the primary author of the
|
||||
@code{syntax-case} system. The book itself is available online at
|
||||
@uref{http://scheme.com/tspl4/}.
|
||||
@deffn {Scheme Procedure} syntax-source x
|
||||
Return the source properties that correspond to the syntax object
|
||||
@var{x}. @xref{Source Properties}, for more information.
|
||||
@end deffn
|
||||
|
||||
@deffn {Scheme Procedure} syntax-local-binding id
|
||||
Resolve the identifer @var{id}, a syntax object, within the current
|
||||
lexical environment, and return two values, the binding type and a
|
||||
binding value. The binding type is a symbol, which may be one of the
|
||||
following:
|
||||
|
||||
@table @code
|
||||
@item lexical
|
||||
A lexically-bound variable. The value is a unique token (in the sense
|
||||
of @code{eq?}) identifying this binding.
|
||||
@item macro
|
||||
A syntax transformer, either local or global. The value is the
|
||||
transformer procedure.
|
||||
@item pattern-variable
|
||||
A pattern variable, bound via syntax-case. The value is an opaque
|
||||
object, internal to the expander.
|
||||
@item displaced-lexical
|
||||
A lexical variable that has gone out of scope. This can happen if a
|
||||
badly-written procedural macro saves a syntax object, then attempts to
|
||||
introduce it in a context in which it is unbound. The value is
|
||||
@code{#f}.
|
||||
@item global
|
||||
A global binding. The value is a pair, whose head is the symbol, and
|
||||
whose tail is the name of the module in which to resolve the symbol.
|
||||
@item other
|
||||
Some other binding, like @code{lambda} or other core bindings. The
|
||||
value is @code{#f}.
|
||||
@end table
|
||||
|
||||
This is a very low-level procedure, with limited uses. One case in
|
||||
which it is useful is to build abstractions that associate auxiliary
|
||||
information with macros:
|
||||
|
||||
@example
|
||||
(define aux-property (make-object-property))
|
||||
(define-syntax-rule (with-aux aux value)
|
||||
(let ((trans value))
|
||||
(set! (aux-property trans) aux)
|
||||
trans)))
|
||||
(define-syntax retrieve-aux
|
||||
(lambda (x)
|
||||
(syntax-case x ()
|
||||
((x id)
|
||||
(call-with-values (lambda () (syntax-local-binding #'id))
|
||||
(lambda (type val)
|
||||
(with-syntax ((aux (datum->syntax #'here
|
||||
(and (eq? type 'macro)
|
||||
(aux-property val)))))
|
||||
#''aux)))))))
|
||||
(define-syntax foo
|
||||
(with-aux 'bar
|
||||
(syntax-rules () ((_) 'foo))))
|
||||
(foo)
|
||||
@result{} foo
|
||||
(retrieve-aux foo)
|
||||
@result{} bar
|
||||
@end example
|
||||
|
||||
@code{syntax-local-binding} must be called within the dynamic extent of
|
||||
a syntax transformer; to call it otherwise will signal an error.
|
||||
@end deffn
|
||||
|
||||
@node Defmacros
|
||||
@subsection Lisp-style Macro Definitions
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
@c -*-texinfo-*-
|
||||
@c This is part of the GNU Guile Reference Manual.
|
||||
@c Copyright (C) 1996, 1997, 2000, 2001, 2002, 2003, 2004, 2009, 2010
|
||||
@c Copyright (C) 1996, 1997, 2000, 2001, 2002, 2003, 2004, 2009, 2010, 2012
|
||||
@c Free Software Foundation, Inc.
|
||||
@c See the file guile.texi for copying conditions.
|
||||
|
||||
|
@ -163,6 +163,9 @@ between different modules.
|
|||
|
||||
The function @code{scm_calloc} is similar to @code{scm_malloc}, but
|
||||
initializes the block of memory to zero as well.
|
||||
|
||||
These functions will (indirectly) call
|
||||
@code{scm_gc_register_allocation}.
|
||||
@end deftypefn
|
||||
|
||||
@deftypefn {C Function} {void *} scm_realloc (void *@var{mem}, size_t @var{new_size})
|
||||
|
@ -174,6 +177,8 @@ and allocates a new block of size @var{new_size}.
|
|||
|
||||
When not enough memory is available, signal an error. This function
|
||||
runs the GC to free up some memory when it deems it appropriate.
|
||||
|
||||
This function will call @code{scm_gc_register_allocation}.
|
||||
@end deftypefn
|
||||
|
||||
|
||||
|
@ -209,39 +214,26 @@ the memory management overhead very low. However, in Guile 2.x,
|
|||
@end deftypefn
|
||||
|
||||
|
||||
@deftypefn {C Function} void scm_gc_register_collectable_memory (void *@var{mem}, size_t @var{size}, const char *@var{what})
|
||||
Informs the GC that the memory at @var{mem} of size @var{size} can
|
||||
potentially be freed during a GC. That is, announce that @var{mem} is
|
||||
part of a GC controlled object and when the GC happens to free that
|
||||
object, @var{size} bytes will be freed along with it. The GC will
|
||||
@strong{not} free the memory itself, it will just know that so-and-so
|
||||
much bytes of memory are associated with GC controlled objects and the
|
||||
memory system figures this into its decisions when to run a GC.
|
||||
@deftypefn {C Function} void scm_gc_register_allocation (size_t @var{size})
|
||||
Informs the garbage collector that @var{size} bytes have been allocated,
|
||||
which the collector would otherwise not have known about.
|
||||
|
||||
The @var{what} argument is used for statistical purposes. It should
|
||||
describe the type of object that the memory will be used for so that
|
||||
users can identify just what strange objects are eating up their
|
||||
memory.
|
||||
In general, Scheme will decide to collect garbage only after some amount
|
||||
of memory has been allocated. Calling this function will make the
|
||||
Scheme garbage collector know about more allocation, and thus run more
|
||||
often (as appropriate).
|
||||
|
||||
In Guile 2.x, this function has no effect.
|
||||
@end deftypefn
|
||||
|
||||
@deftypefn {C Function} void scm_gc_unregister_collectable_memory (void *@var{mem}, size_t @var{size})
|
||||
Informs the GC that the memory at @var{mem} of size @var{size} is no
|
||||
longer associated with a GC controlled object. You must take care to
|
||||
match up every call to @code{scm_gc_register_collectable_memory} with
|
||||
a call to @code{scm_gc_unregister_collectable_memory}. If you don't do
|
||||
this, the GC might have a wrong impression of what is going on and run
|
||||
much less efficiently than it could.
|
||||
|
||||
In Guile 2.x, this function has no effect.
|
||||
It is especially important to call this function when large unmanaged
|
||||
allocations, like images, may be freed by small Scheme allocations, like
|
||||
SMOBs.
|
||||
@end deftypefn
|
||||
|
||||
|
||||
@deftypefn {C Function} void scm_frame_free (void *mem)
|
||||
Equivalent to @code{scm_frame_unwind_handler (free, @var{mem},
|
||||
SCM_F_WIND_EXPLICITLY)}. That is, the memory block at @var{mem} will
|
||||
be freed when the current frame is left.
|
||||
@deftypefn {C Function} void scm_dynwind_free (void *mem)
|
||||
Equivalent to @code{scm_dynwind_unwind_handler (free, @var{mem},
|
||||
SCM_F_WIND_EXPLICITLY)}. That is, the memory block at @var{mem} will be
|
||||
freed (using @code{free} from the C library) when the current dynwind is
|
||||
left.
|
||||
@end deftypefn
|
||||
|
||||
@deffn {Scheme Procedure} malloc-stats
|
||||
|
@ -272,7 +264,7 @@ The functions @code{scm_must_malloc} and @code{scm_must_realloc}
|
|||
behaved like @code{scm_gc_malloc} and @code{scm_gc_realloc} do now,
|
||||
respectively. They would inform the GC about the newly allocated
|
||||
memory via the internal equivalent of
|
||||
@code{scm_gc_register_collectable_memory}. However,
|
||||
@code{scm_gc_register_allocation}. However,
|
||||
@code{scm_must_free} did not unregister the memory it was about to
|
||||
free. The usual way to unregister memory was to return its size from
|
||||
a smob free function.
|
||||
|
|
|
@ -674,11 +674,6 @@ Return the source of the procedure @var{proc}. Returns @code{#f} if
|
|||
the source code is not available.
|
||||
@end deffn
|
||||
|
||||
@deffn {Scheme Procedure} procedure-environment proc
|
||||
@deffnx {C Function} scm_procedure_environment (proc)
|
||||
Return the environment of the procedure @var{proc}. Very deprecated.
|
||||
@end deffn
|
||||
|
||||
@deffn {Scheme Procedure} procedure-properties proc
|
||||
@deffnx {C Function} scm_procedure_properties (proc)
|
||||
Return the properties associated with @var{proc}, as an association
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
@c -*-texinfo-*-
|
||||
@c This is part of the GNU Guile Reference Manual.
|
||||
@c Copyright (C) 1996, 1997, 2000, 2001, 2002, 2003, 2004, 2007, 2009, 2010
|
||||
@c Copyright (C) 1996, 1997, 2000, 2001, 2002, 2003, 2004, 2007, 2009, 2010, 2012
|
||||
@c Free Software Foundation, Inc.
|
||||
@c See the file guile.texi for copying conditions.
|
||||
|
||||
|
@ -15,6 +15,7 @@
|
|||
* Blocking:: How to block properly in guile mode.
|
||||
* Critical Sections:: Avoiding concurrency and reentries.
|
||||
* Fluids and Dynamic States:: Thread-local variables, etc.
|
||||
* Parameters:: Dynamic scoping in Scheme.
|
||||
* Futures:: Fine-grain parallelism.
|
||||
* Parallel Forms:: Parallel execution of forms.
|
||||
@end menu
|
||||
|
@ -680,9 +681,11 @@ used for testing whether an object is actually a fluid. The values
|
|||
stored in a fluid can be accessed with @code{fluid-ref} and
|
||||
@code{fluid-set!}.
|
||||
|
||||
@deffn {Scheme Procedure} make-fluid
|
||||
@deffn {Scheme Procedure} make-fluid [dflt]
|
||||
@deffnx {C Function} scm_make_fluid ()
|
||||
Return a newly created fluid.
|
||||
@deffnx {C Function} scm_make_fluid_with_default (dflt)
|
||||
Return a newly created fluid, whose initial value is @var{dflt}, or
|
||||
@code{#f} if @var{dflt} is not given.
|
||||
Fluids are objects that can hold one
|
||||
value per dynamic state. That is, modifications to this value are
|
||||
only visible to code that executes with the same dynamic state as
|
||||
|
@ -694,7 +697,7 @@ with its own dynamic state, you can use fluids for thread local storage.
|
|||
@deffn {Scheme Procedure} make-unbound-fluid
|
||||
@deffnx {C Function} scm_make_unbound_fluid ()
|
||||
Return a new fluid that is initially unbound (instead of being
|
||||
implicitly bound to @code{#f}.
|
||||
implicitly bound to some definite value).
|
||||
@end deffn
|
||||
|
||||
@deffn {Scheme Procedure} fluid? obj
|
||||
|
@ -707,8 +710,8 @@ Return @code{#t} iff @var{obj} is a fluid; otherwise, return
|
|||
@deffnx {C Function} scm_fluid_ref (fluid)
|
||||
Return the value associated with @var{fluid} in the current
|
||||
dynamic root. If @var{fluid} has not been set, then return
|
||||
@code{#f}. Calling @code{fluid-ref} on an unbound fluid produces a
|
||||
runtime error.
|
||||
its default value. Calling @code{fluid-ref} on an unbound fluid produces
|
||||
a runtime error.
|
||||
@end deffn
|
||||
|
||||
@deffn {Scheme Procedure} fluid-set! fluid value
|
||||
|
@ -820,6 +823,119 @@ Like @code{scm_with_dynamic_state}, but call @var{func} with
|
|||
@var{data}.
|
||||
@end deftypefn
|
||||
|
||||
@node Parameters
|
||||
@subsection Parameters
|
||||
|
||||
@cindex SRFI-39
|
||||
@cindex parameter object
|
||||
@tindex Parameter
|
||||
|
||||
A parameter object is a procedure. Calling it with no arguments returns
|
||||
its value. Calling it with one argument sets the value.
|
||||
|
||||
@example
|
||||
(define my-param (make-parameter 123))
|
||||
(my-param) @result{} 123
|
||||
(my-param 456)
|
||||
(my-param) @result{} 456
|
||||
@end example
|
||||
|
||||
The @code{parameterize} special form establishes new locations for
|
||||
parameters, those new locations having effect within the dynamic scope
|
||||
of the @code{parameterize} body. Leaving restores the previous
|
||||
locations. Re-entering (through a saved continuation) will again use
|
||||
the new locations.
|
||||
|
||||
@example
|
||||
(parameterize ((my-param 789))
|
||||
(my-param)) @result{} 789
|
||||
(my-param) @result{} 456
|
||||
@end example
|
||||
|
||||
Parameters are like dynamically bound variables in other Lisp dialects.
|
||||
They allow an application to establish parameter settings (as the name
|
||||
suggests) just for the execution of a particular bit of code, restoring
|
||||
when done. Examples of such parameters might be case-sensitivity for a
|
||||
search, or a prompt for user input.
|
||||
|
||||
Global variables are not as good as parameter objects for this sort of
|
||||
thing. Changes to them are visible to all threads, but in Guile
|
||||
parameter object locations are per-thread, thereby truly limiting the
|
||||
effect of @code{parameterize} to just its dynamic execution.
|
||||
|
||||
Passing arguments to functions is thread-safe, but that soon becomes
|
||||
tedious when there's more than a few or when they need to pass down
|
||||
through several layers of calls before reaching the point they should
|
||||
affect. And introducing a new setting to existing code is often easier
|
||||
with a parameter object than adding arguments.
|
||||
|
||||
@defun make-parameter init [converter]
|
||||
Return a new parameter object, with initial value @var{init}.
|
||||
|
||||
If a @var{converter} is given, then a call @code{(@var{converter}
|
||||
val)} is made for each value set, its return is the value stored.
|
||||
Such a call is made for the @var{init} initial value too.
|
||||
|
||||
A @var{converter} allows values to be validated, or put into a
|
||||
canonical form. For example,
|
||||
|
||||
@example
|
||||
(define my-param (make-parameter 123
|
||||
(lambda (val)
|
||||
(if (not (number? val))
|
||||
(error "must be a number"))
|
||||
(inexact->exact val))))
|
||||
(my-param 0.75)
|
||||
(my-param) @result{} 3/4
|
||||
@end example
|
||||
@end defun
|
||||
|
||||
@deffn {Scheme Syntax} parameterize ((param value) @dots{}) body @dots{}
|
||||
Establish a new dynamic scope with the given @var{param}s bound to new
|
||||
locations and set to the given @var{value}s. @var{body} is evaluated
|
||||
in that environment, the result is the return from the last form in
|
||||
@var{body}.
|
||||
|
||||
Each @var{param} is an expression which is evaluated to get the
|
||||
parameter object. Often this will just be the name of a variable
|
||||
holding the object, but it can be anything that evaluates to a
|
||||
parameter.
|
||||
|
||||
The @var{param} expressions and @var{value} expressions are all
|
||||
evaluated before establishing the new dynamic bindings, and they're
|
||||
evaluated in an unspecified order.
|
||||
|
||||
For example,
|
||||
|
||||
@example
|
||||
(define prompt (make-parameter "Type something: "))
|
||||
(define (get-input)
|
||||
(display (prompt))
|
||||
...)
|
||||
|
||||
(parameterize ((prompt "Type a number: "))
|
||||
(get-input)
|
||||
...)
|
||||
@end example
|
||||
@end deffn
|
||||
|
||||
Parameter objects are implemented using fluids (@pxref{Fluids and
|
||||
Dynamic States}), so each dynamic state has its own parameter
|
||||
locations. That includes the separate locations when outside any
|
||||
@code{parameterize} form. When a parameter is created it gets a
|
||||
separate initial location in each dynamic state, all initialized to the
|
||||
given @var{init} value.
|
||||
|
||||
As alluded to above, because each thread usually has a separate dynamic
|
||||
state, each thread has its own locations behind parameter objects, and
|
||||
changes in one thread are not visible to any other. When a new dynamic
|
||||
state or thread is created, the values of parameters in the originating
|
||||
context are copied, into new locations.
|
||||
|
||||
@cindex SRFI-39
|
||||
Guile's parameters conform to SRFI-39 (@pxref{SRFI-39}).
|
||||
|
||||
|
||||
@node Futures
|
||||
@subsection Futures
|
||||
@cindex futures
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
@c -*-texinfo-*-
|
||||
@c This is part of the GNU Guile Reference Manual.
|
||||
@c Copyright (C) 1996, 1997, 2000, 2001, 2002, 2003, 2004, 2006, 2007, 2008, 2009, 2010, 2011
|
||||
@c Copyright (C) 1996, 1997, 2000, 2001, 2002, 2003, 2004, 2006, 2007, 2008, 2009, 2010, 2011, 2012
|
||||
@c Free Software Foundation, Inc.
|
||||
@c See the file guile.texi for copying conditions.
|
||||
|
||||
|
@ -3846,134 +3846,14 @@ from a closed port.
|
|||
@node SRFI-39
|
||||
@subsection SRFI-39 - Parameters
|
||||
@cindex SRFI-39
|
||||
@cindex parameter object
|
||||
@tindex Parameter
|
||||
|
||||
This SRFI provides parameter objects, which implement dynamically
|
||||
bound locations for values. The functions below are available from
|
||||
This SRFI adds support for dynamically-scoped parameters. SRFI 39 is
|
||||
implemented in the Guile core; there's no module needed to get SRFI-39
|
||||
itself. Parameters are documented in @ref{Parameters}.
|
||||
|
||||
@example
|
||||
(use-modules (srfi srfi-39))
|
||||
@end example
|
||||
|
||||
A parameter object is a procedure. Called with no arguments it
|
||||
returns its value, called with one argument it sets the value.
|
||||
|
||||
@example
|
||||
(define my-param (make-parameter 123))
|
||||
(my-param) @result{} 123
|
||||
(my-param 456)
|
||||
(my-param) @result{} 456
|
||||
@end example
|
||||
|
||||
The @code{parameterize} special form establishes new locations for
|
||||
parameters, those new locations having effect within the dynamic scope
|
||||
of the @code{parameterize} body. Leaving restores the previous
|
||||
locations, or re-entering through a saved continuation will again use
|
||||
the new locations.
|
||||
|
||||
@example
|
||||
(parameterize ((my-param 789))
|
||||
(my-param) @result{} 789
|
||||
)
|
||||
(my-param) @result{} 456
|
||||
@end example
|
||||
|
||||
Parameters are like dynamically bound variables in other Lisp dialects.
|
||||
They allow an application to establish parameter settings (as the name
|
||||
suggests) just for the execution of a particular bit of code,
|
||||
restoring when done. Examples of such parameters might be
|
||||
case-sensitivity for a search, or a prompt for user input.
|
||||
|
||||
Global variables are not as good as parameter objects for this sort of
|
||||
thing. Changes to them are visible to all threads, but in Guile
|
||||
parameter object locations are per-thread, thereby truly limiting the
|
||||
effect of @code{parameterize} to just its dynamic execution.
|
||||
|
||||
Passing arguments to functions is thread-safe, but that soon becomes
|
||||
tedious when there's more than a few or when they need to pass down
|
||||
through several layers of calls before reaching the point they should
|
||||
affect. And introducing a new setting to existing code is often
|
||||
easier with a parameter object than adding arguments.
|
||||
|
||||
|
||||
@sp 1
|
||||
@defun make-parameter init [converter]
|
||||
Return a new parameter object, with initial value @var{init}.
|
||||
|
||||
A parameter object is a procedure. When called @code{(param)} it
|
||||
returns its value, or a call @code{(param val)} sets its value. For
|
||||
example,
|
||||
|
||||
@example
|
||||
(define my-param (make-parameter 123))
|
||||
(my-param) @result{} 123
|
||||
|
||||
(my-param 456)
|
||||
(my-param) @result{} 456
|
||||
@end example
|
||||
|
||||
If a @var{converter} is given, then a call @code{(@var{converter}
|
||||
val)} is made for each value set, its return is the value stored.
|
||||
Such a call is made for the @var{init} initial value too.
|
||||
|
||||
A @var{converter} allows values to be validated, or put into a
|
||||
canonical form. For example,
|
||||
|
||||
@example
|
||||
(define my-param (make-parameter 123
|
||||
(lambda (val)
|
||||
(if (not (number? val))
|
||||
(error "must be a number"))
|
||||
(inexact->exact val))))
|
||||
(my-param 0.75)
|
||||
(my-param) @result{} 3/4
|
||||
@end example
|
||||
@end defun
|
||||
|
||||
@deffn {library syntax} parameterize ((param value) @dots{}) body @dots{}
|
||||
Establish a new dynamic scope with the given @var{param}s bound to new
|
||||
locations and set to the given @var{value}s. @var{body} is evaluated
|
||||
in that environment, the result is the return from the last form in
|
||||
@var{body}.
|
||||
|
||||
Each @var{param} is an expression which is evaluated to get the
|
||||
parameter object. Often this will just be the name of a variable
|
||||
holding the object, but it can be anything that evaluates to a
|
||||
parameter.
|
||||
|
||||
The @var{param} expressions and @var{value} expressions are all
|
||||
evaluated before establishing the new dynamic bindings, and they're
|
||||
evaluated in an unspecified order.
|
||||
|
||||
For example,
|
||||
|
||||
@example
|
||||
(define prompt (make-parameter "Type something: "))
|
||||
(define (get-input)
|
||||
(display (prompt))
|
||||
...)
|
||||
|
||||
(parameterize ((prompt "Type a number: "))
|
||||
(get-input)
|
||||
...)
|
||||
@end example
|
||||
@end deffn
|
||||
|
||||
@deffn {Parameter object} current-input-port [new-port]
|
||||
@deffnx {Parameter object} current-output-port [new-port]
|
||||
@deffnx {Parameter object} current-error-port [new-port]
|
||||
This SRFI extends the core @code{current-input-port} and
|
||||
@code{current-output-port}, making them parameter objects. The
|
||||
Guile-specific @code{current-error-port} is extended too, for
|
||||
consistency. (@pxref{Default Ports}.)
|
||||
|
||||
This is an upwardly compatible extension, a plain call like
|
||||
@code{(current-input-port)} still returns the current input port, and
|
||||
@code{set-current-input-port} can still be used. But the port can now
|
||||
also be set with @code{(current-input-port my-port)} and bound
|
||||
dynamically with @code{parameterize}.
|
||||
@end deffn
|
||||
This module does export one extra function: @code{with-parameters*}.
|
||||
This is a Guile-specific addition to the SRFI, similar to the core
|
||||
@code{with-fluids*} (@pxref{Fluids and Dynamic States}).
|
||||
|
||||
@defun with-parameters* param-list value-list thunk
|
||||
Establish a new dynamic scope, as per @code{parameterize} above,
|
||||
|
@ -3981,30 +3861,8 @@ taking parameters from @var{param-list} and corresponding values from
|
|||
@var{values-list}. A call @code{(@var{thunk})} is made in the new
|
||||
scope and the result from that @var{thunk} is the return from
|
||||
@code{with-parameters*}.
|
||||
|
||||
This function is a Guile-specific addition to the SRFI, it's similar
|
||||
to the core @code{with-fluids*} (@pxref{Fluids and Dynamic States}).
|
||||
@end defun
|
||||
|
||||
|
||||
@sp 1
|
||||
Parameter objects are implemented using fluids (@pxref{Fluids and
|
||||
Dynamic States}), so each dynamic state has it's own parameter
|
||||
locations. That includes the separate locations when outside any
|
||||
@code{parameterize} form. When a parameter is created it gets a
|
||||
separate initial location in each dynamic state, all initialized to
|
||||
the given @var{init} value.
|
||||
|
||||
As alluded to above, because each thread usually has a separate
|
||||
dynamic state, each thread has it's own locations behind parameter
|
||||
objects, and changes in one thread are not visible to any other. When
|
||||
a new dynamic state or thread is created, the values of parameters in
|
||||
the originating context are copied, into new locations.
|
||||
|
||||
SRFI-39 doesn't specify the interaction between parameter objects and
|
||||
threads, so the threading behaviour described here should be regarded
|
||||
as Guile-specific.
|
||||
|
||||
@node SRFI-42
|
||||
@subsection SRFI-42 - Eager Comprehensions
|
||||
@cindex SRFI-42
|
||||
|
|
|
@ -438,7 +438,7 @@ expressions.
|
|||
@end deffn
|
||||
|
||||
@deffn Instruction local-boxed-ref index
|
||||
@deffnx Instruction local-boxed-ref index
|
||||
@deffnx Instruction local-boxed-set index
|
||||
Get or set the value of the variable located at @var{index} within the
|
||||
current stack frame. A shortcut for @code{local-ref} then
|
||||
@code{variable-ref} or @code{variable-set}, respectively.
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
## DO NOT EDIT! GENERATED AUTOMATICALLY!
|
||||
## Process this file with automake to produce Makefile.in.
|
||||
# Copyright (C) 2002-2011 Free Software Foundation, Inc.
|
||||
# Copyright (C) 2002-2012 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
|
||||
|
@ -21,7 +21,7 @@
|
|||
# the same distribution terms as the rest of that program.
|
||||
#
|
||||
# Generated by gnulib-tool.
|
||||
# Reproduce by: gnulib-tool --import --dir=. --local-dir=gnulib-local --lib=libgnu --source-base=lib --m4-base=m4 --doc-base=doc --tests-base=tests --aux-dir=build-aux --lgpl=3 --no-conditional-dependencies --libtool --macro-prefix=gl --no-vc-files accept alignof alloca-opt announce-gen autobuild bind byteswap canonicalize-lgpl ceil close connect duplocale environ extensions flock floor fpieee frexp full-read full-write func gendocs getaddrinfo getpeername getsockname getsockopt git-version-gen gitlog-to-changelog gnu-web-doc-update gnupload havelib iconv_open-utf inet_ntop inet_pton isinf isnan ldexp lib-symbol-versions lib-symbol-visibility libunistring listen localcharset locale log1p maintainer-makefile malloc-gnu malloca nproc open pipe2 putenv recv recvfrom rename send sendto setsockopt shutdown socket stat-time stdlib strftime striconveh string sys_stat trunc verify vsnprintf warnings wchar
|
||||
# Reproduce by: gnulib-tool --import --dir=. --local-dir=gnulib-local --lib=libgnu --source-base=lib --m4-base=m4 --doc-base=doc --tests-base=tests --aux-dir=build-aux --lgpl=3 --no-conditional-dependencies --libtool --macro-prefix=gl --no-vc-files accept alignof alloca-opt announce-gen autobuild bind byteswap canonicalize-lgpl ceil close connect dirfd duplocale environ extensions flock floor fpieee frexp full-read full-write func gendocs getaddrinfo getpeername getsockname getsockopt git-version-gen gitlog-to-changelog gnu-web-doc-update gnupload havelib iconv_open-utf inet_ntop inet_pton isinf isnan ldexp lib-symbol-versions lib-symbol-visibility libunistring listen localcharset locale log1p maintainer-makefile malloc-gnu malloca nproc open pipe2 putenv recv recvfrom rename send sendto setsockopt shutdown socket stat-time stdlib strftime striconveh string sys_stat trunc verify vsnprintf warnings wchar
|
||||
|
||||
AUTOMAKE_OPTIONS = 1.5 gnits subdir-objects
|
||||
|
||||
|
@ -287,6 +287,63 @@ EXTRA_libgnu_la_SOURCES += connect.c
|
|||
|
||||
## end gnulib module connect
|
||||
|
||||
## begin gnulib module dirent
|
||||
|
||||
BUILT_SOURCES += dirent.h
|
||||
|
||||
# We need the following in order to create <dirent.h> when the system
|
||||
# doesn't have one that works with the given compiler.
|
||||
dirent.h: dirent.in.h $(top_builddir)/config.status $(CXXDEFS_H) $(ARG_NONNULL_H) $(WARN_ON_USE_H)
|
||||
$(AM_V_GEN)rm -f $@-t $@ && \
|
||||
{ echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \
|
||||
sed -e 's|@''GUARD_PREFIX''@|GL|g' \
|
||||
-e 's|@''HAVE_DIRENT_H''@|$(HAVE_DIRENT_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_DIRENT_H''@|$(NEXT_DIRENT_H)|g' \
|
||||
-e 's/@''GNULIB_OPENDIR''@/$(GNULIB_OPENDIR)/g' \
|
||||
-e 's/@''GNULIB_READDIR''@/$(GNULIB_READDIR)/g' \
|
||||
-e 's/@''GNULIB_REWINDDIR''@/$(GNULIB_REWINDDIR)/g' \
|
||||
-e 's/@''GNULIB_CLOSEDIR''@/$(GNULIB_CLOSEDIR)/g' \
|
||||
-e 's/@''GNULIB_DIRFD''@/$(GNULIB_DIRFD)/g' \
|
||||
-e 's/@''GNULIB_FDOPENDIR''@/$(GNULIB_FDOPENDIR)/g' \
|
||||
-e 's/@''GNULIB_SCANDIR''@/$(GNULIB_SCANDIR)/g' \
|
||||
-e 's/@''GNULIB_ALPHASORT''@/$(GNULIB_ALPHASORT)/g' \
|
||||
-e 's/@''HAVE_OPENDIR''@/$(HAVE_OPENDIR)/g' \
|
||||
-e 's/@''HAVE_READDIR''@/$(HAVE_READDIR)/g' \
|
||||
-e 's/@''HAVE_REWINDDIR''@/$(HAVE_REWINDDIR)/g' \
|
||||
-e 's/@''HAVE_CLOSEDIR''@/$(HAVE_CLOSEDIR)/g' \
|
||||
-e 's|@''HAVE_DECL_DIRFD''@|$(HAVE_DECL_DIRFD)|g' \
|
||||
-e 's|@''HAVE_DECL_FDOPENDIR''@|$(HAVE_DECL_FDOPENDIR)|g' \
|
||||
-e 's|@''HAVE_FDOPENDIR''@|$(HAVE_FDOPENDIR)|g' \
|
||||
-e 's|@''HAVE_SCANDIR''@|$(HAVE_SCANDIR)|g' \
|
||||
-e 's|@''HAVE_ALPHASORT''@|$(HAVE_ALPHASORT)|g' \
|
||||
-e 's|@''REPLACE_OPENDIR''@|$(REPLACE_OPENDIR)|g' \
|
||||
-e 's|@''REPLACE_CLOSEDIR''@|$(REPLACE_CLOSEDIR)|g' \
|
||||
-e 's|@''REPLACE_DIRFD''@|$(REPLACE_DIRFD)|g' \
|
||||
-e 's|@''REPLACE_FDOPENDIR''@|$(REPLACE_FDOPENDIR)|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)/dirent.in.h; \
|
||||
} > $@-t && \
|
||||
mv $@-t $@
|
||||
MOSTLYCLEANFILES += dirent.h dirent.h-t
|
||||
|
||||
EXTRA_DIST += dirent.in.h
|
||||
|
||||
## end gnulib module dirent
|
||||
|
||||
## begin gnulib module dirfd
|
||||
|
||||
|
||||
EXTRA_DIST += dirfd.c
|
||||
|
||||
EXTRA_libgnu_la_SOURCES += dirfd.c
|
||||
|
||||
## end gnulib module dirfd
|
||||
|
||||
## begin gnulib module dirname-lgpl
|
||||
|
||||
libgnu_la_SOURCES += dirname-lgpl.c basename-lgpl.c stripslash.c
|
||||
|
@ -1788,6 +1845,7 @@ stdlib.h: stdlib.in.h $(top_builddir)/config.status $(CXXDEFS_H) \
|
|||
-e 's/@''GNULIB_PTSNAME''@/$(GNULIB_PTSNAME)/g' \
|
||||
-e 's/@''GNULIB_PTSNAME_R''@/$(GNULIB_PTSNAME_R)/g' \
|
||||
-e 's/@''GNULIB_PUTENV''@/$(GNULIB_PUTENV)/g' \
|
||||
-e 's/@''GNULIB_RANDOM''@/$(GNULIB_RANDOM)/g' \
|
||||
-e 's/@''GNULIB_RANDOM_R''@/$(GNULIB_RANDOM_R)/g' \
|
||||
-e 's/@''GNULIB_REALLOC_POSIX''@/$(GNULIB_REALLOC_POSIX)/g' \
|
||||
-e 's/@''GNULIB_REALPATH''@/$(GNULIB_REALPATH)/g' \
|
||||
|
@ -1815,6 +1873,7 @@ stdlib.h: stdlib.in.h $(top_builddir)/config.status $(CXXDEFS_H) \
|
|||
-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_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_REALPATH''@|$(HAVE_REALPATH)|g' \
|
||||
|
@ -1834,6 +1893,7 @@ stdlib.h: stdlib.in.h $(top_builddir)/config.status $(CXXDEFS_H) \
|
|||
-e 's|@''REPLACE_MKSTEMP''@|$(REPLACE_MKSTEMP)|g' \
|
||||
-e 's|@''REPLACE_PTSNAME_R''@|$(REPLACE_PTSNAME_R)|g' \
|
||||
-e 's|@''REPLACE_PUTENV''@|$(REPLACE_PUTENV)|g' \
|
||||
-e 's|@''REPLACE_RANDOM_R''@|$(REPLACE_RANDOM_R)|g' \
|
||||
-e 's|@''REPLACE_REALLOC''@|$(REPLACE_REALLOC)|g' \
|
||||
-e 's|@''REPLACE_REALPATH''@|$(REPLACE_REALPATH)|g' \
|
||||
-e 's|@''REPLACE_SETENV''@|$(REPLACE_SETENV)|g' \
|
||||
|
@ -2294,6 +2354,7 @@ unistd.h: unistd.in.h $(top_builddir)/config.status $(CXXDEFS_H) $(ARG_NONNULL_H
|
|||
-e 's/@''GNULIB_GETPAGESIZE''@/$(GNULIB_GETPAGESIZE)/g' \
|
||||
-e 's/@''GNULIB_GETUSERSHELL''@/$(GNULIB_GETUSERSHELL)/g' \
|
||||
-e 's/@''GNULIB_GROUP_MEMBER''@/$(GNULIB_GROUP_MEMBER)/g' \
|
||||
-e 's/@''GNULIB_ISATTY''@/$(GNULIB_ISATTY)/g' \
|
||||
-e 's/@''GNULIB_LCHOWN''@/$(GNULIB_LCHOWN)/g' \
|
||||
-e 's/@''GNULIB_LINK''@/$(GNULIB_LINK)/g' \
|
||||
-e 's/@''GNULIB_LINKAT''@/$(GNULIB_LINKAT)/g' \
|
||||
|
@ -2372,6 +2433,7 @@ unistd.h: unistd.in.h $(top_builddir)/config.status $(CXXDEFS_H) $(ARG_NONNULL_H
|
|||
-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_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' \
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
/* accept.c --- wrappers for Windows accept function
|
||||
|
||||
Copyright (C) 2008-2011 Free Software Foundation, Inc.
|
||||
Copyright (C) 2008-2012 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
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/* Determine alignment of types.
|
||||
Copyright (C) 2003-2004, 2006, 2009-2011 Free Software Foundation, Inc.
|
||||
Copyright (C) 2003-2004, 2006, 2009-2012 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
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
/* Memory allocation on the stack.
|
||||
|
||||
Copyright (C) 1995, 1999, 2001-2004, 2006-2011 Free Software Foundation,
|
||||
Copyright (C) 1995, 1999, 2001-2004, 2006-2012 Free Software Foundation,
|
||||
Inc.
|
||||
|
||||
This program is free software; you can redistribute it and/or modify it
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
/* A GNU-like <arpa/inet.h>.
|
||||
|
||||
Copyright (C) 2005-2006, 2008-2011 Free Software Foundation, Inc.
|
||||
Copyright (C) 2005-2006, 2008-2012 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
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/* Formatted output to strings.
|
||||
Copyright (C) 1999, 2002, 2006, 2009-2011 Free Software Foundation, Inc.
|
||||
Copyright (C) 1999, 2002, 2006, 2009-2012 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
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
/* basename.c -- return the last element in a file name
|
||||
|
||||
Copyright (C) 1990, 1998-2001, 2003-2006, 2009-2011 Free Software
|
||||
Copyright (C) 1990, 1998-2001, 2003-2006, 2009-2012 Free Software
|
||||
Foundation, Inc.
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/* Binary mode I/O.
|
||||
Copyright (C) 2001, 2003, 2005, 2008-2011 Free Software Foundation, Inc.
|
||||
Copyright (C) 2001, 2003, 2005, 2008-2012 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
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
/* bind.c --- wrappers for Windows bind function
|
||||
|
||||
Copyright (C) 2008-2011 Free Software Foundation, Inc.
|
||||
Copyright (C) 2008-2012 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
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/* byteswap.h - Byte swapping
|
||||
Copyright (C) 2005, 2007, 2009-2011 Free Software Foundation, Inc.
|
||||
Copyright (C) 2005, 2007, 2009-2012 Free Software Foundation, Inc.
|
||||
Written by Oskar Liljeblad <oskar@osk.mine.nu>, 2005.
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
/* Character handling in C locale.
|
||||
|
||||
Copyright 2000-2003, 2006, 2009-2011 Free Software Foundation, Inc.
|
||||
Copyright 2000-2003, 2006, 2009-2012 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
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
<ctype.h> functions' behaviour depends on the current locale set via
|
||||
setlocale.
|
||||
|
||||
Copyright (C) 2000-2003, 2006, 2008-2011 Free Software Foundation, Inc.
|
||||
Copyright (C) 2000-2003, 2006, 2008-2012 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
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/* Case-insensitive string comparison functions in C locale.
|
||||
Copyright (C) 1995-1996, 2001, 2003, 2005, 2009-2011 Free Software
|
||||
Copyright (C) 1995-1996, 2001, 2003, 2005, 2009-2012 Free Software
|
||||
Foundation, Inc.
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/* c-strcasecmp.c -- case insensitive string comparator in C locale
|
||||
Copyright (C) 1998-1999, 2005-2006, 2009-2011 Free Software Foundation, Inc.
|
||||
Copyright (C) 1998-1999, 2005-2006, 2009-2012 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
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/* Optimized case-insensitive string comparison in C locale.
|
||||
Copyright (C) 2001-2002, 2007, 2009-2011 Free Software Foundation, Inc.
|
||||
Copyright (C) 2001-2002, 2007, 2009-2012 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
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/* c-strncasecmp.c -- case insensitive string comparator in C locale
|
||||
Copyright (C) 1998-1999, 2005-2006, 2009-2011 Free Software Foundation, Inc.
|
||||
Copyright (C) 1998-1999, 2005-2006, 2009-2012 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
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/* Return the canonical absolute name of a given file.
|
||||
Copyright (C) 1996-2011 Free Software Foundation, Inc.
|
||||
Copyright (C) 1996-2012 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
|
@ -84,10 +84,10 @@
|
|||
|
||||
#if !FUNC_REALPATH_WORKS || defined _LIBC
|
||||
/* Return the canonical absolute name of file NAME. A canonical name
|
||||
does not contain any `.', `..' components nor any repeated path
|
||||
does not contain any ".", ".." components nor any repeated path
|
||||
separators ('/') or symlinks. All path 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'
|
||||
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 path of the first component
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/* Round towards positive infinity.
|
||||
Copyright (C) 2007, 2010-2011 Free Software Foundation, Inc.
|
||||
Copyright (C) 2007, 2010-2012 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
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/* close replacement.
|
||||
Copyright (C) 2008-2011 Free Software Foundation, Inc.
|
||||
Copyright (C) 2008-2012 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
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
#! /bin/sh
|
||||
# Output a system dependent table of character encoding aliases.
|
||||
#
|
||||
# Copyright (C) 2000-2004, 2006-2011 Free Software Foundation, Inc.
|
||||
# Copyright (C) 2000-2004, 2006-2012 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
|
||||
|
@ -30,6 +30,8 @@
|
|||
# The current list of GNU canonical charset names is as follows.
|
||||
#
|
||||
# name MIME? used by which systems
|
||||
# (darwin = MacOS X, woe32 = native Windows)
|
||||
#
|
||||
# ASCII, ANSI_X3.4-1968 glibc solaris freebsd netbsd darwin cygwin
|
||||
# ISO-8859-1 Y glibc aix hpux irix osf solaris freebsd netbsd openbsd darwin cygwin
|
||||
# ISO-8859-2 Y glibc aix hpux irix osf solaris freebsd netbsd openbsd darwin cygwin
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
/* connect.c --- wrappers for Windows connect function
|
||||
|
||||
Copyright (C) 2008-2011 Free Software Foundation, Inc.
|
||||
Copyright (C) 2008-2012 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
|
||||
|
|
249
lib/dirent.in.h
Normal file
249
lib/dirent.in.h
Normal file
|
@ -0,0 +1,249 @@
|
|||
/* A GNU-like <dirent.h>.
|
||||
Copyright (C) 2006-2012 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 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 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 <http://www.gnu.org/licenses/>. */
|
||||
|
||||
#ifndef _@GUARD_PREFIX@_DIRENT_H
|
||||
|
||||
#if __GNUC__ >= 3
|
||||
@PRAGMA_SYSTEM_HEADER@
|
||||
#endif
|
||||
@PRAGMA_COLUMNS@
|
||||
|
||||
/* The include_next requires a split double-inclusion guard. */
|
||||
#if @HAVE_DIRENT_H@
|
||||
# @INCLUDE_NEXT@ @NEXT_DIRENT_H@
|
||||
#endif
|
||||
|
||||
#ifndef _@GUARD_PREFIX@_DIRENT_H
|
||||
#define _@GUARD_PREFIX@_DIRENT_H
|
||||
|
||||
/* Get ino_t. Needed on some systems, including glibc 2.8. */
|
||||
#include <sys/types.h>
|
||||
|
||||
#if !@HAVE_DIRENT_H@
|
||||
/* Define types DIR and 'struct dirent'. */
|
||||
# if !GNULIB_defined_struct_dirent
|
||||
struct dirent
|
||||
{
|
||||
char d_type;
|
||||
char d_name[1];
|
||||
};
|
||||
/* Possible values for 'd_type'. */
|
||||
# define DT_UNKNOWN 0
|
||||
# define DT_FIFO 1 /* FIFO */
|
||||
# define DT_CHR 2 /* character device */
|
||||
# define DT_DIR 4 /* directory */
|
||||
# define DT_BLK 6 /* block device */
|
||||
# define DT_REG 8 /* regular file */
|
||||
# define DT_LNK 10 /* symbolic link */
|
||||
# define DT_SOCK 12 /* socket */
|
||||
# define DT_WHT 14 /* whiteout */
|
||||
typedef struct gl_directory DIR;
|
||||
# define GNULIB_defined_struct_dirent 1
|
||||
# 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. */
|
||||
|
||||
|
||||
/* Declare overridden functions. */
|
||||
|
||||
#if @GNULIB_OPENDIR@
|
||||
# if @REPLACE_OPENDIR@
|
||||
# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
|
||||
# undef opendir
|
||||
# define opendir rpl_opendir
|
||||
# endif
|
||||
_GL_FUNCDECL_RPL (opendir, DIR *, (const char *dir_name) _GL_ARG_NONNULL ((1)));
|
||||
_GL_CXXALIAS_RPL (opendir, DIR *, (const char *dir_name));
|
||||
# else
|
||||
# if !@HAVE_OPENDIR@
|
||||
_GL_FUNCDECL_SYS (opendir, DIR *, (const char *dir_name) _GL_ARG_NONNULL ((1)));
|
||||
# endif
|
||||
_GL_CXXALIAS_SYS (opendir, DIR *, (const char *dir_name));
|
||||
# endif
|
||||
_GL_CXXALIASWARN (opendir);
|
||||
#elif defined GNULIB_POSIXCHECK
|
||||
# undef opendir
|
||||
# if HAVE_RAW_DECL_OPENDIR
|
||||
_GL_WARN_ON_USE (opendir, "opendir is not portable - "
|
||||
"use gnulib module opendir for portability");
|
||||
# endif
|
||||
#endif
|
||||
|
||||
#if @GNULIB_READDIR@
|
||||
# if !@HAVE_READDIR@
|
||||
_GL_FUNCDECL_SYS (readdir, struct dirent *, (DIR *dirp) _GL_ARG_NONNULL ((1)));
|
||||
# endif
|
||||
_GL_CXXALIAS_SYS (readdir, struct dirent *, (DIR *dirp));
|
||||
_GL_CXXALIASWARN (readdir);
|
||||
#elif defined GNULIB_POSIXCHECK
|
||||
# undef readdir
|
||||
# if HAVE_RAW_DECL_READDIR
|
||||
_GL_WARN_ON_USE (readdir, "readdir is not portable - "
|
||||
"use gnulib module readdir for portability");
|
||||
# endif
|
||||
#endif
|
||||
|
||||
#if @GNULIB_REWINDDIR@
|
||||
# if !@HAVE_REWINDDIR@
|
||||
_GL_FUNCDECL_SYS (rewinddir, void, (DIR *dirp) _GL_ARG_NONNULL ((1)));
|
||||
# endif
|
||||
_GL_CXXALIAS_SYS (rewinddir, void, (DIR *dirp));
|
||||
_GL_CXXALIASWARN (rewinddir);
|
||||
#elif defined GNULIB_POSIXCHECK
|
||||
# undef rewinddir
|
||||
# if HAVE_RAW_DECL_REWINDDIR
|
||||
_GL_WARN_ON_USE (rewinddir, "rewinddir is not portable - "
|
||||
"use gnulib module rewinddir for portability");
|
||||
# endif
|
||||
#endif
|
||||
|
||||
#if @GNULIB_CLOSEDIR@
|
||||
# if @REPLACE_CLOSEDIR@
|
||||
# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
|
||||
# undef closedir
|
||||
# define closedir rpl_closedir
|
||||
# endif
|
||||
_GL_FUNCDECL_RPL (closedir, int, (DIR *dirp) _GL_ARG_NONNULL ((1)));
|
||||
_GL_CXXALIAS_RPL (closedir, int, (DIR *dirp));
|
||||
# else
|
||||
# if !@HAVE_CLOSEDIR@
|
||||
_GL_FUNCDECL_SYS (closedir, int, (DIR *dirp) _GL_ARG_NONNULL ((1)));
|
||||
# endif
|
||||
_GL_CXXALIAS_SYS (closedir, int, (DIR *dirp));
|
||||
# endif
|
||||
_GL_CXXALIASWARN (closedir);
|
||||
#elif defined GNULIB_POSIXCHECK
|
||||
# undef closedir
|
||||
# if HAVE_RAW_DECL_CLOSEDIR
|
||||
_GL_WARN_ON_USE (closedir, "closedir is not portable - "
|
||||
"use gnulib module closedir for portability");
|
||||
# endif
|
||||
#endif
|
||||
|
||||
#if @GNULIB_DIRFD@
|
||||
/* Return the file descriptor associated with the given directory stream,
|
||||
or -1 if none exists. */
|
||||
# if @REPLACE_DIRFD@
|
||||
# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
|
||||
# undef dirfd
|
||||
# define dirfd rpl_dirfd
|
||||
# endif
|
||||
_GL_FUNCDECL_RPL (dirfd, int, (DIR *) _GL_ARG_NONNULL ((1)));
|
||||
_GL_CXXALIAS_RPL (dirfd, int, (DIR *));
|
||||
# else
|
||||
# if defined __cplusplus && defined GNULIB_NAMESPACE && defined dirfd
|
||||
/* dirfd is defined as a macro and not as a function.
|
||||
Turn it into a function and get rid of the macro. */
|
||||
static inline int (dirfd) (DIR *dp) { return dirfd (dp); }
|
||||
# undef dirfd
|
||||
# endif
|
||||
# if !(@HAVE_DECL_DIRFD@ || defined dirfd)
|
||||
_GL_FUNCDECL_SYS (dirfd, int, (DIR *) _GL_ARG_NONNULL ((1)));
|
||||
# endif
|
||||
_GL_CXXALIAS_SYS (dirfd, int, (DIR *));
|
||||
# endif
|
||||
_GL_CXXALIASWARN (dirfd);
|
||||
#elif defined GNULIB_POSIXCHECK
|
||||
# undef dirfd
|
||||
# if HAVE_RAW_DECL_DIRFD
|
||||
_GL_WARN_ON_USE (dirfd, "dirfd is unportable - "
|
||||
"use gnulib module dirfd for portability");
|
||||
# endif
|
||||
#endif
|
||||
|
||||
#if @GNULIB_FDOPENDIR@
|
||||
/* Open a directory stream visiting the given directory file
|
||||
descriptor. Return NULL and set errno if fd is not visiting a
|
||||
directory. On success, this function consumes fd (it will be
|
||||
implicitly closed either by this function or by a subsequent
|
||||
closedir). */
|
||||
# if @REPLACE_FDOPENDIR@
|
||||
# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
|
||||
# undef fdopendir
|
||||
# define fdopendir rpl_fdopendir
|
||||
# endif
|
||||
_GL_FUNCDECL_RPL (fdopendir, DIR *, (int fd));
|
||||
_GL_CXXALIAS_RPL (fdopendir, DIR *, (int fd));
|
||||
# else
|
||||
# if !@HAVE_FDOPENDIR@ || !@HAVE_DECL_FDOPENDIR@
|
||||
_GL_FUNCDECL_SYS (fdopendir, DIR *, (int fd));
|
||||
# endif
|
||||
_GL_CXXALIAS_SYS (fdopendir, DIR *, (int fd));
|
||||
# endif
|
||||
_GL_CXXALIASWARN (fdopendir);
|
||||
#elif defined GNULIB_POSIXCHECK
|
||||
# undef fdopendir
|
||||
# if HAVE_RAW_DECL_FDOPENDIR
|
||||
_GL_WARN_ON_USE (fdopendir, "fdopendir is unportable - "
|
||||
"use gnulib module fdopendir for portability");
|
||||
# endif
|
||||
#endif
|
||||
|
||||
#if @GNULIB_SCANDIR@
|
||||
/* Scan the directory DIR, calling FILTER on each directory entry.
|
||||
Entries for which FILTER returns nonzero are individually malloc'd,
|
||||
sorted using qsort with CMP, and collected in a malloc'd array in
|
||||
*NAMELIST. Returns the number of entries selected, or -1 on error. */
|
||||
# if !@HAVE_SCANDIR@
|
||||
_GL_FUNCDECL_SYS (scandir, int,
|
||||
(const char *dir, struct dirent ***namelist,
|
||||
int (*filter) (const struct dirent *),
|
||||
int (*cmp) (const struct dirent **, const struct dirent **))
|
||||
_GL_ARG_NONNULL ((1, 2, 4)));
|
||||
# endif
|
||||
/* Need to cast, because on glibc systems, the fourth parameter is
|
||||
int (*cmp) (const void *, const void *). */
|
||||
_GL_CXXALIAS_SYS_CAST (scandir, int,
|
||||
(const char *dir, struct dirent ***namelist,
|
||||
int (*filter) (const struct dirent *),
|
||||
int (*cmp) (const struct dirent **, const struct dirent **)));
|
||||
_GL_CXXALIASWARN (scandir);
|
||||
#elif defined GNULIB_POSIXCHECK
|
||||
# undef scandir
|
||||
# if HAVE_RAW_DECL_SCANDIR
|
||||
_GL_WARN_ON_USE (scandir, "scandir is unportable - "
|
||||
"use gnulib module scandir for portability");
|
||||
# endif
|
||||
#endif
|
||||
|
||||
#if @GNULIB_ALPHASORT@
|
||||
/* Compare two 'struct dirent' entries alphabetically. */
|
||||
# if !@HAVE_ALPHASORT@
|
||||
_GL_FUNCDECL_SYS (alphasort, int,
|
||||
(const struct dirent **, const struct dirent **)
|
||||
_GL_ARG_NONNULL ((1, 2)));
|
||||
# endif
|
||||
/* Need to cast, because on glibc systems, the parameters are
|
||||
(const void *, const void *). */
|
||||
_GL_CXXALIAS_SYS_CAST (alphasort, int,
|
||||
(const struct dirent **, const struct dirent **));
|
||||
_GL_CXXALIASWARN (alphasort);
|
||||
#elif defined GNULIB_POSIXCHECK
|
||||
# undef alphasort
|
||||
# if HAVE_RAW_DECL_ALPHASORT
|
||||
_GL_WARN_ON_USE (alphasort, "alphasort is unportable - "
|
||||
"use gnulib module alphasort for portability");
|
||||
# endif
|
||||
#endif
|
||||
|
||||
|
||||
#endif /* _@GUARD_PREFIX@_DIRENT_H */
|
||||
#endif /* _@GUARD_PREFIX@_DIRENT_H */
|
32
lib/dirfd.c
Normal file
32
lib/dirfd.c
Normal file
|
@ -0,0 +1,32 @@
|
|||
/* dirfd.c -- return the file descriptor associated with an open DIR*
|
||||
|
||||
Copyright (C) 2001, 2006, 2008-2012 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 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 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 <http://www.gnu.org/licenses/>. */
|
||||
|
||||
/* Written by Jim Meyering. */
|
||||
|
||||
#include <config.h>
|
||||
|
||||
#include <dirent.h>
|
||||
#include <errno.h>
|
||||
|
||||
int
|
||||
dirfd (DIR *dir_p)
|
||||
{
|
||||
int fd = DIR_TO_FD (dir_p);
|
||||
if (fd == -1)
|
||||
errno = ENOTSUP;
|
||||
return fd;
|
||||
}
|
|
@ -1,6 +1,6 @@
|
|||
/* dirname.c -- return all but the last element in a file name
|
||||
|
||||
Copyright (C) 1990, 1998, 2000-2001, 2003-2006, 2009-2011 Free Software
|
||||
Copyright (C) 1990, 1998, 2000-2001, 2003-2006, 2009-2012 Free Software
|
||||
Foundation, Inc.
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
|
@ -25,7 +25,7 @@
|
|||
|
||||
/* 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
|
||||
even though 'dir_name (FILE)' will return ".". Works properly even
|
||||
if there are trailing slashes (by effectively ignoring them). */
|
||||
|
||||
size_t
|
||||
|
@ -53,9 +53,9 @@ dir_len (char const *file)
|
|||
}
|
||||
|
||||
|
||||
/* In general, we can't use the builtin `dirname' function if available,
|
||||
/* 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.
|
||||
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
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
/* Take file names apart into directory and base names.
|
||||
|
||||
Copyright (C) 1998, 2001, 2003-2006, 2009-2011 Free Software Foundation,
|
||||
Copyright (C) 1998, 2001, 2003-2006, 2009-2012 Free Software Foundation,
|
||||
Inc.
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
/* File names on MS-DOS/Windows systems.
|
||||
|
||||
Copyright (C) 2000-2001, 2004-2006, 2009-2011 Free Software Foundation, Inc.
|
||||
Copyright (C) 2000-2001, 2004-2006, 2009-2012 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
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/* Duplicate a locale object.
|
||||
Copyright (C) 2009-2011 Free Software Foundation, Inc.
|
||||
Copyright (C) 2009-2012 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
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
/* A POSIX-like <errno.h>.
|
||||
|
||||
Copyright (C) 2008-2011 Free Software Foundation, Inc.
|
||||
Copyright (C) 2008-2012 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
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
/* Like <fcntl.h>, but with non-working flags defined to 0.
|
||||
|
||||
Copyright (C) 2006-2011 Free Software Foundation, Inc.
|
||||
Copyright (C) 2006-2012 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
|
||||
|
@ -62,6 +62,12 @@
|
|||
# include <unistd.h>
|
||||
#endif
|
||||
|
||||
/* Native Windows platforms declare open(), creat() in <io.h>. */
|
||||
#if (@GNULIB_OPEN@ || defined GNULIB_POSIXCHECK) \
|
||||
&& ((defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__)
|
||||
# include <io.h>
|
||||
#endif
|
||||
|
||||
|
||||
/* The definitions of _GL_FUNCDECL_RPL etc. are copied here. */
|
||||
|
||||
|
@ -177,12 +183,12 @@ _GL_WARN_ON_USE (openat, "openat is not portable - "
|
|||
/* Fix up the O_* macros. */
|
||||
|
||||
#if !defined O_DIRECT && defined O_DIRECTIO
|
||||
/* Tru64 spells it `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'. */
|
||||
/* Mingw spells it 'O_NOINHERIT'. */
|
||||
# define O_CLOEXEC O_NOINHERIT
|
||||
#endif
|
||||
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/* Hook for making making file descriptor functions close(), ioctl() extensible.
|
||||
Copyright (C) 2009-2011 Free Software Foundation, Inc.
|
||||
Copyright (C) 2009-2012 Free Software Foundation, Inc.
|
||||
Written by Bruno Haible <bruno@clisp.org>, 2009.
|
||||
|
||||
This program is free software: you can redistribute it and/or modify it
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/* Hook for making making file descriptor functions close(), ioctl() extensible.
|
||||
Copyright (C) 2009-2011 Free Software Foundation, Inc.
|
||||
Copyright (C) 2009-2012 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
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/* Supplemental information about the floating-point formats.
|
||||
Copyright (C) 2007, 2009-2011 Free Software Foundation, Inc.
|
||||
Copyright (C) 2007, 2009-2012 Free Software Foundation, Inc.
|
||||
Written by Bruno Haible <bruno@clisp.org>, 2007.
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/* Auxiliary definitions for <float.h>.
|
||||
Copyright (C) 2011 Free Software Foundation, Inc.
|
||||
Copyright (C) 2011-2012 Free Software Foundation, Inc.
|
||||
Written by Bruno Haible <bruno@clisp.org>, 2011.
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
/* A correct <float.h>.
|
||||
|
||||
Copyright (C) 2007-2011 Free Software Foundation, Inc.
|
||||
Copyright (C) 2007-2012 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
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
|
||||
Written by Richard W.M. Jones <rjones.at.redhat.com>
|
||||
|
||||
Copyright (C) 2008-2011 Free Software Foundation, Inc.
|
||||
Copyright (C) 2008-2012 Free Software Foundation, Inc.
|
||||
|
||||
This library is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU Lesser General Public
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/* Round towards negative infinity.
|
||||
Copyright (C) 2007, 2010-2011 Free Software Foundation, Inc.
|
||||
Copyright (C) 2007, 2010-2012 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
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/* Split a double into fraction and mantissa.
|
||||
Copyright (C) 2007-2011 Free Software Foundation, Inc.
|
||||
Copyright (C) 2007-2012 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
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/* fstat() replacement.
|
||||
Copyright (C) 2011 Free Software Foundation, Inc.
|
||||
Copyright (C) 2011-2012 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
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/* An interface to read that retries after partial reads and interrupts.
|
||||
Copyright (C) 2002-2003, 2009-2011 Free Software Foundation, Inc.
|
||||
Copyright (C) 2002-2003, 2009-2012 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
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
/* An interface to read() that reads all it is asked to read.
|
||||
|
||||
Copyright (C) 2002, 2009-2011 Free Software Foundation, Inc.
|
||||
Copyright (C) 2002, 2009-2012 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
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
/* An interface to read and write that retries (if necessary) until complete.
|
||||
|
||||
Copyright (C) 1993-1994, 1997-2006, 2009-2011 Free Software Foundation, Inc.
|
||||
Copyright (C) 1993-1994, 1997-2006, 2009-2012 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
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
/* An interface to write() that writes all it is asked to write.
|
||||
|
||||
Copyright (C) 2002-2003, 2009-2011 Free Software Foundation, Inc.
|
||||
Copyright (C) 2002-2003, 2009-2012 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
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* Copyright (C) 1997, 2001-2002, 2004-2006, 2008-2011 Free Software
|
||||
/* Copyright (C) 1997, 2001-2002, 2004-2006, 2008-2012 Free Software
|
||||
Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
Contributed by Philip Blundell <pjb27@cam.ac.uk>, 1997.
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/* Get address information (partial implementation).
|
||||
Copyright (C) 1997, 2001-2002, 2004-2011 Free Software Foundation, Inc.
|
||||
Copyright (C) 1997, 2001-2002, 2004-2012 Free Software Foundation, Inc.
|
||||
Contributed by Simon Josefsson <simon@josefsson.org>.
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
|
@ -56,13 +56,13 @@
|
|||
#endif
|
||||
|
||||
#if defined _WIN32 || defined __WIN32__
|
||||
# define WIN32_NATIVE
|
||||
# define WINDOWS_NATIVE
|
||||
#endif
|
||||
|
||||
/* gl_sockets_startup */
|
||||
#include "sockets.h"
|
||||
|
||||
#ifdef WIN32_NATIVE
|
||||
#ifdef WINDOWS_NATIVE
|
||||
typedef int (WSAAPI *getaddrinfo_func) (const char*, const char*,
|
||||
const struct addrinfo*,
|
||||
struct addrinfo**);
|
||||
|
@ -153,7 +153,7 @@ getaddrinfo (const char *restrict nodename,
|
|||
};
|
||||
#endif
|
||||
|
||||
#ifdef WIN32_NATIVE
|
||||
#ifdef WINDOWS_NATIVE
|
||||
if (use_win32_p ())
|
||||
return getaddrinfo_ptr (nodename, servname, hints, res);
|
||||
#endif
|
||||
|
@ -332,11 +332,11 @@ getaddrinfo (const char *restrict nodename,
|
|||
return 0;
|
||||
}
|
||||
|
||||
/* Free `addrinfo' structure AI including associated storage. */
|
||||
/* Free 'addrinfo' structure AI including associated storage. */
|
||||
void
|
||||
freeaddrinfo (struct addrinfo *ai)
|
||||
{
|
||||
#ifdef WIN32_NATIVE
|
||||
#ifdef WINDOWS_NATIVE
|
||||
if (use_win32_p ())
|
||||
{
|
||||
freeaddrinfo_ptr (ai);
|
||||
|
@ -362,7 +362,7 @@ getnameinfo (const struct sockaddr *restrict sa, socklen_t salen,
|
|||
char *restrict service, socklen_t servicelen,
|
||||
int flags)
|
||||
{
|
||||
#ifdef WIN32_NATIVE
|
||||
#ifdef WINDOWS_NATIVE
|
||||
if (use_win32_p ())
|
||||
return getnameinfo_ptr (sa, salen, node, nodelen,
|
||||
service, servicelen, flags);
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
/* getpeername.c --- wrappers for Windows getpeername function
|
||||
|
||||
Copyright (C) 2008-2011 Free Software Foundation, Inc.
|
||||
Copyright (C) 2008-2012 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
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
/* getsockname.c --- wrappers for Windows getsockname function
|
||||
|
||||
Copyright (C) 2008-2011 Free Software Foundation, Inc.
|
||||
Copyright (C) 2008-2012 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
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
/* getsockopt.c --- wrappers for Windows getsockopt function
|
||||
|
||||
Copyright (C) 2008-2011 Free Software Foundation, Inc.
|
||||
Copyright (C) 2008-2012 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
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/* Convenience header for conditional use of GNU <libintl.h>.
|
||||
Copyright (C) 1995-1998, 2000-2002, 2004-2006, 2009-2011 Free Software
|
||||
Copyright (C) 1995-1998, 2000-2002, 2004-2006, 2009-2012 Free Software
|
||||
Foundation, Inc.
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/* Character set conversion.
|
||||
Copyright (C) 1999-2001, 2007, 2009-2011 Free Software Foundation, Inc.
|
||||
Copyright (C) 1999-2001, 2007, 2009-2012 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
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
/* A GNU-like <iconv.h>.
|
||||
|
||||
Copyright (C) 2007-2011 Free Software Foundation, Inc.
|
||||
Copyright (C) 2007-2012 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
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/* Character set conversion.
|
||||
Copyright (C) 2007, 2009-2011 Free Software Foundation, Inc.
|
||||
Copyright (C) 2007, 2009-2012 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
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/* Character set conversion.
|
||||
Copyright (C) 2007, 2009-2011 Free Software Foundation, Inc.
|
||||
Copyright (C) 2007, 2009-2012 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
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/* Character set conversion handler type.
|
||||
Copyright (C) 2001-2007, 2009-2011 Free Software Foundation, Inc.
|
||||
Copyright (C) 2001-2007, 2009-2012 Free Software Foundation, Inc.
|
||||
Written by Bruno Haible.
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
/* inet_ntop.c -- convert IPv4 and IPv6 addresses from binary to text form
|
||||
|
||||
Copyright (C) 2005-2006, 2008-2011 Free Software Foundation, Inc.
|
||||
Copyright (C) 2005-2006, 2008-2012 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
|
||||
|
@ -38,6 +38,16 @@
|
|||
/* Specification. */
|
||||
#include <arpa/inet.h>
|
||||
|
||||
/* Use this to suppress gcc's "...may be used before initialized" warnings.
|
||||
Beware: The Code argument must not contain commas. */
|
||||
#ifndef IF_LINT
|
||||
# ifdef lint
|
||||
# define IF_LINT(Code) Code
|
||||
# else
|
||||
# define IF_LINT(Code) /* empty */
|
||||
# endif
|
||||
#endif
|
||||
|
||||
#if HAVE_DECL_INET_NTOP
|
||||
|
||||
# undef inet_ntop
|
||||
|
@ -74,7 +84,7 @@ static const char *inet_ntop6 (const unsigned char *src, char *dst, socklen_t si
|
|||
* inet_ntop(af, src, dst, size)
|
||||
* convert a network format address to presentation format.
|
||||
* return:
|
||||
* pointer to presentation format address (`dst'), or NULL (see errno).
|
||||
* pointer to presentation format address ('dst'), or NULL (see errno).
|
||||
* author:
|
||||
* Paul Vixie, 1996.
|
||||
*/
|
||||
|
@ -105,7 +115,7 @@ inet_ntop (int af, const void *restrict src,
|
|||
* inet_ntop4(src, dst, size)
|
||||
* format an IPv4 address
|
||||
* return:
|
||||
* `dst' (as a const)
|
||||
* 'dst' (as a const)
|
||||
* notes:
|
||||
* (1) uses no statics
|
||||
* (2) takes a u_char* not an in_addr as input
|
||||
|
@ -167,6 +177,8 @@ inet_ntop6 (const unsigned char *src, char *dst, socklen_t size)
|
|||
words[i / 2] = (src[i] << 8) | src[i + 1];
|
||||
best.base = -1;
|
||||
cur.base = -1;
|
||||
IF_LINT(best.len = 0);
|
||||
IF_LINT(cur.len = 0);
|
||||
for (i = 0; i < (NS_IN6ADDRSZ / NS_INT16SZ); i++)
|
||||
{
|
||||
if (words[i] == 0)
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
/* inet_pton.c -- convert IPv4 and IPv6 addresses from text to binary form
|
||||
|
||||
Copyright (C) 2006, 2008-2011 Free Software Foundation, Inc.
|
||||
Copyright (C) 2006, 2008-2012 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
|
||||
|
@ -73,8 +73,8 @@ static int inet_pton6 (const char *src, unsigned char *dst);
|
|||
* to network format (which is usually some kind of binary format).
|
||||
* return:
|
||||
* 1 if the address was valid for the specified address family
|
||||
* 0 if the address wasn't valid (`dst' is untouched in this case)
|
||||
* -1 if some other error occurred (`dst' is untouched in this case, too)
|
||||
* 0 if the address wasn't valid ('dst' is untouched in this case)
|
||||
* -1 if some other error occurred ('dst' is untouched in this case, too)
|
||||
* author:
|
||||
* Paul Vixie, 1996.
|
||||
*/
|
||||
|
@ -103,9 +103,9 @@ inet_pton (int af, const char *restrict src, void *restrict dst)
|
|||
* like inet_aton() but without all the hexadecimal, octal (with the
|
||||
* exception of 0) and shorthand.
|
||||
* return:
|
||||
* 1 if `src' is a valid dotted quad, else 0.
|
||||
* 1 if 'src' is a valid dotted quad, else 0.
|
||||
* notice:
|
||||
* does not touch `dst' unless it's returning 1.
|
||||
* does not touch 'dst' unless it's returning 1.
|
||||
* author:
|
||||
* Paul Vixie, 1996.
|
||||
*/
|
||||
|
@ -159,9 +159,9 @@ inet_pton4 (const char *restrict src, unsigned char *restrict dst)
|
|||
* inet_pton6(src, dst)
|
||||
* convert presentation level address to network order binary form.
|
||||
* return:
|
||||
* 1 if `src' is a valid [RFC1884 2.2] address, else 0.
|
||||
* 1 if 'src' is a valid [RFC1884 2.2] address, else 0.
|
||||
* notice:
|
||||
* (1) does not touch `dst' unless it's returning 1.
|
||||
* (1) does not touch 'dst' unless it's returning 1.
|
||||
* (2) :: in a full address is silently ignored.
|
||||
* credit:
|
||||
* inspired by Mark Andrews.
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/* Test for positive or negative infinity.
|
||||
Copyright (C) 2007-2011 Free Software Foundation, Inc.
|
||||
Copyright (C) 2007-2012 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
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/* Test for NaN that does not need libm.
|
||||
Copyright (C) 2007-2011 Free Software Foundation, Inc.
|
||||
Copyright (C) 2007-2012 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
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/* Test for NaN that does not need libm.
|
||||
Copyright (C) 2007-2011 Free Software Foundation, Inc.
|
||||
Copyright (C) 2007-2012 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
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/* Test for NaN that does not need libm.
|
||||
Copyright (C) 2008-2011 Free Software Foundation, Inc.
|
||||
Copyright (C) 2008-2012 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
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/* Test for NaN that does not need libm.
|
||||
Copyright (C) 2007, 2009-2011 Free Software Foundation, Inc.
|
||||
Copyright (C) 2007, 2009-2012 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
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/* Test for NaN that does not need libm.
|
||||
Copyright (C) 2007, 2009-2011 Free Software Foundation, Inc.
|
||||
Copyright (C) 2007, 2009-2012 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
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/* Replacement for 'int' to 'long double' conversion routine.
|
||||
Copyright (C) 2011 Free Software Foundation, Inc.
|
||||
Copyright (C) 2011-2012 Free Software Foundation, Inc.
|
||||
Written by Bruno Haible <bruno@clisp.org>, 2011.
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
/* listen.c --- wrappers for Windows listen function
|
||||
|
||||
Copyright (C) 2008-2011 Free Software Foundation, Inc.
|
||||
Copyright (C) 2008-2012 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
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
/* Determine a canonical name for the current locale's character encoding.
|
||||
|
||||
Copyright (C) 2000-2006, 2008-2011 Free Software Foundation, Inc.
|
||||
Copyright (C) 2000-2006, 2008-2012 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
|
||||
|
@ -34,7 +34,7 @@
|
|||
#endif
|
||||
|
||||
#if defined _WIN32 || defined __WIN32__
|
||||
# define WIN32_NATIVE
|
||||
# define WINDOWS_NATIVE
|
||||
#endif
|
||||
|
||||
#if defined __EMX__
|
||||
|
@ -44,7 +44,7 @@
|
|||
# endif
|
||||
#endif
|
||||
|
||||
#if !defined WIN32_NATIVE
|
||||
#if !defined WINDOWS_NATIVE
|
||||
# include <unistd.h>
|
||||
# if HAVE_LANGINFO_CODESET
|
||||
# include <langinfo.h>
|
||||
|
@ -57,7 +57,7 @@
|
|||
# define WIN32_LEAN_AND_MEAN
|
||||
# include <windows.h>
|
||||
# endif
|
||||
#elif defined WIN32_NATIVE
|
||||
#elif defined WINDOWS_NATIVE
|
||||
# define WIN32_LEAN_AND_MEAN
|
||||
# include <windows.h>
|
||||
#endif
|
||||
|
@ -83,7 +83,7 @@
|
|||
#endif
|
||||
|
||||
#if defined _WIN32 || defined __WIN32__ || defined __CYGWIN__ || defined __EMX__ || defined __DJGPP__
|
||||
/* Win32, Cygwin, OS/2, DOS */
|
||||
/* Native Windows, Cygwin, OS/2, DOS */
|
||||
# define ISSLASH(C) ((C) == '/' || (C) == '\\')
|
||||
#endif
|
||||
|
||||
|
@ -123,7 +123,7 @@ get_charset_aliases (void)
|
|||
cp = charset_aliases;
|
||||
if (cp == NULL)
|
||||
{
|
||||
#if !(defined DARWIN7 || defined VMS || defined WIN32_NATIVE || defined __CYGWIN__)
|
||||
#if !(defined DARWIN7 || defined VMS || defined WINDOWS_NATIVE || defined __CYGWIN__)
|
||||
const char *dir;
|
||||
const char *base = "charset.alias";
|
||||
char *file_name;
|
||||
|
@ -308,7 +308,7 @@ get_charset_aliases (void)
|
|||
"DECKOREAN" "\0" "EUC-KR" "\0";
|
||||
# endif
|
||||
|
||||
# if defined WIN32_NATIVE || defined __CYGWIN__
|
||||
# if defined WINDOWS_NATIVE || defined __CYGWIN__
|
||||
/* To avoid the troubles of installing a separate file in the same
|
||||
directory as the DLL and of retrieving the DLL's directory at
|
||||
runtime, simply inline the aliases here. */
|
||||
|
@ -360,7 +360,7 @@ locale_charset (void)
|
|||
const char *codeset;
|
||||
const char *aliases;
|
||||
|
||||
#if !(defined WIN32_NATIVE || defined OS2)
|
||||
#if !(defined WINDOWS_NATIVE || defined OS2)
|
||||
|
||||
# if HAVE_LANGINFO_CODESET
|
||||
|
||||
|
@ -407,10 +407,10 @@ locale_charset (void)
|
|||
}
|
||||
}
|
||||
|
||||
/* Woe32 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).
|
||||
/* 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
|
||||
|
@ -453,12 +453,12 @@ locale_charset (void)
|
|||
|
||||
# endif
|
||||
|
||||
#elif defined WIN32_NATIVE
|
||||
#elif defined WINDOWS_NATIVE
|
||||
|
||||
static char buf[2 + 10 + 1];
|
||||
|
||||
/* Woe32 has a function returning the locale's codepage as a number:
|
||||
GetACP().
|
||||
/* 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.
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/* Determine a canonical name for the current locale's character encoding.
|
||||
Copyright (C) 2000-2003, 2009-2011 Free Software Foundation, Inc.
|
||||
Copyright (C) 2000-2003, 2009-2012 Free Software Foundation, Inc.
|
||||
This file is part of the GNU CHARSET Library.
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/* A POSIX <locale.h>.
|
||||
Copyright (C) 2007-2011 Free Software Foundation, Inc.
|
||||
Copyright (C) 2007-2012 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
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
/* Work around a bug of lstat on some systems
|
||||
|
||||
Copyright (C) 1997-2006, 2008-2011 Free Software Foundation, Inc.
|
||||
Copyright (C) 1997-2006, 2008-2012 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
|
||||
|
@ -51,11 +51,11 @@ orig_lstat (const char *filename, struct stat *buf)
|
|||
# include <errno.h>
|
||||
|
||||
/* 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
|
||||
"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)',
|
||||
'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,
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
/* malloc() function that is glibc compatible.
|
||||
|
||||
Copyright (C) 1997-1998, 2006-2007, 2009-2011 Free Software Foundation, Inc.
|
||||
Copyright (C) 1997-1998, 2006-2007, 2009-2012 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
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/* Safe automatic memory allocation.
|
||||
Copyright (C) 2003, 2006-2007, 2009-2011 Free Software Foundation, Inc.
|
||||
Copyright (C) 2003, 2006-2007, 2009-2012 Free Software Foundation, Inc.
|
||||
Written by Bruno Haible <bruno@clisp.org>, 2003.
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/* Safe automatic memory allocation.
|
||||
Copyright (C) 2003-2007, 2009-2011 Free Software Foundation, Inc.
|
||||
Copyright (C) 2003-2007, 2009-2012 Free Software Foundation, Inc.
|
||||
Written by Bruno Haible <bruno@clisp.org>, 2003.
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
/* A GNU-like <math.h>.
|
||||
|
||||
Copyright (C) 2002-2003, 2007-2011 Free Software Foundation, Inc.
|
||||
Copyright (C) 2002-2003, 2007-2012 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
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* Copyright (C) 1991, 1993, 1996-1997, 1999-2000, 2003-2004, 2006, 2008-2011
|
||||
/* Copyright (C) 1991, 1993, 1996-1997, 1999-2000, 2003-2004, 2006, 2008-2012
|
||||
Free Software Foundation, Inc.
|
||||
|
||||
Based on strlen implementation by Torbjorn Granlund (tege@sics.se),
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/* Invalid parameter handler for MSVC runtime libraries.
|
||||
Copyright (C) 2011 Free Software Foundation, Inc.
|
||||
Copyright (C) 2011-2012 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
|
||||
|
@ -40,7 +40,7 @@ gl_msvc_invalid_parameter_handler (const wchar_t *expression,
|
|||
|
||||
# else
|
||||
|
||||
/* Get declarations of the Win32 API functions. */
|
||||
/* Get declarations of the native Windows API functions. */
|
||||
# define WIN32_LEAN_AND_MEAN
|
||||
# include <windows.h>
|
||||
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/* Invalid parameter handler for MSVC runtime libraries.
|
||||
Copyright (C) 2011 Free Software Foundation, Inc.
|
||||
Copyright (C) 2011-2012 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
|
||||
|
@ -207,7 +207,7 @@ extern struct gl_msvc_inval_per_thread *gl_msvc_inval_current (void);
|
|||
or when SANE_LIBRARY_HANDLING is desired. */
|
||||
|
||||
/* The braces here avoid GCC warnings like
|
||||
"warning: suggest explicit braces to avoid ambiguous `else'". */
|
||||
"warning: suggest explicit braces to avoid ambiguous 'else'". */
|
||||
# define TRY_MSVC_INVAL \
|
||||
do \
|
||||
{ \
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
/* Wrappers that don't throw invalid parameter notifications
|
||||
with MSVC runtime libraries.
|
||||
Copyright (C) 2011 Free Software Foundation, Inc.
|
||||
Copyright (C) 2011-2012 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
|
||||
|
@ -21,7 +21,7 @@
|
|||
/* Specification. */
|
||||
#include "msvc-nothrow.h"
|
||||
|
||||
/* Get declarations of the Win32 API functions. */
|
||||
/* Get declarations of the native Windows API functions. */
|
||||
#define WIN32_LEAN_AND_MEAN
|
||||
#include <windows.h>
|
||||
|
||||
|
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Add a link
Reference in a new issue