mirror of
https://sourceware.org/git/glibc.git
synced 2024-11-21 20:40:05 +00:00
Update.
1998-09-14 11:26 Ulrich Drepper <drepper@cygnus.com> * wcsmbs/wcsmbs-tst1.c: Include stdlib.h. 1998-09-14 Thorsten Kukuk <kukuk@vt.uni-paderborn.de> * libc-work/nis/nss_nisplus/nisplus-service.c (_nss_nisplus_parse_servent): Convert port in network byte order. 1998-09-14 07:53 -0400 Zack Weinberg <zack@rabi.phys.columbia.edu> * stdlib/stdlib.h: Add a switch, __need_malloc_and_calloc, to provide only malloc and calloc. * include/stdlib.h: Support the above. * string/bits/string2.h: Use __need_malloc_and_calloc when including stdlib.h. (__string2_1bptr_p): Avoid -Wbad-function-cast warnings. * iconvdata/iso-2022-jp.c: Include <stdlib.h>. * iconvdata/iso646.c: Include <stdlib.h>. 1998-09-14 07:51 -0400 Zack Weinberg <zack@rabi.phys.columbia.edu> * sunrpc/rpc_cout.c: Add braces around ambiguous else. * sysdeps/libm-ieee754/w_pow.c: Likewise. * sysdeps/libm-ieee754/w_powf.c: Likewise. * sysdeps/libm-ieee754/w_powl.c: Likewise. 1998-09-14 07:57 -0400 Zack Weinberg <zack@rabi.phys.columbia.edu> * stdio-common/stdio_lim.h.in: New file. All parameters are adjustable at build time. * Rules: Add a rule to build bits/stdio_lim.h from stdio-common/stdio_lim.h.in. (It has to be in Rules so that all subdirectories know how to make the file. It can't be in Makerules because then it gets built at top level and the dependencies are wrong.) * stdio-common/Makefile (distribute): Add stdio_lim.h.in. * sysdeps/unix/sysv/linux/Makefile: Delete rules to make stdio_lim.h. * sysdeps/unix/sysv/linux/stdio_lim.h.in: Removed. * sysdeps/unix/sysv/linux/Dist: Take out stdio_lim.h.in. * sysdeps/posix/Makefile: Removed. * sysdeps/posix/mk-stdiolim.c: Removed. * sysdeps/generic/bits/stdio_lim.h: Removed. 1998-09-12 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de> * argp/argp-help.c: Fixup indentation. * nss/nss_files/files-alias.c: Quiet -Wparentheses warning. * resolv/nss_dns/dns-network.c: Likewise. * resolv/res_send.c: Likewise. * rt/aio_cancel.c: Likewise. * rt/aio_misc.c: Likewise. 1998-09-12 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de> * Makefile (install-symbolic-link): Remove the link list file at last. * Makerules (install-clean-symbolic-link-list): Removed. 1998-09-12 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de> * timezone/tst-timezone.c: Print time in UTC to get consistent output. 1998-09-12 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de> * elf/rtld.c (_dl_rpath): Removed. * elf/dl-support.c (_dl_path): Removed. * elf/Makefile ($(objpfx)ld.so): Don't pass -rpath. (CFLAGS-dl-support.c): Removed. * elf/dl-load.c (env_path_list): Renamed from fake_path_list. All uses changed. (_dl_init_paths): Always set env_path_list from LD_LIBRARY_PATH, instead of appending it to the main map's rpath info. (_dl_map_object): Consistently use LD_LIBRARY_PATH after all DT_RPATHs. This makes it effective again. (decompose_rpath): Remove second parameter, callers changed. (fillin_rpath): Allocate enough space in curwd. (expand_dynamic_string_token): Cope with get_origin returning -1. 1998-09-14 Thorsten Kukuk <kukuk@vt.uni-paderborn.de> * libc-work/nis/nss_compat/compat-pwd.c: Add support for passwd.adjunct. * nis/nss_nis/nis-pwd.c (_nss_nis_getpwent_r): Correct test for invalid password. 1998-09-13 18:06 Ulrich Drepper <drepper@cygnus.com> * locale/programs/locale.c: Update dates.
This commit is contained in:
parent
5d47ceca3f
commit
7ef90c1595
95
ChangeLog
95
ChangeLog
@ -1,3 +1,98 @@
|
||||
1998-09-14 11:26 Ulrich Drepper <drepper@cygnus.com>
|
||||
|
||||
* wcsmbs/wcsmbs-tst1.c: Include stdlib.h.
|
||||
|
||||
1998-09-14 Thorsten Kukuk <kukuk@vt.uni-paderborn.de>
|
||||
|
||||
* libc-work/nis/nss_nisplus/nisplus-service.c
|
||||
(_nss_nisplus_parse_servent): Convert port in network byte order.
|
||||
|
||||
1998-09-14 07:53 -0400 Zack Weinberg <zack@rabi.phys.columbia.edu>
|
||||
|
||||
* stdlib/stdlib.h: Add a switch, __need_malloc_and_calloc,
|
||||
to provide only malloc and calloc.
|
||||
* include/stdlib.h: Support the above.
|
||||
* string/bits/string2.h: Use __need_malloc_and_calloc when
|
||||
including stdlib.h.
|
||||
(__string2_1bptr_p): Avoid -Wbad-function-cast warnings.
|
||||
|
||||
* iconvdata/iso-2022-jp.c: Include <stdlib.h>.
|
||||
* iconvdata/iso646.c: Include <stdlib.h>.
|
||||
|
||||
1998-09-14 07:51 -0400 Zack Weinberg <zack@rabi.phys.columbia.edu>
|
||||
|
||||
* sunrpc/rpc_cout.c: Add braces around ambiguous else.
|
||||
* sysdeps/libm-ieee754/w_pow.c: Likewise.
|
||||
* sysdeps/libm-ieee754/w_powf.c: Likewise.
|
||||
* sysdeps/libm-ieee754/w_powl.c: Likewise.
|
||||
|
||||
1998-09-14 07:57 -0400 Zack Weinberg <zack@rabi.phys.columbia.edu>
|
||||
|
||||
* stdio-common/stdio_lim.h.in: New file. All parameters
|
||||
are adjustable at build time.
|
||||
* Rules: Add a rule to build bits/stdio_lim.h from
|
||||
stdio-common/stdio_lim.h.in. (It has to be in Rules so that
|
||||
all subdirectories know how to make the file. It can't be
|
||||
in Makerules because then it gets built at top level and the
|
||||
dependencies are wrong.)
|
||||
|
||||
* stdio-common/Makefile (distribute): Add stdio_lim.h.in.
|
||||
* sysdeps/unix/sysv/linux/Makefile: Delete rules to make
|
||||
stdio_lim.h.
|
||||
* sysdeps/unix/sysv/linux/stdio_lim.h.in: Removed.
|
||||
* sysdeps/unix/sysv/linux/Dist: Take out stdio_lim.h.in.
|
||||
* sysdeps/posix/Makefile: Removed.
|
||||
* sysdeps/posix/mk-stdiolim.c: Removed.
|
||||
* sysdeps/generic/bits/stdio_lim.h: Removed.
|
||||
|
||||
1998-09-12 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
|
||||
|
||||
* argp/argp-help.c: Fixup indentation.
|
||||
* nss/nss_files/files-alias.c: Quiet -Wparentheses warning.
|
||||
* resolv/nss_dns/dns-network.c: Likewise.
|
||||
* resolv/res_send.c: Likewise.
|
||||
* rt/aio_cancel.c: Likewise.
|
||||
* rt/aio_misc.c: Likewise.
|
||||
|
||||
1998-09-12 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
|
||||
|
||||
* Makefile (install-symbolic-link): Remove the link list file at last.
|
||||
* Makerules (install-clean-symbolic-link-list): Removed.
|
||||
|
||||
1998-09-12 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
|
||||
|
||||
* timezone/tst-timezone.c: Print time in UTC to get consistent
|
||||
output.
|
||||
|
||||
1998-09-12 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
|
||||
|
||||
* elf/rtld.c (_dl_rpath): Removed.
|
||||
* elf/dl-support.c (_dl_path): Removed.
|
||||
* elf/Makefile ($(objpfx)ld.so): Don't pass -rpath.
|
||||
(CFLAGS-dl-support.c): Removed.
|
||||
|
||||
* elf/dl-load.c (env_path_list): Renamed from fake_path_list. All
|
||||
uses changed.
|
||||
(_dl_init_paths): Always set env_path_list from LD_LIBRARY_PATH,
|
||||
instead of appending it to the main map's rpath info.
|
||||
(_dl_map_object): Consistently use LD_LIBRARY_PATH after all
|
||||
DT_RPATHs. This makes it effective again.
|
||||
(decompose_rpath): Remove second parameter, callers changed.
|
||||
(fillin_rpath): Allocate enough space in curwd.
|
||||
(expand_dynamic_string_token): Cope with get_origin returning -1.
|
||||
|
||||
1998-09-14 Thorsten Kukuk <kukuk@vt.uni-paderborn.de>
|
||||
|
||||
* libc-work/nis/nss_compat/compat-pwd.c: Add support for
|
||||
passwd.adjunct.
|
||||
|
||||
* nis/nss_nis/nis-pwd.c (_nss_nis_getpwent_r): Correct test for
|
||||
invalid password.
|
||||
|
||||
1998-09-13 18:06 Ulrich Drepper <drepper@cygnus.com>
|
||||
|
||||
* locale/programs/locale.c: Update dates.
|
||||
|
||||
1998-09-13 Mark Kettenis <kettenis@phys.uva.nl>
|
||||
|
||||
* sysdeps/generic/bits/types.h: Include <features.h>. Make sure
|
||||
|
1
Makefile
1
Makefile
@ -101,6 +101,7 @@ install: install-symbolic-link
|
||||
.PHONY: install-symbolic-link
|
||||
install-symbolic-link: subdir_install
|
||||
$(symbolic-link-prog) $(symbolic-link-list)
|
||||
rm -f $(symbolic-link-list)
|
||||
|
||||
install:
|
||||
-test ! -x $(common-objpfx)elf/ldconfig || \
|
||||
|
@ -651,14 +651,8 @@ endif
|
||||
|
||||
ifeq (no,$(cross-compiling))
|
||||
ifeq (yes,$(build-shared))
|
||||
# We need to clean the symbolic link list first.
|
||||
symbolic-link-prog := $(common-objpfx)elf/sln
|
||||
symbolic-link-list := $(common-objpfx)elf/symlink.list
|
||||
install: install-clean-symbolic-link-list
|
||||
.PHONY: install-clean-symbolic-link-list
|
||||
install-clean-symbolic-link-list:
|
||||
rm -f $(symbolic-link-list)
|
||||
|
||||
define make-shlib-link
|
||||
echo $(<F) $@ >> $(symbolic-link-list)
|
||||
endef
|
||||
|
44
Rules
44
Rules
@ -200,3 +200,47 @@ $(common-objpfx)dummy$o: $(common-objpfx)dummy.c $(before-compile);
|
||||
endef
|
||||
object-suffixes-left := $(object-suffixes)
|
||||
include $(o-iterator)
|
||||
|
||||
# There's no good place to put this - here will do.
|
||||
# The dependencies are wrong if it's run from the top level.
|
||||
ifeq ($(filter %posix, $(sysdirs)),)
|
||||
L_tmpnam = 1
|
||||
TMP_MAX = 0
|
||||
L_ctermid = 1
|
||||
L_cuserid = 1
|
||||
else
|
||||
L_tmpnam = 19
|
||||
TMP_MAX = 238328
|
||||
L_ctermid = 9
|
||||
L_cuserid = 9
|
||||
endif
|
||||
|
||||
$(common-objpfx)bits/stdio_%.h $(common-objpfx)bits/stdio_%.d: \
|
||||
$(..)stdio-common/stdio_%.h.in
|
||||
$(make-target-directory)
|
||||
echo '#include "$(..)posix/bits/posix1_lim.h"' | \
|
||||
SUNPRO_DEPENDENCIES='$(@:.h=.d)T MARKER' \
|
||||
$(CC) $(+includes) -E -dM -xc - -o $(@:.d=.h)T
|
||||
sed -e 's!MARKER!$(@:.h=.d) $(@:.d=.h)!' \
|
||||
-e 's!$(common-objpfx)!$$(common-objpfx)!g' \
|
||||
$(@:.h=.d)T > $(@:.h=.d)t && \
|
||||
mv -f $(@:.h=.d)t $(@:.h=.d)
|
||||
fopen_max=`sed -n 's/^#define OPEN_MAX //p' $(@:.d=.h)T`; \
|
||||
filename_max=`sed -n 's/^#define PATH_MAX //p' $(@:.d=.h)T`; \
|
||||
fopen_max=$${fopen_max:-16}; \
|
||||
filename_max=$${filename_max:-1024}; \
|
||||
sed -e "s/@FOPEN_MAX@/$$fopen_max/" \
|
||||
-e "s/@FILENAME_MAX@/$$filename_max/" \
|
||||
-e "s/@L_tmpnam@/$(L_tmpnam)/" \
|
||||
-e "s/@TMP_MAX@/$(TMP_MAX)/" \
|
||||
-e "s/@L_ctermid@/$(L_ctermid)/" \
|
||||
-e "s/@L_cuserid@/$(L_cuserid)/" \
|
||||
$< > $(@:.d=.h).new && \
|
||||
mv -f $(@:.d=.h).new $(@:.d=.h); \
|
||||
# Remove these last so that they can be examined if something went wrong.
|
||||
rm -f $(@:.d=.h)T $(@:.h=.d)T
|
||||
# Get dependencies.
|
||||
ifndef no_deps
|
||||
-include $(common-objpfx)bits/stdio_lim.d
|
||||
endif
|
||||
common-generated += bits/stdio_lim.h bits/stdio_lim.d
|
||||
|
@ -833,11 +833,12 @@ hol_append (struct hol *hol, struct hol *more)
|
||||
|
||||
__mempcpy (short_options, hol->short_options, hol_so_len);
|
||||
|
||||
/* Fix up the short options pointers from HOL. */
|
||||
/* Fix up the short options pointers from HOL. */
|
||||
for (e = entries, left = hol->num_entries; left > 0; e++, left--)
|
||||
e->short_options += (short_options - hol->short_options);
|
||||
|
||||
/* Now add the short options from MORE, fixing up its entries too. */
|
||||
/* Now add the short options from MORE, fixing up its entries
|
||||
too. */
|
||||
so = short_options + hol_so_len;
|
||||
more_so = more->short_options;
|
||||
for (left = more->num_entries; left > 0; e++, left--)
|
||||
@ -872,7 +873,7 @@ hol_append (struct hol *hol, struct hol *more)
|
||||
hol->num_entries = num_entries;
|
||||
hol->short_options = short_options;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
hol_free (more);
|
||||
}
|
||||
|
10
elf/Makefile
10
elf/Makefile
@ -116,13 +116,9 @@ endif
|
||||
|
||||
$(objpfx)ld.so: $(objpfx)librtld.os $(addprefix $(objpfx),$(rtld-ldscript)) \
|
||||
$(ld-map)
|
||||
$(LINK.o) -nostdlib -nostartfiles -shared -o $@ \
|
||||
-Wl,-rpath=$(default-rpath) $(LDFLAGS-rtld) \
|
||||
$(filter-out $(rtld-ldscript) $(map-file),$^) \
|
||||
$(load-map-file) -Wl,-soname=$(rtld-installed-name)
|
||||
|
||||
# The dl code in the static libc needs a default library path.
|
||||
CFLAGS-dl-support.c = -D'DEFAULT_RPATH="$(default-rpath)"'
|
||||
$(LINK.o) -nostdlib -nostartfiles -shared -o $@ $(LDFLAGS-rtld) \
|
||||
$(filter-out $(rtld-ldscript) $(map-file),$^) \
|
||||
$(load-map-file) -Wl,-soname=$(rtld-installed-name)
|
||||
|
||||
# interp.c exists just to get this string into the libraries.
|
||||
CFLAGS-interp.c = -D'RUNTIME_LINKER="$(slibdir)/$(rtld-installed-name)"'
|
||||
|
159
elf/dl-load.c
159
elf/dl-load.c
@ -99,9 +99,8 @@ size_t _dl_pagesize;
|
||||
extern const char *_dl_platform;
|
||||
extern size_t _dl_platformlen;
|
||||
|
||||
/* This is a fake list to store the RPATH information for static
|
||||
binaries. */
|
||||
static struct r_search_path_elem **fake_path_list;
|
||||
/* This is the decomposed LD_LIBRARY_PATH search path. */
|
||||
static struct r_search_path_elem **env_path_list;
|
||||
|
||||
/* List of the hardware capabilities we might end up using. */
|
||||
static const struct r_strlenpair *capstr;
|
||||
@ -175,7 +174,8 @@ expand_dynamic_string_token (struct link_map *l, const char *s)
|
||||
{
|
||||
assert (l->l_name[0] == '\0');
|
||||
l->l_origin = get_origin ();
|
||||
origin_len = l->l_origin ? strlen (l->l_origin) : 0;
|
||||
origin_len = (l->l_origin && l->l_origin != (char *) -1
|
||||
? strlen (l->l_origin) : 0);
|
||||
}
|
||||
else
|
||||
origin_len = l->l_origin == (char *) -1 ? 0 : strlen (l->l_origin);
|
||||
@ -293,8 +293,8 @@ fillin_rpath (char *rpath, struct r_search_path_elem **result, const char *sep,
|
||||
interpreted as `use the current directory'. */
|
||||
if (len == 0)
|
||||
{
|
||||
static char curwd[2];
|
||||
cp = strcpy (curwd, ".");
|
||||
static char curwd[] = "./";
|
||||
cp = curwd;
|
||||
}
|
||||
|
||||
/* Remove trailing slashes (except for "/"). */
|
||||
@ -388,7 +388,7 @@ fillin_rpath (char *rpath, struct r_search_path_elem **result, const char *sep,
|
||||
|
||||
static struct r_search_path_elem **
|
||||
internal_function
|
||||
decompose_rpath (const char *rpath, size_t additional_room, struct link_map *l)
|
||||
decompose_rpath (const char *rpath, struct link_map *l)
|
||||
{
|
||||
/* Make a copy we can work with. */
|
||||
const char *where = l->l_name;
|
||||
@ -410,7 +410,7 @@ decompose_rpath (const char *rpath, size_t additional_room, struct link_map *l)
|
||||
/* This object is on the list of objects for which the RPATH
|
||||
must not be used. */
|
||||
result = (struct r_search_path_elem **)
|
||||
malloc ((additional_room + 1) * sizeof (*result));
|
||||
malloc (sizeof (*result));
|
||||
if (result == NULL)
|
||||
_dl_signal_error (ENOMEM, NULL,
|
||||
"cannot create cache for search path");
|
||||
@ -433,10 +433,9 @@ decompose_rpath (const char *rpath, size_t additional_room, struct link_map *l)
|
||||
if (*cp == ':')
|
||||
++nelems;
|
||||
|
||||
/* Allocate room for the result. NELEMS + 1 + ADDITIONAL_ROOM is an upper
|
||||
limit for the number of necessary entries. */
|
||||
result = (struct r_search_path_elem **) malloc ((nelems + 1
|
||||
+ additional_room + 1)
|
||||
/* Allocate room for the result. NELEMS + 1 is an upper limit for the
|
||||
number of necessary entries. */
|
||||
result = (struct r_search_path_elem **) malloc ((nelems + 1 + 1)
|
||||
* sizeof (*result));
|
||||
if (result == NULL)
|
||||
_dl_signal_error (ENOMEM, NULL, "cannot create cache for search path");
|
||||
@ -458,32 +457,9 @@ _dl_init_paths (const char *llp)
|
||||
struct r_search_path_elem *pelem, **aelem;
|
||||
size_t round_size;
|
||||
|
||||
#ifdef PIC
|
||||
/* We have in `search_path' the information about the RPATH of the
|
||||
dynamic loader. Now fill in the information about the applications
|
||||
RPATH and the directories addressed by the LD_LIBRARY_PATH environment
|
||||
variable. */
|
||||
/* Fill in the information about the application's RPATH and the
|
||||
directories addressed by the LD_LIBRARY_PATH environment variable. */
|
||||
struct link_map *l;
|
||||
#endif
|
||||
|
||||
/* Number of elements in the library path. */
|
||||
size_t nllp;
|
||||
|
||||
/* First determine how many elements the LD_LIBRARY_PATH contents has. */
|
||||
if (llp != NULL && *llp != '\0')
|
||||
{
|
||||
/* Simply count the number of colons. */
|
||||
const char *cp = llp;
|
||||
nllp = 1;
|
||||
while (*cp)
|
||||
{
|
||||
if (*cp == ':' || *cp == ';')
|
||||
++nllp;
|
||||
++cp;
|
||||
}
|
||||
}
|
||||
else
|
||||
nllp = 0;
|
||||
|
||||
/* Get the capabilities. */
|
||||
capstr = _dl_important_hwcaps (_dl_platform, _dl_platformlen,
|
||||
@ -533,81 +509,44 @@ _dl_init_paths (const char *llp)
|
||||
l = _dl_loaded;
|
||||
if (l != NULL)
|
||||
{
|
||||
/* We should never get here when initializing in a static application.
|
||||
If this is a dynamically linked application _dl_loaded always
|
||||
points to the main map which is not dlopen()ed. */
|
||||
assert (l->l_type != lt_loaded);
|
||||
|
||||
if (l->l_info[DT_RPATH])
|
||||
{
|
||||
/* Allocate room for the search path and fill in information
|
||||
from RPATH. */
|
||||
l->l_rpath_dirs =
|
||||
decompose_rpath ((const char *)
|
||||
(l->l_addr + l->l_info[DT_STRTAB]->d_un.d_ptr
|
||||
+ l->l_info[DT_RPATH]->d_un.d_val),
|
||||
nllp, l);
|
||||
}
|
||||
/* Allocate room for the search path and fill in information
|
||||
from RPATH. */
|
||||
l->l_rpath_dirs =
|
||||
decompose_rpath ((const char *)
|
||||
(l->l_addr + l->l_info[DT_STRTAB]->d_un.d_ptr
|
||||
+ l->l_info[DT_RPATH]->d_un.d_val), l);
|
||||
else
|
||||
{
|
||||
/* If we have no LD_LIBRARY_PATH and no RPATH we must tell
|
||||
this somehow to prevent we look this up again and again. */
|
||||
if (nllp == 0)
|
||||
l->l_rpath_dirs = (struct r_search_path_elem **) -1l;
|
||||
else
|
||||
{
|
||||
l->l_rpath_dirs = (struct r_search_path_elem **)
|
||||
malloc ((nllp + 1) * sizeof (*l->l_rpath_dirs));
|
||||
if (l->l_rpath_dirs == NULL)
|
||||
_dl_signal_error (ENOMEM, NULL,
|
||||
"cannot create cache for search path");
|
||||
l->l_rpath_dirs[0] = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
/* We don't need to search the list of fake entries which is searched
|
||||
when no dynamic objects were loaded at this time. */
|
||||
fake_path_list = NULL;
|
||||
|
||||
if (nllp > 0)
|
||||
{
|
||||
char *copy = local_strdup (llp);
|
||||
|
||||
/* Decompose the LD_LIBRARY_PATH and fill in the result.
|
||||
First search for the next place to enter elements. */
|
||||
struct r_search_path_elem **result = l->l_rpath_dirs;
|
||||
while (*result != NULL)
|
||||
++result;
|
||||
|
||||
/* We need to take care that the LD_LIBRARY_PATH environment
|
||||
variable can contain a semicolon. */
|
||||
(void) fillin_rpath (copy, result, ":;",
|
||||
__libc_enable_secure ? system_dirs : NULL,
|
||||
"LD_LIBRARY_PATH", NULL);
|
||||
}
|
||||
l->l_rpath_dirs = NULL;
|
||||
}
|
||||
else
|
||||
#endif /* PIC */
|
||||
|
||||
if (llp != NULL && *llp != '\0')
|
||||
{
|
||||
/* This is a statically linked program but we still have to take
|
||||
care for the LD_LIBRARY_PATH environment variable. We use a fake
|
||||
link_map entry. This will only contain the l_rpath_dirs
|
||||
information. */
|
||||
size_t nllp;
|
||||
const char *cp = llp;
|
||||
|
||||
if (nllp == 0)
|
||||
fake_path_list = NULL;
|
||||
else
|
||||
/* Decompose the LD_LIBRARY_PATH contents. First determine how many
|
||||
elements it has. */
|
||||
nllp = 1;
|
||||
while (*cp)
|
||||
{
|
||||
fake_path_list = (struct r_search_path_elem **)
|
||||
malloc ((nllp + 1) * sizeof (struct r_search_path_elem *));
|
||||
if (fake_path_list == NULL)
|
||||
_dl_signal_error (ENOMEM, NULL,
|
||||
"cannot create cache for search path");
|
||||
|
||||
(void) fillin_rpath (local_strdup (llp), fake_path_list, ":;",
|
||||
__libc_enable_secure ? system_dirs : NULL,
|
||||
"LD_LIBRARY_PATH", NULL);
|
||||
if (*cp == ':' || *cp == ';')
|
||||
++nllp;
|
||||
++cp;
|
||||
}
|
||||
|
||||
env_path_list = (struct r_search_path_elem **)
|
||||
malloc ((nllp + 1) * sizeof (struct r_search_path_elem *));
|
||||
if (env_path_list == NULL)
|
||||
_dl_signal_error (ENOMEM, NULL,
|
||||
"cannot create cache for search path");
|
||||
|
||||
(void) fillin_rpath (local_strdup (llp), env_path_list, ":;",
|
||||
__libc_enable_secure ? system_dirs : NULL,
|
||||
"LD_LIBRARY_PATH", NULL);
|
||||
}
|
||||
}
|
||||
|
||||
@ -1243,25 +1182,23 @@ _dl_map_object (struct link_map *loader, const char *name, int preloaded,
|
||||
+ l->l_info[DT_STRTAB]->d_un.d_ptr
|
||||
+ l->l_info[DT_RPATH]->d_un.d_val);
|
||||
l->l_rpath_dirs =
|
||||
decompose_rpath ((const char *) ptrval, 0, l);
|
||||
decompose_rpath ((const char *) ptrval, l);
|
||||
}
|
||||
|
||||
if (l->l_rpath_dirs != (struct r_search_path_elem **) -1l)
|
||||
if (l->l_rpath_dirs != NULL)
|
||||
fd = open_path (name, namelen, preloaded, l->l_rpath_dirs,
|
||||
&realname);
|
||||
}
|
||||
|
||||
/* If dynamically linked, try the DT_RPATH of the executable itself
|
||||
and the LD_LIBRARY_PATH environment variable. */
|
||||
/* If dynamically linked, try the DT_RPATH of the executable itself. */
|
||||
l = _dl_loaded;
|
||||
if (fd == -1 && l && l->l_type != lt_loaded && l != loader
|
||||
&& l->l_rpath_dirs != (struct r_search_path_elem **) -1l)
|
||||
&& l->l_rpath_dirs != NULL)
|
||||
fd = open_path (name, namelen, preloaded, l->l_rpath_dirs, &realname);
|
||||
|
||||
/* This is used if a static binary uses dynamic loading and there
|
||||
is a LD_LIBRARY_PATH given. */
|
||||
if (fd == -1 && fake_path_list != NULL)
|
||||
fd = open_path (name, namelen, preloaded, fake_path_list, &realname);
|
||||
/* Try the LD_LIBRARY_PATH environment variable. */
|
||||
if (fd == -1 && env_path_list != NULL)
|
||||
fd = open_path (name, namelen, preloaded, env_path_list, &realname);
|
||||
|
||||
if (fd == -1)
|
||||
{
|
||||
|
@ -29,10 +29,6 @@
|
||||
extern char *__progname;
|
||||
char **_dl_argv = &__progname; /* This is checked for some error messages. */
|
||||
|
||||
/* This defines the default search path for libraries.
|
||||
For the dynamic linker it is set by -rpath when linking. */
|
||||
const char *_dl_rpath = DEFAULT_RPATH;
|
||||
|
||||
/* Name of the architecture. */
|
||||
const char *_dl_platform;
|
||||
size_t _dl_platformlen;
|
||||
|
10
elf/rtld.c
10
elf/rtld.c
@ -69,7 +69,6 @@ static void process_envvars (enum mode *modep, int *lazyp);
|
||||
int _dl_argc;
|
||||
char **_dl_argv;
|
||||
unsigned int _dl_skip_args; /* Nonzero if we were run directly. */
|
||||
const char *_dl_rpath;
|
||||
int _dl_verbose;
|
||||
const char *_dl_platform;
|
||||
size_t _dl_platformlen;
|
||||
@ -164,15 +163,6 @@ _dl_start (void *arg)
|
||||
sizeof _dl_rtld_map.l_info);
|
||||
_dl_setup_hash (&_dl_rtld_map);
|
||||
|
||||
/* Cache the DT_RPATH stored in ld.so itself; this will be
|
||||
the default search path. */
|
||||
if (_dl_rtld_map.l_info[DT_STRTAB] && _dl_rtld_map.l_info[DT_RPATH])
|
||||
{
|
||||
_dl_rpath = (void *) (_dl_rtld_map.l_addr +
|
||||
_dl_rtld_map.l_info[DT_STRTAB]->d_un.d_ptr +
|
||||
_dl_rtld_map.l_info[DT_RPATH]->d_un.d_val);
|
||||
}
|
||||
|
||||
/* Don't bother trying to work out how ld.so is mapped in memory. */
|
||||
_dl_rtld_map.l_map_start = ~0;
|
||||
_dl_rtld_map.l_map_end = ~0;
|
||||
|
@ -20,6 +20,7 @@
|
||||
|
||||
#include <gconv.h>
|
||||
#include <stdint.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include "jis0201.h"
|
||||
#include "jis0208.h"
|
||||
|
@ -33,6 +33,7 @@
|
||||
|
||||
#include <gconv.h>
|
||||
#include <stdint.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
|
||||
/* Definitions used in the body of the `gconv' function. */
|
||||
|
@ -1,7 +1,13 @@
|
||||
#ifndef _STDLIB_H
|
||||
|
||||
#ifdef __need_malloc_and_calloc
|
||||
#define __Need_M_And_C
|
||||
#endif
|
||||
|
||||
#include <stdlib/stdlib.h>
|
||||
|
||||
/* Now define the internal interfaces. */
|
||||
#ifndef __Need_M_And_C
|
||||
extern int32_t __random __P ((void));
|
||||
extern void __srandom __P ((unsigned int __seed));
|
||||
extern __ptr_t __initstate __P ((unsigned int __seed, __ptr_t __statebuf,
|
||||
@ -41,3 +47,6 @@ extern char *__realpath __P ((__const char *__name, char *__resolved));
|
||||
extern int __ptsname_r __P ((int __fd, char *__buf, size_t __buflen));
|
||||
extern int __getpt __P ((void));
|
||||
#endif
|
||||
#undef __Need_M_And_C
|
||||
|
||||
#endif /* include/stdlib.h */
|
||||
|
@ -1,5 +1,5 @@
|
||||
/* Implementation of the locale program according to POSIX 9945-2.
|
||||
Copyright (C) 1995, 1996, 1997 Free Software Foundation, Inc.
|
||||
Copyright (C) 1995, 1996, 1997, 1998 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
Contributed by Ulrich Drepper <drepper@gnu.ai.mit.edu>, 1995.
|
||||
|
||||
@ -268,7 +268,7 @@ print_version (FILE *stream, struct argp_state *state)
|
||||
Copyright (C) %s Free Software Foundation, Inc.\n\
|
||||
This is free software; see the source for copying conditions. There is NO\n\
|
||||
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n\
|
||||
"), "1995, 1996, 1997");
|
||||
"), "1995, 1996, 1997, 1998");
|
||||
fprintf (stream, gettext ("Written by %s.\n"), "Ulrich Drepper");
|
||||
}
|
||||
|
||||
|
@ -185,6 +185,62 @@ copy_pwd_changes (struct passwd *dest, struct passwd *src,
|
||||
}
|
||||
}
|
||||
|
||||
static enum nss_status
|
||||
insert_passwd_adjunct (char **result, int *len, char *domain, int *errnop)
|
||||
{
|
||||
char *p1, *p2, *result2, *res;
|
||||
int len2;
|
||||
size_t namelen;
|
||||
|
||||
/* Check for adjunct style secret passwords. They can be
|
||||
recognized by a password starting with "##". */
|
||||
p1 = strchr (*result, ':');
|
||||
if (p1 == NULL || p1[1] != '#' || p1[2] != '#')
|
||||
return NSS_STATUS_SUCCESS;
|
||||
p2 = strchr (p1 + 3, ':');
|
||||
|
||||
namelen = p2 - p1 - 3;
|
||||
|
||||
if (yp_match (domain, "passwd.adjunct.byname", &p1[3], namelen,
|
||||
&result2, &len2) == YPERR_SUCCESS)
|
||||
{
|
||||
/* We found a passwd.adjunct entry. Merge encrypted
|
||||
password therein into original result. */
|
||||
char *encrypted = strchr (result2, ':');
|
||||
char *endp;
|
||||
size_t restlen;
|
||||
|
||||
if (encrypted == NULL || (endp = strchr (++encrypted, ':')) == NULL)
|
||||
{
|
||||
/* Invalid format of the entry. This never should happen
|
||||
unless the data from which the NIS table is generated is
|
||||
wrong. We simply ignore it. */
|
||||
free (result2);
|
||||
return NSS_STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
restlen = *len - (p2 - *result);
|
||||
if ((res = malloc (namelen + restlen + (endp - encrypted) + 2)) == NULL)
|
||||
{
|
||||
free (result2);
|
||||
*errnop = ENOMEM;
|
||||
return NSS_STATUS_TRYAGAIN;
|
||||
}
|
||||
|
||||
__mempcpy (__mempcpy (__mempcpy (__mempcpy
|
||||
(res, *result, (p1 - *result)),
|
||||
":", 1),
|
||||
encrypted, endp - encrypted),
|
||||
p2, restlen + 1);
|
||||
|
||||
free (result2);
|
||||
free (*result);
|
||||
*result = res;
|
||||
*len = strlen (res);
|
||||
}
|
||||
return NSS_STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
static enum nss_status
|
||||
internal_setpwent (ent_t *ent)
|
||||
{
|
||||
@ -403,6 +459,13 @@ getpwent_next_nis_netgr (const char *name, struct passwd *result, ent_t *ent,
|
||||
!= YPERR_SUCCESS)
|
||||
continue;
|
||||
|
||||
if (insert_passwd_adjunct (&outval, &outvallen, ypdomain, errnop)
|
||||
!= NSS_STATUS_SUCCESS)
|
||||
{
|
||||
free (outval);
|
||||
return NSS_STATUS_TRYAGAIN;
|
||||
}
|
||||
|
||||
p2len = pwd_need_buflen (&ent->pwd);
|
||||
if (p2len > buflen)
|
||||
{
|
||||
@ -659,6 +722,13 @@ getpwent_next_nis (struct passwd *result, ent_t *ent, char *buffer,
|
||||
return NSS_STATUS_UNAVAIL;
|
||||
}
|
||||
|
||||
if (insert_passwd_adjunct (&outval, &outvallen, domain, errnop) !=
|
||||
NSS_STATUS_SUCCESS)
|
||||
{
|
||||
free (outval);
|
||||
return NSS_STATUS_TRYAGAIN;
|
||||
}
|
||||
|
||||
if (buflen < ((size_t) outvallen + 1))
|
||||
{
|
||||
free (outval);
|
||||
@ -685,6 +755,13 @@ getpwent_next_nis (struct passwd *result, ent_t *ent, char *buffer,
|
||||
return NSS_STATUS_NOTFOUND;
|
||||
}
|
||||
|
||||
if (insert_passwd_adjunct (&outval, &outvallen, domain, errnop)
|
||||
!= NSS_STATUS_SUCCESS)
|
||||
{
|
||||
free (outval);
|
||||
return NSS_STATUS_TRYAGAIN;
|
||||
}
|
||||
|
||||
if (buflen < ((size_t) outvallen + 1))
|
||||
{
|
||||
free (outval);
|
||||
@ -796,6 +873,13 @@ getpwnam_plususer (const char *name, struct passwd *result, char *buffer,
|
||||
return NSS_STATUS_NOTFOUND;
|
||||
}
|
||||
|
||||
if (insert_passwd_adjunct (&outval, &outvallen, domain, errnop)
|
||||
!= NSS_STATUS_SUCCESS)
|
||||
{
|
||||
free (outval);
|
||||
return NSS_STATUS_TRYAGAIN;
|
||||
}
|
||||
|
||||
if (buflen < ((size_t) outvallen + 1))
|
||||
{
|
||||
free (outval);
|
||||
@ -1307,7 +1391,14 @@ getpwuid_plususer (uid_t uid, struct passwd *result, char *buffer,
|
||||
return NSS_STATUS_TRYAGAIN;
|
||||
}
|
||||
|
||||
if ( buflen < ((size_t) outvallen + 1))
|
||||
if (insert_passwd_adjunct (&outval, &outvallen, domain, errnop)
|
||||
!= NSS_STATUS_SUCCESS)
|
||||
{
|
||||
free (outval);
|
||||
return NSS_STATUS_TRYAGAIN;
|
||||
}
|
||||
|
||||
if (buflen < ((size_t) outvallen + 1))
|
||||
{
|
||||
free (outval);
|
||||
*errnop = ERANGE;
|
||||
|
@ -128,7 +128,7 @@ internal_nis_getpwent_r (struct passwd *pwd, char *buffer, size_t buflen,
|
||||
char *endp;
|
||||
size_t restlen;
|
||||
|
||||
if (encrypted != NULL
|
||||
if (encrypted == NULL
|
||||
|| (endp = strchr (++encrypted, ':')) == NULL
|
||||
|| (p = strchr (p + 1, ':')) == NULL)
|
||||
{
|
||||
|
@ -80,7 +80,7 @@ _nss_nisplus_parse_servent (nis_result *result, struct servent *serv,
|
||||
room_left -= strlen (first_unused) + 1;
|
||||
first_unused += strlen (first_unused) + 1;
|
||||
|
||||
serv->s_port = atoi (NISENTRYVAL (0, 3, result));
|
||||
serv->s_port = htons (atoi (NISENTRYVAL (0, 3, result)));
|
||||
p = first_unused;
|
||||
|
||||
line = p;
|
||||
|
@ -382,10 +382,12 @@ _nss_files_getaliasent_r (struct aliasent *result, char *buffer, size_t buflen,
|
||||
/* If the last use was not by the getent function we need the
|
||||
position the stream. */
|
||||
if (last_use != getent)
|
||||
if (fsetpos (stream, &position) < 0)
|
||||
status = NSS_STATUS_UNAVAIL;
|
||||
else
|
||||
last_use = getent;
|
||||
{
|
||||
if (fsetpos (stream, &position) < 0)
|
||||
status = NSS_STATUS_UNAVAIL;
|
||||
else
|
||||
last_use = getent;
|
||||
}
|
||||
|
||||
if (status == NSS_STATUS_SUCCESS)
|
||||
{
|
||||
|
@ -231,19 +231,21 @@ getanswer_r (const querybuf *answer, int anslen, struct netent *result,
|
||||
char *ans;
|
||||
|
||||
if (question_count == 0)
|
||||
/* FIXME: the Sun version uses for host name lookup an additional
|
||||
parameter for pointing to h_errno. this is missing here.
|
||||
OSF/1 has a per-thread h_errno variable. */
|
||||
if (header_pointer->aa != 0)
|
||||
{
|
||||
__set_h_errno (HOST_NOT_FOUND);
|
||||
return NSS_STATUS_NOTFOUND;
|
||||
}
|
||||
else
|
||||
{
|
||||
__set_h_errno (TRY_AGAIN);
|
||||
return NSS_STATUS_TRYAGAIN;
|
||||
}
|
||||
{
|
||||
/* FIXME: the Sun version uses for host name lookup an additional
|
||||
parameter for pointing to h_errno. this is missing here.
|
||||
OSF/1 has a per-thread h_errno variable. */
|
||||
if (header_pointer->aa != 0)
|
||||
{
|
||||
__set_h_errno (HOST_NOT_FOUND);
|
||||
return NSS_STATUS_NOTFOUND;
|
||||
}
|
||||
else
|
||||
{
|
||||
__set_h_errno (TRY_AGAIN);
|
||||
return NSS_STATUS_TRYAGAIN;
|
||||
}
|
||||
}
|
||||
|
||||
/* Skip the question part. */
|
||||
while (question_count-- > 0)
|
||||
|
@ -782,12 +782,12 @@ read_len:
|
||||
} /*foreach ns*/
|
||||
} /*foreach retry*/
|
||||
res_close();
|
||||
if (!v_circuit)
|
||||
if (!v_circuit) {
|
||||
if (!gotsomewhere)
|
||||
__set_errno (ECONNREFUSED); /* no nameservers found */
|
||||
else
|
||||
__set_errno (ETIMEDOUT); /* no answer obtained */
|
||||
else
|
||||
} else
|
||||
__set_errno (terrno);
|
||||
return (-1);
|
||||
}
|
||||
|
@ -106,24 +106,26 @@ aio_cancel (fildes, aiocbp)
|
||||
/* If any request is worked on by a thread it must be the first.
|
||||
So either we can delete all requests or all but the first. */
|
||||
if (req != NULL)
|
||||
if (req->running == allocated)
|
||||
{
|
||||
struct requestlist *old = req;
|
||||
req = req->next_prio;
|
||||
old->next_prio = NULL;
|
||||
{
|
||||
if (req->running == allocated)
|
||||
{
|
||||
struct requestlist *old = req;
|
||||
req = req->next_prio;
|
||||
old->next_prio = NULL;
|
||||
|
||||
result = AIO_NOTCANCELED;
|
||||
}
|
||||
else
|
||||
{
|
||||
/* Remove entry from the file descriptor list. */
|
||||
if (req->last_fd != NULL)
|
||||
req->last_fd->next_fd = req->next_fd;
|
||||
if (req->next_fd != NULL)
|
||||
req->next_fd->last_fd = req->last_fd;
|
||||
result = AIO_NOTCANCELED;
|
||||
}
|
||||
else
|
||||
{
|
||||
/* Remove entry from the file descriptor list. */
|
||||
if (req->last_fd != NULL)
|
||||
req->last_fd->next_fd = req->next_fd;
|
||||
if (req->next_fd != NULL)
|
||||
req->next_fd->last_fd = req->last_fd;
|
||||
|
||||
result = AIO_CANCELED;
|
||||
}
|
||||
result = AIO_CANCELED;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* Mark requests as canceled and send signal. */
|
||||
|
@ -162,11 +162,13 @@ __aio_find_req (aiocb_union *elem)
|
||||
runp = runp->next_fd;
|
||||
|
||||
if (runp != NULL)
|
||||
if (runp->aiocbp->aiocb.aio_fildes != fildes)
|
||||
runp = NULL;
|
||||
else
|
||||
while (runp != NULL && runp->aiocbp != elem)
|
||||
runp = runp->next_prio;
|
||||
{
|
||||
if (runp->aiocbp->aiocb.aio_fildes != fildes)
|
||||
runp = NULL;
|
||||
else
|
||||
while (runp != NULL && runp->aiocbp != elem)
|
||||
runp = runp->next_prio;
|
||||
}
|
||||
|
||||
return runp;
|
||||
}
|
||||
|
@ -37,7 +37,7 @@ routines := \
|
||||
lockfile
|
||||
|
||||
aux := errlist siglist
|
||||
distribute := _itoa.h printf-parse.h
|
||||
distribute := _itoa.h printf-parse.h stdio_lim.h.in
|
||||
|
||||
tests := tst-printf tstscanf test_rdwr test-popen tstgetln test-fseek \
|
||||
temptest tst-fileno test-fwrite tst-ungetc tst-ferror \
|
||||
@ -46,7 +46,6 @@ tests := tst-printf tstscanf test_rdwr test-popen tstgetln test-fseek \
|
||||
tfformat tiformat tstdiomisc tst-printfsz tst-wc-printf \
|
||||
scanf1 scanf2 scanf3 scanf4 scanf5 scanf7 scanf8 scanf9 scanf10
|
||||
|
||||
|
||||
include ../Rules
|
||||
|
||||
CFLAGS-vfprintf.c = -Wno-uninitialized
|
||||
|
@ -1,5 +1,4 @@
|
||||
/* Stdio limits for non-POSIX systems.
|
||||
Copyright (C) 1994, 1997 Free Software Foundation, Inc.
|
||||
/* Copyright (C) 1994, 1997, 1998 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
|
||||
The GNU C Library is free software; you can redistribute it and/or
|
||||
@ -21,20 +20,18 @@
|
||||
# error "Never include <bits/stdio_lim.h> directly; use <stdio.h> instead."
|
||||
#endif
|
||||
|
||||
#ifndef __need_FOPEN_MAX
|
||||
# define L_tmpnam 1
|
||||
# define TMP_MAX 0
|
||||
#ifdef _STDIO_H
|
||||
# define L_tmpnam @L_tmpnam@
|
||||
# define TMP_MAX @TMP_MAX@
|
||||
# define FILENAME_MAX @FILENAME_MAX@
|
||||
|
||||
# ifdef __USE_POSIX
|
||||
# define L_ctermid 1
|
||||
# define L_cuserid 1
|
||||
# define L_ctermid @L_ctermid@
|
||||
# define L_cuserid @L_cuserid@
|
||||
# endif
|
||||
|
||||
# define FILENAME_MAX 14
|
||||
#endif
|
||||
|
||||
#if defined __need_FOPEN_MAX && !defined __defined_FOPEN_MAX
|
||||
# define __defined_FOPEN_MAX
|
||||
# define FOPEN_MAX 16
|
||||
#if defined __need_FOPEN_MAX || defined _STDIO_H
|
||||
# undef FOPEN_MAX
|
||||
# define FOPEN_MAX @FOPEN_MAX@
|
||||
#endif
|
||||
#undef __need_FOPEN_MAX
|
@ -21,18 +21,22 @@
|
||||
*/
|
||||
|
||||
#ifndef _STDLIB_H
|
||||
#define _STDLIB_H 1
|
||||
|
||||
#include <features.h>
|
||||
|
||||
/* Get size_t, wchar_t and NULL from <stddef.h>. */
|
||||
#define __need_size_t
|
||||
#define __need_wchar_t
|
||||
#define __need_NULL
|
||||
#define __need_size_t
|
||||
#ifndef __need_malloc_and_calloc
|
||||
# define __need_wchar_t
|
||||
# define __need_NULL
|
||||
#endif
|
||||
#include <stddef.h>
|
||||
|
||||
__BEGIN_DECLS
|
||||
|
||||
#ifndef __need_malloc_and_calloc
|
||||
#define _STDLIB_H 1
|
||||
|
||||
/* Returned by `div'. */
|
||||
typedef struct
|
||||
{
|
||||
@ -440,14 +444,20 @@ extern int lcong48_r __P ((unsigned short int __param[7],
|
||||
# endif /* Use misc. */
|
||||
#endif /* Use SVID or X/Open. */
|
||||
|
||||
#endif /* don't just need malloc and calloc */
|
||||
|
||||
#ifndef __malloc_and_calloc_defined
|
||||
#define __malloc_and_calloc_defined
|
||||
/* Allocate SIZE bytes of memory. */
|
||||
extern __ptr_t malloc __P ((size_t __size));
|
||||
/* Allocate NMEMB elements of SIZE bytes each, all initialized to 0. */
|
||||
extern __ptr_t calloc __P ((size_t __nmemb, size_t __size));
|
||||
#endif
|
||||
|
||||
#ifndef __need_malloc_and_calloc
|
||||
/* Re-allocate the previously allocated block
|
||||
in __ptr_t, making the new block SIZE bytes long. */
|
||||
extern __ptr_t realloc __P ((__ptr_t __ptr, size_t __size));
|
||||
/* Allocate NMEMB elements of SIZE bytes each, all initialized to 0. */
|
||||
extern __ptr_t calloc __P ((size_t __nmemb, size_t __size));
|
||||
/* Free a block allocated by `malloc', `realloc' or `calloc'. */
|
||||
extern void free __P ((__ptr_t __ptr));
|
||||
|
||||
@ -720,6 +730,9 @@ extern int ptsname_r __P ((int __fd, char *__buf, size_t __buflen));
|
||||
extern int getpt __P ((void));
|
||||
#endif
|
||||
|
||||
#endif /* don't just need malloc and calloc */
|
||||
#undef __need_malloc_and_calloc
|
||||
|
||||
__END_DECLS
|
||||
|
||||
#endif /* stdlib.h */
|
||||
|
@ -85,11 +85,12 @@ __STRING2_COPY_TYPE (8);
|
||||
# undef __STRING2_COPY_TYPE
|
||||
#endif
|
||||
|
||||
/* Dereferencing a pointer arg to run sizeof on it fails for the
|
||||
void pointer case, so we use this instead. Note that the argument
|
||||
must not contain any side effects. */
|
||||
#define __string2_1bptr_p(x) (((size_t) ((x) + 1) - (size_t) (x)) == 1)
|
||||
|
||||
/* Dereferencing a pointer arg to run sizeof on it fails for the void
|
||||
pointer case, so we use this instead.
|
||||
Note that __x is evaluated twice. */
|
||||
#define __string2_1bptr_p(__x) \
|
||||
(({ const void *__a, *__b; __a = (__x) + 1; __b = (__x); \
|
||||
(size_t)__a - (size_t)__b; }) == 1)
|
||||
|
||||
/* Set N bytes of S to C. */
|
||||
#ifndef _HAVE_STRING_ARCH_memset
|
||||
@ -862,12 +863,17 @@ __strsep_g (char **__s, __const char *__reject)
|
||||
# endif
|
||||
#endif
|
||||
|
||||
/* We need the memory allocation functions for inline strdup().
|
||||
Referring to stdlib.h (even minimally) is not allowed if
|
||||
__STRICT_ANSI__. */
|
||||
#ifndef __STRICT_ANSI__
|
||||
|
||||
#if !defined _HAVE_STRING_ARCH_strdup && !defined __STRICT_ANSI__
|
||||
|
||||
/* We need the memory allocation functions. Including this header is
|
||||
not allowed. */
|
||||
#if !defined _HAVE_STRING_ARCH_strdup || !defined _HAVE_STRING_ARCH_strndup
|
||||
# define __need_malloc_and_calloc
|
||||
# include <stdlib.h>
|
||||
#endif
|
||||
|
||||
#ifndef _HAVE_STRING_ARCH_strdup
|
||||
|
||||
# define __strdup(s) \
|
||||
(__extension__ (__builtin_constant_p (s) && __string2_1bptr_p (s) \
|
||||
@ -885,12 +891,7 @@ __strsep_g (char **__s, __const char *__reject)
|
||||
# endif
|
||||
#endif
|
||||
|
||||
|
||||
#if !defined _HAVE_STRING_ARCH_strndup && !defined __STRICT_ANSI__
|
||||
|
||||
/* We need the memory allocation functions. Including this header is
|
||||
not allowed. */
|
||||
# include <stdlib.h>
|
||||
#ifndef _HAVE_STRING_ARCH_strndup
|
||||
|
||||
# define __strndup(s, n) \
|
||||
(__extension__ (__builtin_constant_p (s) && __string2_1bptr_p (s) \
|
||||
@ -916,6 +917,7 @@ __strsep_g (char **__s, __const char *__reject)
|
||||
# endif
|
||||
#endif
|
||||
|
||||
#endif /* Strict ANSI */
|
||||
|
||||
#undef __STRING_INLINE
|
||||
|
||||
|
@ -453,8 +453,8 @@ inline_struct (definition *def, int flag)
|
||||
if (flag == PUT)
|
||||
f_print (fout, "\n\tif (xdrs->x_op == XDR_ENCODE) {\n");
|
||||
else
|
||||
f_print(fout,
|
||||
"\t\treturn TRUE;\n\t} else if (xdrs->x_op == XDR_DECODE) {\n");
|
||||
f_print (fout,
|
||||
"\t\treturn TRUE;\n\t} else if (xdrs->x_op == XDR_DECODE) {\n");
|
||||
|
||||
i = 0;
|
||||
size = 0;
|
||||
@ -506,49 +506,51 @@ inline_struct (definition *def, int flag)
|
||||
else
|
||||
{
|
||||
if (i > 0)
|
||||
if (sizestr == NULL && size < inlineflag)
|
||||
{
|
||||
/* don't expand into inline code if size < inlineflag */
|
||||
while (cur != dl)
|
||||
{
|
||||
print_stat (indent + 1, &cur->decl);
|
||||
cur = cur->next;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
/* were already looking at a xdr_inlineable structure */
|
||||
tabify (fout, indent + 1);
|
||||
if (sizestr == NULL)
|
||||
f_print (fout, "buf = XDR_INLINE (xdrs, %d * BYTES_PER_XDR_UNIT);", size);
|
||||
else if (size == 0)
|
||||
f_print (fout,
|
||||
"buf = XDR_INLINE (xdrs, %s * BYTES_PER_XDR_UNIT);",
|
||||
sizestr);
|
||||
else
|
||||
f_print (fout,
|
||||
"buf = XDR_INLINE(xdrs, (%d + (%s)) * BYTES_PER_XDR_UNIT);",
|
||||
size, sizestr);
|
||||
f_print (fout, "\n");
|
||||
tabify (fout, indent + 1);
|
||||
fprintf (fout, "if (buf == NULL) {\n");
|
||||
psav = cur;
|
||||
while (cur != dl)
|
||||
{
|
||||
print_stat (indent + 2, &cur->decl);
|
||||
cur = cur->next;
|
||||
}
|
||||
{
|
||||
if (sizestr == NULL && size < inlineflag)
|
||||
{
|
||||
/* don't expand into inline code if size < inlineflag */
|
||||
while (cur != dl)
|
||||
{
|
||||
print_stat (indent + 1, &cur->decl);
|
||||
cur = cur->next;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
/* were already looking at a xdr_inlineable structure */
|
||||
tabify (fout, indent + 1);
|
||||
if (sizestr == NULL)
|
||||
f_print (fout, "buf = XDR_INLINE (xdrs, %d * BYTES_PER_XDR_UNIT);", size);
|
||||
else if (size == 0)
|
||||
f_print (fout,
|
||||
"buf = XDR_INLINE (xdrs, %s * BYTES_PER_XDR_UNIT);",
|
||||
sizestr);
|
||||
else
|
||||
f_print (fout,
|
||||
"buf = XDR_INLINE(xdrs, (%d + (%s)) * BYTES_PER_XDR_UNIT);",
|
||||
size, sizestr);
|
||||
f_print (fout, "\n");
|
||||
tabify (fout, indent + 1);
|
||||
fprintf (fout, "if (buf == NULL) {\n");
|
||||
psav = cur;
|
||||
while (cur != dl)
|
||||
{
|
||||
print_stat (indent + 2, &cur->decl);
|
||||
cur = cur->next;
|
||||
}
|
||||
|
||||
f_print (fout, "\n\t\t} else {\n");
|
||||
cur = psav;
|
||||
while (cur != dl)
|
||||
{
|
||||
emit_inline (indent + 1, &cur->decl, flag);
|
||||
cur = cur->next;
|
||||
}
|
||||
tabify (fout, indent + 1);
|
||||
f_print (fout, "}\n");
|
||||
}
|
||||
f_print (fout, "\n\t\t} else {\n");
|
||||
cur = psav;
|
||||
while (cur != dl)
|
||||
{
|
||||
emit_inline (indent + 1, &cur->decl, flag);
|
||||
cur = cur->next;
|
||||
}
|
||||
tabify (fout, indent + 1);
|
||||
f_print (fout, "}\n");
|
||||
}
|
||||
}
|
||||
size = 0;
|
||||
i = 0;
|
||||
sizestr = NULL;
|
||||
@ -556,46 +558,49 @@ inline_struct (definition *def, int flag)
|
||||
}
|
||||
}
|
||||
if (i > 0)
|
||||
if (sizestr == NULL && size < inlineflag)
|
||||
{
|
||||
/* don't expand into inline code if size < inlineflag */
|
||||
while (cur != dl)
|
||||
{
|
||||
print_stat (indent + 1, &cur->decl);
|
||||
cur = cur->next;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
/* were already looking at a xdr_inlineable structure */
|
||||
if (sizestr == NULL)
|
||||
f_print (fout, "\t\tbuf = XDR_INLINE(xdrs,%d * BYTES_PER_XDR_UNIT);",
|
||||
size);
|
||||
else if (size == 0)
|
||||
f_print (fout,
|
||||
"\t\tbuf = XDR_INLINE(xdrs,%s * BYTES_PER_XDR_UNIT);",
|
||||
sizestr);
|
||||
else
|
||||
f_print (fout,
|
||||
"\t\tbuf = XDR_INLINE(xdrs,(%d + %s)* BYTES_PER_XDR_UNIT);",
|
||||
size, sizestr);
|
||||
f_print (fout, "\n\t\tif (buf == NULL) {\n");
|
||||
psav = cur;
|
||||
while (cur != NULL)
|
||||
{
|
||||
print_stat (indent + 2, &cur->decl);
|
||||
cur = cur->next;
|
||||
}
|
||||
f_print (fout, "\t\t} else {\n");
|
||||
{
|
||||
if (sizestr == NULL && size < inlineflag)
|
||||
{
|
||||
/* don't expand into inline code if size < inlineflag */
|
||||
while (cur != dl)
|
||||
{
|
||||
print_stat (indent + 1, &cur->decl);
|
||||
cur = cur->next;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
/* were already looking at a xdr_inlineable structure */
|
||||
if (sizestr == NULL)
|
||||
f_print (fout,
|
||||
"\t\tbuf = XDR_INLINE(xdrs,%d * BYTES_PER_XDR_UNIT);",
|
||||
size);
|
||||
else if (size == 0)
|
||||
f_print (fout,
|
||||
"\t\tbuf = XDR_INLINE(xdrs,%s * BYTES_PER_XDR_UNIT);",
|
||||
sizestr);
|
||||
else
|
||||
f_print (fout,
|
||||
"\t\tbuf = XDR_INLINE(xdrs,(%d + %s)* BYTES_PER_XDR_UNIT);",
|
||||
size, sizestr);
|
||||
f_print (fout, "\n\t\tif (buf == NULL) {\n");
|
||||
psav = cur;
|
||||
while (cur != NULL)
|
||||
{
|
||||
print_stat (indent + 2, &cur->decl);
|
||||
cur = cur->next;
|
||||
}
|
||||
f_print (fout, "\t\t} else {\n");
|
||||
|
||||
cur = psav;
|
||||
while (cur != dl)
|
||||
{
|
||||
emit_inline (indent + 2, &cur->decl, flag);
|
||||
cur = cur->next;
|
||||
}
|
||||
f_print (fout, "\t\t}\n");
|
||||
}
|
||||
cur = psav;
|
||||
while (cur != dl)
|
||||
{
|
||||
emit_inline (indent + 2, &cur->decl, flag);
|
||||
cur = cur->next;
|
||||
}
|
||||
f_print (fout, "\t\t}\n");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* this may be const. i haven't traced this one through yet. */
|
||||
@ -724,7 +729,7 @@ emit_inline (int indent, declaration * decl, int flag)
|
||||
f_print (fout, "register %s *genp;\n\n", decl->type);
|
||||
tabify (fout, indent + 1);
|
||||
f_print (fout,
|
||||
"for (i = 0, genp = objp->%s;\n", decl->name);
|
||||
"for (i = 0, genp = objp->%s;\n", decl->name);
|
||||
tabify (fout, indent + 2);
|
||||
f_print (fout, "i < %s; ++i) {\n", decl->array_max);
|
||||
emit_single_in_line (indent + 2, decl, flag, REL_VECTOR);
|
||||
|
@ -39,14 +39,15 @@
|
||||
else
|
||||
return z;
|
||||
}
|
||||
if(x==0.0){
|
||||
if(x==0.0) {
|
||||
if(y==0.0)
|
||||
return __kernel_standard(x,y,20); /* pow(0.0,0.0) */
|
||||
if(__finite(y)&&y<0.0)
|
||||
if(__finite(y)&&y<0.0) {
|
||||
if (signbit (x) && signbit (z))
|
||||
return __kernel_standard(x,y,23); /* pow(-0.0,negative) */
|
||||
else
|
||||
return __kernel_standard(x,y,43); /* pow(+0.0,negative) */
|
||||
}
|
||||
return z;
|
||||
}
|
||||
if(!__finite(z)) {
|
||||
|
@ -45,16 +45,17 @@ static char rcsid[] = "$NetBSD: w_powf.c,v 1.3 1995/05/10 20:49:41 jtc Exp $";
|
||||
else
|
||||
return z;
|
||||
}
|
||||
if(x==(float)0.0){
|
||||
if(x==(float)0.0) {
|
||||
if(y==(float)0.0)
|
||||
/* powf(0.0,0.0) */
|
||||
return (float)__kernel_standard((double)x,(double)y,120);
|
||||
if(__finitef(y)&&y<(float)0.0)
|
||||
if(__finitef(y)&&y<(float)0.0) {
|
||||
if (signbit (x) && signbit (z))
|
||||
/* powf(0.0,negative) */
|
||||
return (float)__kernel_standard((double)x,(double)y,123);
|
||||
else
|
||||
return (float)__kernel_standard((double)x,(double)y,143);
|
||||
}
|
||||
return z;
|
||||
}
|
||||
if(!__finitef(z)) {
|
||||
|
@ -41,14 +41,15 @@
|
||||
else
|
||||
return z;
|
||||
}
|
||||
if(x==0.0){
|
||||
if(x==0.0) {
|
||||
if(y==0.0)
|
||||
return __kernel_standard(x,y,220); /* pow(0.0,0.0) */
|
||||
if(__finitel(y)&&y<0.0)
|
||||
if(__finitel(y)&&y<0.0) {
|
||||
if (signbit (x) && signbit (z))
|
||||
return __kernel_standard(x,y,223); /* pow(-0.0,negative) */
|
||||
else
|
||||
return __kernel_standard(x,y,243); /* pow(+0.0,negative) */
|
||||
}
|
||||
return z;
|
||||
}
|
||||
if(!__finitel(z)) {
|
||||
|
@ -1,37 +0,0 @@
|
||||
# Copyright (C) 1991, 92, 93, 94, 95, 96, 97 Free Software Foundation, Inc.
|
||||
# This file is part of the GNU C Library.
|
||||
|
||||
# The GNU C Library is free software; you can redistribute it and/or
|
||||
# modify it under the terms of the GNU Library General Public License as
|
||||
# published by the Free Software Foundation; either version 2 of the
|
||||
# License, or (at your option) any later version.
|
||||
|
||||
# The GNU C Library is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
# Library General Public License for more details.
|
||||
|
||||
# You should have received a copy of the GNU Library General Public
|
||||
# License along with the GNU C Library; see the file COPYING.LIB. If not,
|
||||
# write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
||||
# Boston, MA 02111-1307, USA.
|
||||
|
||||
ifneq (yes,$(inhibit-stdio_lim))
|
||||
# Disable these rules if we generate stdio_lim.h by other means.
|
||||
|
||||
$(common-objpfx)bits/stdio_lim.h: $(common-objpfx)mk-stdiolim
|
||||
$(dir $<)$(notdir $<) > $@-t
|
||||
mv $@-t $@
|
||||
|
||||
# Turn into a version that works when cd'd into $(objdir).
|
||||
mk-stdiolim-CFLAGS = $(patsubst -I$(shell pwd)//%,-I/%,\
|
||||
$(patsubst -I%,-I$(shell pwd)/%,$(+includes)))
|
||||
# $(ALL_BUILD_CFLAGS) needs to come last because it contains unwanted -Is.
|
||||
$(common-objpfx)mk-stdiolim: $(sysdep_dir)/posix/mk-stdiolim.c \
|
||||
$(..)posix/bits/posix1_lim.h bits/local_lim.h
|
||||
$(common-objdir-compile)
|
||||
|
||||
common-generated := $(common-generated) bits/stdio_lim.h mk-stdiolim
|
||||
before-compile := $(before-compile) $(common-objpfx)bits/stdio_lim.h
|
||||
|
||||
endif # inhibit-stdio_lim
|
@ -1,106 +0,0 @@
|
||||
/* Copyright (C) 1991, 1992, 1993, 1996, 1997 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
|
||||
The GNU C Library is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU Library General Public License as
|
||||
published by the Free Software Foundation; either version 2 of the
|
||||
License, or (at your option) any later version.
|
||||
|
||||
The GNU C Library is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
Library General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Library General Public
|
||||
License along with the GNU C Library; see the file COPYING.LIB. If not,
|
||||
write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
||||
Boston, MA 02111-1307, USA. */
|
||||
|
||||
#include <bits/posix1_lim.h>
|
||||
|
||||
int
|
||||
main()
|
||||
{
|
||||
/* Print copyright message. */
|
||||
printf ("\
|
||||
/* Stdio limits for POSIX systems.\n\
|
||||
Copyright (C) 1994, 1997 Free Software Foundation, Inc.\n\
|
||||
This file is part of the GNU C Library.\n\
|
||||
\n\
|
||||
The GNU C Library is free software; you can redistribute it and/or\n\
|
||||
modify it under the terms of the GNU Library General Public License as\n\
|
||||
published by the Free Software Foundation; either version 2 of the\n\
|
||||
License, or (at your option) any later version.\n\
|
||||
\n\
|
||||
The GNU C Library is distributed in the hope that it will be useful,\n\
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of\n\
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU\n\
|
||||
Library General Public License for more details.\n\
|
||||
\n\
|
||||
You should have received a copy of the GNU Library General Publicn\n\
|
||||
License along with the GNU C Library; see the file COPYING.LIB. If not,\n\
|
||||
write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,\n\
|
||||
Boston, MA 02111-1307, USA. */\n\
|
||||
\n\
|
||||
#if !defined _STDIO_H && !defined __need_FOPEN_MAX\n\
|
||||
# error \"Never include <bits/stdio_lim.h> directly; use <stdio.h> instead.\"\n\
|
||||
#endif\n\
|
||||
\n");
|
||||
|
||||
/* These values correspond to the code in sysdeps/posix/tempname.c.
|
||||
Change the values here if you change that code. */
|
||||
puts ("#ifdef _STDIO_H");
|
||||
printf ("# define L_tmpnam %u\n", sizeof ("/usr/tmp/") + 9);
|
||||
printf ("# define TMP_MAX %u\n", 62 * 62 * 62);
|
||||
|
||||
puts ("# ifdef __USE_POSIX");
|
||||
printf ("# define L_ctermid %u\n", sizeof ("/dev/tty"));
|
||||
printf ("# define L_cuserid 9\n");
|
||||
puts ("# endif");
|
||||
|
||||
printf (" #define FILENAME_MAX %u\n",
|
||||
#ifdef PATH_MAX
|
||||
PATH_MAX
|
||||
#else
|
||||
/* This is supposed to be the size needed to hold the longest file
|
||||
name string the implementation guarantees can be opened.
|
||||
PATH_MAX not being defined means the actual limit on the length
|
||||
of a file name is runtime-variant (or it is unlimited). ISO
|
||||
says in such a case FILENAME_MAX should be a good size to
|
||||
allocate for a file name string. POSIX.1 guarantees that a
|
||||
file name up to _POSIX_PATH_MAX chars long can be opened, so
|
||||
this value must be at least that. */
|
||||
1024 /* _POSIX_PATH_MAX is 255. */
|
||||
#endif
|
||||
);
|
||||
|
||||
puts ("# undef __need_FOPEN_MAX");
|
||||
puts ("# define __need_FOPEN_MAX 1");
|
||||
puts ("#endif\n");
|
||||
|
||||
/* POSIX does not require that OPEN_MAX and PATH_MAX be defined, so
|
||||
<bits/local_lim.h> will not define them if they are run-time
|
||||
variant (which is the case in the Hurd). ISO still requires
|
||||
that FOPEN_MAX and FILENAME_MAX be defined, however. */
|
||||
|
||||
puts ("#if defined __need_FOPEN_MAX && !defined __defined_FOPEN_MAX");
|
||||
puts ("# define __defined_FOPEN_MAX");
|
||||
printf ("# define FOPEN_MAX %u\n",
|
||||
#ifdef OPEN_MAX
|
||||
|
||||
OPEN_MAX
|
||||
#else
|
||||
/* This is the minimum number of files that the implementation
|
||||
guarantees can be open simultaneously. OPEN_MAX not being
|
||||
defined means the maximum is run-time variant; but POSIX.1
|
||||
requires that it never be less than _POSIX_OPEN_MAX, so that is
|
||||
a good minimum to use. */
|
||||
_POSIX_OPEN_MAX
|
||||
#endif
|
||||
|
||||
);
|
||||
puts ("#endif");
|
||||
puts ("#undef __need_FOPEN_MAX");
|
||||
|
||||
exit (0);
|
||||
}
|
@ -1,5 +1,4 @@
|
||||
bits/pthreadtypes.h
|
||||
stdio_lim.h.in
|
||||
cmsg_nxthdr.c
|
||||
errlist.h
|
||||
init-first.h
|
||||
|
@ -89,32 +89,6 @@ endif
|
||||
# Don't compile the ctype glue code, since there is no old non-GNU C library.
|
||||
inhibit-glue = yes
|
||||
|
||||
# Tell sysdeps/posix/Makefile that we create stdio_lim.h differently.
|
||||
inhibit-stdio_lim = yes
|
||||
|
||||
$(common-objpfx)bits/stdio_%.h $(common-objpfx)bits/stdio_%.d: \
|
||||
$(..)sysdeps/unix/sysv/linux/stdio_%.h.in
|
||||
rm -f $(@:.h=.d) $(@:.d=.h)-t
|
||||
echo '#include <linux/limits.h>' | \
|
||||
SUNPRO_DEPENDENCIES='$(@:.h=.d) \
|
||||
$(patsubst $(common-objpfx)%,$$(common-objpfx)%,\
|
||||
$(@:.d=.h) $(@:.h=.d))' \
|
||||
$(CC) -E -dM - > $(@:.d=.h)-t
|
||||
fopen_max=`sed -n 's/^#define OPEN_MAX //p' $(@:.d=.h)-t`; \
|
||||
filename_max=`sed -n 's/^#define PATH_MAX //p' $(@:.d=.h)-t`; \
|
||||
if test -n "$$fopen_max" && test -n "$$filename_max"; then \
|
||||
sed -e "s/DEFAULT_FOPEN_MAX/$$fopen_max/" \
|
||||
-e "s/DEFAULT_FILENAME_MAX/$$filename_max/" $< \
|
||||
> $(@:.d=.h).new && \
|
||||
mv -f $(@:.d=.h).new $(@:.d=.h); \
|
||||
else exit 1; fi
|
||||
# Remove this last so that it can be examined if something went wrong.
|
||||
rm -f $(@:.d=.h)-t
|
||||
ifndef no_deps
|
||||
# Get the list of dependencies (probably /usr/include/linux/limits.h).
|
||||
-include $(common-objpfx)bits/stdio_lim.d
|
||||
endif
|
||||
|
||||
ifeq ($(subdir),signal)
|
||||
sysdep_routines += rt_sigsuspend rt_sigprocmask rt_sigtimedwait \
|
||||
rt_sigqueueinfo rt_sigaction rt_sigpending
|
||||
@ -128,4 +102,3 @@ ifeq ($(subdir),nis)
|
||||
CFLAGS-ypclnt.c = -DUSE_BINDINGDIR=1
|
||||
endif
|
||||
|
||||
common-generated += bits/stdio_lim.h bits/stdio_lim.d
|
||||
|
@ -1,43 +0,0 @@
|
||||
/* Stdio limits for Linux.
|
||||
Copyright (C) 1994, 1997 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
|
||||
The GNU C Library is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU Library General Public License as
|
||||
published by the Free Software Foundation; either version 2 of the
|
||||
License, or (at your option) any later version.
|
||||
|
||||
The GNU C Library is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
Library General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Library General Public
|
||||
License along with the GNU C Library; see the file COPYING.LIB. If not,
|
||||
write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
||||
Boston, MA 02111-1307, USA. */
|
||||
|
||||
#if !defined _STDIO_H && !defined __need_FOPEN_MAX
|
||||
# error "Never include <bits/stdio_lim.h> directly; use <stdio.h> instead."
|
||||
#endif
|
||||
|
||||
#ifdef _STDIO_H
|
||||
# define L_tmpnam 19
|
||||
# define TMP_MAX 238328
|
||||
|
||||
# ifdef __USE_POSIX
|
||||
# define L_ctermid 9
|
||||
# define L_cuserid 9
|
||||
# endif
|
||||
|
||||
# define FILENAME_MAX DEFAULT_FILENAME_MAX
|
||||
|
||||
# undef __need_FOPEN_MAX
|
||||
# define __need_FOPEN_MAX
|
||||
#endif
|
||||
|
||||
#if defined __need_FOPEN_MAX && !defined __defined_FOPEN_MAX
|
||||
# define __defined_FOPEN_MAX
|
||||
# define FOPEN_MAX DEFAULT_FOPEN_MAX
|
||||
#endif
|
||||
#undef __need_FOPEN_MAX
|
@ -89,9 +89,9 @@ main (int argc, char ** argv)
|
||||
const struct test_times *pt;
|
||||
char buf[BUFSIZ];
|
||||
|
||||
/* This should be: Thu May 14 18:02:16 1998. */
|
||||
/* This should be: Fri May 15 01:02:16 1998 (UTC). */
|
||||
t = 895194136;
|
||||
printf ("We use this date: %s\n", ctime (&t));
|
||||
printf ("We use this date: %s\n", asctime (gmtime (&t)));
|
||||
|
||||
for (pt = tests; pt->name != NULL; ++pt)
|
||||
{
|
||||
|
@ -2,6 +2,7 @@
|
||||
|
||||
#include <wchar.h>
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include <wctype.h>
|
||||
#include <locale.h>
|
||||
|
Loading…
Reference in New Issue
Block a user