1997-03-09 06:59  Ulrich Drepper  <drepper@cygnus.com>

	* Makeconfig: Add ASFLAGS-% flags for SPARC assembler which need
	-fPIC.
	* Makerules (compile.S): Use ASFLAGS-%.
	(COMPILE.S): Likewise.
	* config.make.in (ASFLAGS-.so): Define from ASFLAGS_SO.
	* configure.in: Substitute ASFLAGS_SO.
	* sysdeps/sparc/configure.in: New file.

	* posix/unitstd.h: Add prototype for __euidaccess.
	* sysdeps/posix/euidaccess.c: Define as __euidaccess and make
	euidaccess weak alias.
	* sysdeps/stubs/euidaccess.c: Likewise.
	* inet/rcmd.c: Use __ protected versions of non-standard functions.

	* locale/setlocale.c (setlocale): Don't set usage_count to
	MAX_USAGE_COUNT if it already has this value.

	* locale/programs/localedef.c: Don't use LOCALE_PATH to find
	binary locale files.  Use LOCALEDIR only.
	* locale/programs/locfile.c: When named file not found and not
	absolute use path in I18NPATH.

	* stdlib/Makefile (headers): Add inttypes.h.

	* sysdpes/generic/socketbits.h: Add PF_FILE as synonym for PF_LOCAL
	and AF_FILE as synonym for AF_LOCAL.
	* sysdpes/unix/sysv/linux/socketbits.h: Likewise.

	* time/Makefile: Rewrite rules for test to handle parallel builds.

1997-03-09 05:26  Ulrich Drepper  <drepper@cygnus.com>

	* manual/startup.texi (EXIT_FAILURE): Fix typo.  Patch by
	robbe@orcus.priv.at.

1997-03-09 05:10  Edward Seidl  <seidl@janed.com>

	* sysdeps/i386/elf/start.S (nofini): *Really* align stack to
	8-byte boundary.

1997-03-09 01:48  Ulrich Drepper  <drepper@cygnus.com>

	* elf/link.h: Define __need_NULL to get definition.  Include
	<features.h>.
	Patch by Andreas Jaeger  <aj@arthur.pfalz.de>.

1997-03-08 21:48  Thorsten Kukuk  <kukuk@tk.uni-paderborn.de>

	Rewrite NIS code to allow empty keys.
	* nis/nss_nis/nis-ethers.c: Rewritten.
	* nis/nss_nis/nis-proto.c: Rewritten.
	* nis/nss_nis/nis-publickey.c: Rewritten.
	* nis/nss_nis/nis-rpc.c: Rewritten.
	* nis/nss_nis/nis-service.c: Rewritten.

1997-03-08 16:02  Andreas Jaeger  <aj@arthur.pfalz.de>

	* time/scheck.c (scheck): Add extra const to second argument.

	* time/private.h: Correct prototypes to match definition.

1997-03-08 18:55  Ulrich Drepper  <drepper@cygnus.com>

	* sysdeps/alpha/__math.h: Remove cabs inline definition.
	Reported by Philip Blundell <pjb27@cam.ac.uk>.

	Reported by Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>.
	Bug report by Andreas Jaeger <jaeger@informatik.uni-kl.de>.
This commit is contained in:
Ulrich Drepper 1997-03-09 06:16:49 +00:00
parent 4cca6b868f
commit f166d86530
33 changed files with 1267 additions and 342 deletions

View file

@ -1,3 +1,71 @@
1997-03-09 06:59 Ulrich Drepper <drepper@cygnus.com>
* Makeconfig: Add ASFLAGS-% flags for SPARC assembler which need
-fPIC.
* Makerules (compile.S): Use ASFLAGS-%.
(COMPILE.S): Likewise.
* config.make.in (ASFLAGS-.so): Define from ASFLAGS_SO.
* configure.in: Substitute ASFLAGS_SO.
* sysdeps/sparc/configure.in: New file.
* posix/unitstd.h: Add prototype for __euidaccess.
* sysdeps/posix/euidaccess.c: Define as __euidaccess and make
euidaccess weak alias.
* sysdeps/stubs/euidaccess.c: Likewise.
* inet/rcmd.c: Use __ protected versions of non-standard functions.
* locale/setlocale.c (setlocale): Don't set usage_count to
MAX_USAGE_COUNT if it already has this value.
* locale/programs/localedef.c: Don't use LOCALE_PATH to find
binary locale files. Use LOCALEDIR only.
* locale/programs/locfile.c: When named file not found and not
absolute use path in I18NPATH.
* stdlib/Makefile (headers): Add inttypes.h.
* sysdpes/generic/socketbits.h: Add PF_FILE as synonym for PF_LOCAL
and AF_FILE as synonym for AF_LOCAL.
* sysdpes/unix/sysv/linux/socketbits.h: Likewise.
* time/Makefile: Rewrite rules for test to handle parallel builds.
1997-03-09 05:26 Ulrich Drepper <drepper@cygnus.com>
* manual/startup.texi (EXIT_FAILURE): Fix typo. Patch by
robbe@orcus.priv.at.
1997-03-09 05:10 Edward Seidl <seidl@janed.com>
* sysdeps/i386/elf/start.S (nofini): *Really* align stack to
8-byte boundary.
1997-03-09 01:48 Ulrich Drepper <drepper@cygnus.com>
* elf/link.h: Define __need_NULL to get definition. Include
<features.h>.
Patch by Andreas Jaeger <aj@arthur.pfalz.de>.
1997-03-08 21:48 Thorsten Kukuk <kukuk@tk.uni-paderborn.de>
Rewrite NIS code to allow empty keys.
* nis/nss_nis/nis-ethers.c: Rewritten.
* nis/nss_nis/nis-proto.c: Rewritten.
* nis/nss_nis/nis-publickey.c: Rewritten.
* nis/nss_nis/nis-rpc.c: Rewritten.
* nis/nss_nis/nis-service.c: Rewritten.
1997-03-08 16:02 Andreas Jaeger <aj@arthur.pfalz.de>
* time/scheck.c (scheck): Add extra const to second argument.
* time/private.h: Correct prototypes to match definition.
1997-03-08 18:55 Ulrich Drepper <drepper@cygnus.com>
* sysdeps/alpha/__math.h: Remove cabs inline definition.
Reported by Philip Blundell <pjb27@cam.ac.uk>.
1997-03-08 05:30 Ulrich Drepper <drepper@cygnus.com>
* argp/Makefile (routines): Add argp-eexst.
@ -145,14 +213,14 @@
* sysdeps/libm-ieee754/s_fpclassify.c (__fpclassify): Don't use
non-existing GET_WORDS macro, use EXTRACT_WORDS.
Reported by Andres Schwab <schwab@issan.informatik.uni-dortmund.de>.
Reported by Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>.
1997-03-07 05:27 Ulrich Drepper <drepper@cygnus.com>
* sysdeps/unix/sysv/linux/i386/sigaction.c: The user- and
kernel-level sigaction structure is different. handle this
correctly.
Bug report by Andres Jaeger <jaeger@informatik.uni-kl.de>.
Bug report by Andreas Jaeger <jaeger@informatik.uni-kl.de>.
1997-03-06 05:55 David Engel <david@sw.ods.com>

View file

@ -490,6 +490,9 @@ object-suffixes += .so
CPPFLAGS-.so = -DPIC
CFLAGS-.so = -fPIC -fno-common
libtype.so := lib%_pic.a
ifndef ASFLAGS-.so
ASFLAGS-.so =
endif
endif
ifeq (yes,$(build-profile))
# Under --enable-profile, we will build a static library of profiled objects.
@ -498,6 +501,9 @@ object-suffixes += .po
CPPFLAGS-.po = -DPROF
CFLAGS-.po = -pg
libtype.po = lib%_p.a
ifndef ASFLAGS-.po
ASFLAGS-.po =
endif
endif
ifeq (yes,$(build-omitfp))
# Under --enable-omitfp, we build an the library optimized without
@ -508,6 +514,9 @@ CFLAGS-.go = -g
CFLAGS-.o = -g0 -O99 -fomit-frame-pointer
CFLAGS-.so += $(CFLAGS-.o)
libtype.go = lib%_g.a
ifndef ASFLAGS-.go
ASFLAGS-.go =
endif
endif
ifeq (yes,$(build-bounded))
# Under --enable-bounded, we build the library with `-fbounded-pointers -g'
@ -516,6 +525,9 @@ object-suffixes += .bo
CPPFLAGS-.bo = -DBOUNDED_POINTERS
CFLAGS-.bo = -g -fbounded-pointers
libtype.bo = lib%_b.a
ifndef ASFLAGS-.bo
ASFLAGS-.bo =
endif
endif

View file

@ -294,8 +294,10 @@ endif
# GCC can grok options after the file name, and it looks nicer that way.
compile.c = $(CC) $< -c $(CFLAGS) $(CPPFLAGS)
compile.S = $(CC) $< -c $(CPPFLAGS) -DASSEMBLER $(asm-CPPFLAGS)
COMPILE.S = $(CC) -c $(CPPFLAGS) -DASSEMBLER $(asm-CPPFLAGS)
compile.S = \
$(CC) $< -c $(CPPFLAGS) -DASSEMBLER $(asm-CPPFLAGS) $(ASFLAGS-$(suffix $@))
COMPILE.S = \
$(CC) -c $(CPPFLAGS) -DASSEMBLER $(asm-CPPFLAGS) $(ASFLAGS-$(suffix $@))
COMPILE.s = $(filter-out -pipe,$(CC)) -c $(ASFLAGS)
# We need this for the output to go in the right place. It will default to

View file

@ -51,6 +51,9 @@ AR = @AR@
RANLIB = @RANLIB@
AS = $(CC) -c
# Build tool flags.
ASFLAGS-.so = @ASFLAGS_SO@
# Installation tools.
INSTALL = @INSTALL@
INSTALL_PROGRAM = @INSTALL_PROGRAM@

3
configure vendored
View file

@ -2037,6 +2037,8 @@ fi
if test "`(cd $srcdir; pwd)`" = "`pwd`"; then
config_makefile=
else
@ -2223,6 +2225,7 @@ s%@profile@%$profile%g
s%@omitfp@%$omitfp%g
s%@bounded@%$bounded%g
s%@DEFINES@%$DEFINES%g
s%@ASFLAGS_SO@%$ASFLAGS_SO%g
s%@VERSION@%$VERSION%g
CEOF

View file

@ -810,6 +810,8 @@ AC_SUBST(bounded)
AC_SUBST(DEFINES)
AC_SUBST(ASFLAGS_SO)
if test "`(cd $srcdir; pwd)`" = "`pwd`"; then
config_makefile=
else

View file

@ -18,9 +18,12 @@
Boston, MA 02111-1307, USA. */
#ifndef _LINK_H
#define _LINK_H 1
#include <features.h>
#define __need_size_t
#define __need_NULL
#include <stddef.h>
#include <elf.h>

View file

@ -326,7 +326,7 @@ again:
char *buffer = __alloca (buflen);
first = 0;
if (getpwnam_r (luser, &pwdbuf, buffer, buflen, &pwd) < 0)
if (__getpwnam_r (luser, &pwdbuf, buffer, buflen, &pwd) < 0)
return -1;
dirlen = strlen (pwd->pw_dir);
@ -339,7 +339,7 @@ again:
* reading an NFS mounted file system, can't read files that
* are protected read/write owner only.
*/
if (euidaccess (pbuf, R_OK) != 0)
if (__euidaccess (pbuf, R_OK) != 0)
hostf = NULL;
else
hostf = fopen(pbuf, "r");

View file

@ -240,21 +240,23 @@ main (int argc, char *argv[])
if (! avail)
{
const char *locale_names[] = { "LC_COLLATE", "LC_CTYPE",
"LC_MONETARY", "LC_NUMERIC",
"LC_TIME", "LC_MESSAGES" };
static const char *locale_names[] =
{
"LC_COLLATE", "LC_CTYPE", "LC_MONETARY",
"LC_NUMERIC", "LC_TIME", "LC_MESSAGES"
};
char *fname;
int fd;
struct stat st;
asprintf (&fname, LOCALE_PATH "/%s/%s", act_add_locdef->name,
asprintf (&fname, LOCALEDIR "/%s/%s", act_add_locdef->name,
locale_names[cat]);
fd = open (fname, O_RDONLY);
if (fd == -1)
{
free (fname);
asprintf (&fname, LOCALE_PATH "/%s/%s/SYS_%s",
asprintf (&fname, LOCALEDIR "/%s/%s/SYS_%s",
act_add_locdef->name, locale_names[cat],
locale_names[cat]);

View file

@ -26,6 +26,7 @@
#include <locale.h>
#include <malloc.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <sys/stat.h>
@ -76,10 +77,31 @@ locfile_read (const char *filename, struct charset_t *charset)
{
if (filename[0] != '/')
{
char path[strlen (filename) + 1 + sizeof (LOCSRCDIR)];
char *i18npath = __secure_getenv ("I18NPATH");
if (i18npath != NULL && *i18npath != '\0')
{
char path[strlen (filename) + 1 + strlen (i18npath) + 1];
char *next;
i18npath = strdupa (i18npath);
stpcpy (stpcpy (stpcpy (path, LOCSRCDIR), "/"), filename);
ldfile = lr_open (path, locfile_hash);
while (ldfile == NULL
&& (next = strsep (&i18npath, ":")) != NULL)
{
stpcpy (stpcpy (stpcpy (path, next), "/"), filename);
ldfile = lr_open (path, locfile_hash);
}
}
/* Test in the default directory. */
if (ldfile == NULL)
{
char path[strlen (filename) + 1 + sizeof (LOCSRCDIR)];
stpcpy (stpcpy (stpcpy (path, LOCSRCDIR), "/"), filename);
ldfile = lr_open (path, locfile_hash);
}
}
if (ldfile == NULL)

View file

@ -368,7 +368,8 @@ setlocale (int category, const char *locale)
/* We must not simply free a global locale since we have no
control over the usage. So we mark it as un-deletable. */
newdata->usage_count = MAX_USAGE_COUNT;
if (newdata->usage_count != MAX_USAGE_COUNT)
newdata->usage_count = MAX_USAGE_COUNT;
}
/* Create new composite name. */

View file

@ -830,7 +830,7 @@ unsuccessful program completion in a general sense.
On POSIX systems, the value of this macro is @code{1}. On other
systems, the value might be some other (possibly non-constant) integer
expression. Other nonzero status values also indicate future. Certain
expression. Other nonzero status values also indicate failures. Certain
programs use different nonzero status values to indicate particular
kinds of "non-success". For example, @code{diff} uses status value
@code{1} to mean that the files are different, and @code{2} or more to

View file

@ -43,43 +43,101 @@ struct ether
#define EXTERN_PARSER
#include "../nss/nss_files/files-parse.c"
static bool_t new_start = 1;
static char *oldkey = NULL;
static int oldkeylen = 0;
struct response
{
char *val;
struct response *next;
};
static struct response *start = NULL;
static struct response *next = NULL;
static int
saveit (int instatus, char *inkey, int inkeylen, char *inval,
int invallen, char *indata)
{
if (instatus != YP_TRUE)
return instatus;
if (inkey && inkeylen > 0 && inval && invallen > 0)
{
if (start == NULL)
{
start = malloc (sizeof (struct response));
next = start;
}
else
{
next->next = malloc (sizeof (struct response));
next = next->next;
}
next->next = NULL;
next->val = malloc (invallen + 1);
strncpy (next->val, inval, invallen);
next->val[invallen] = '\0';
}
return 0;
}
enum nss_status
_nss_nis_setetherent (void)
internal_nis_setetherent (void)
{
__libc_lock_lock (lock);
new_start = 1;
if (oldkey != NULL)
char *domainname;
struct ypall_callback ypcb;
yp_get_default_domain(&domainname);
while (start != NULL)
{
free (oldkey);
oldkey = NULL;
oldkeylen = 0;
if (start->val != NULL)
free (start->val);
next = start;
start = start->next;
free (next);
}
start = NULL;
__libc_lock_unlock (lock);
ypcb.foreach = saveit;
ypcb.data = NULL;
yp_all(domainname, "ethers.byname", &ypcb);
next = start;
return NSS_STATUS_SUCCESS;
}
enum nss_status
_nss_nis_setetherent (void)
{
enum nss_status result;
__libc_lock_lock (lock);
result = internal_nis_setetherent ();
__libc_lock_unlock (lock);
return result;
}
enum nss_status
_nss_nis_endetherent (void)
{
__libc_lock_lock (lock);
new_start = 1;
if (oldkey != NULL)
while (start != NULL)
{
free (oldkey);
oldkey = NULL;
oldkeylen = 0;
if (start->val != NULL)
free (start->val);
next = start;
start = start->next;
free (next);
}
start = NULL;
next = NULL;
__libc_lock_unlock (lock);
return NSS_STATUS_SUCCESS;
}
@ -87,54 +145,27 @@ static enum nss_status
internal_nis_getetherent_r (struct ether *eth, char *buffer, size_t buflen)
{
struct parser_data *data = (void *) buffer;
char *domain, *result, *outkey;
int len, keylen, parse_res;
int parse_res;
if (yp_get_default_domain (&domain))
return NSS_STATUS_UNAVAIL;
if (start == NULL)
internal_nis_setetherent ();
/* Get the next entry until we found a correct one. */
do
{
enum nss_status retval;
char *p;
if (new_start)
retval = yperr2nss (yp_first (domain, "ethers.byaddr",
&outkey, &keylen, &result, &len));
else
retval = yperr2nss ( yp_next (domain, "ethers.byaddr",
oldkey, oldkeylen,
&outkey, &keylen, &result, &len));
if (retval != NSS_STATUS_SUCCESS)
{
if (retval == NSS_STATUS_TRYAGAIN)
__set_errno (EAGAIN);
return retval;
}
if ((size_t) (len + 1) > buflen)
{
free (result);
__set_errno (ERANGE);
return NSS_STATUS_TRYAGAIN;
}
p = strncpy (buffer, result, len);
buffer[len] = '\0';
if (next == NULL)
return NSS_STATUS_NOTFOUND;
p = strcpy (buffer, next->val);
next = next->next;
while (isspace (*p))
++p;
free (result);
parse_res = _nss_files_parse_etherent (p, eth, data, buflen);
if (!parse_res && errno == ERANGE)
return NSS_STATUS_TRYAGAIN;
free (oldkey);
oldkey = outkey;
oldkeylen = keylen;
new_start = 0;
}
while (!parse_res);

View file

@ -1,4 +1,4 @@
/* Copyright (C) 1996 Free Software Foundation, Inc.
/* Copyright (C) 1996, 1997 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Thorsten Kukuk <kukuk@vt.uni-paderborn.de>, 1996.
@ -35,26 +35,81 @@
__libc_lock_define_initialized (static, lock)
static bool_t new_start = 1;
static char *oldkey = NULL;
static int oldkeylen = 0;
struct response
{
char *val;
struct response *next;
};
static struct response *start = NULL;
static struct response *next = NULL;
static int
saveit (int instatus, char *inkey, int inkeylen, char *inval,
int invallen, char *indata)
{
if (instatus != YP_TRUE)
return instatus;
if (inkey && inkeylen > 0 && inval && invallen > 0)
{
if (start == NULL)
{
start = malloc (sizeof (struct response));
next = start;
}
else
{
next->next = malloc (sizeof (struct response));
next = next->next;
}
next->next = NULL;
next->val = malloc (invallen + 1);
strncpy (next->val, inval, invallen);
next->val[invallen] = '\0';
}
return 0;
}
enum nss_status
internal_nis_setprotoent (void)
{
char *domainname;
struct ypall_callback ypcb;
yp_get_default_domain (&domainname);
while (start != NULL)
{
if (start->val != NULL)
free (start->val);
next = start;
start = start->next;
free (next);
}
start = NULL;
ypcb.foreach = saveit;
ypcb.data = NULL;
yp_all (domainname, "protocols.bynumber", &ypcb);
next = start;
return NSS_STATUS_SUCCESS;
}
enum nss_status
_nss_nis_setprotoent (void)
{
enum nss_status status;
__libc_lock_lock (lock);
new_start = 1;
if (oldkey != NULL)
{
free (oldkey);
oldkey = NULL;
oldkeylen = 0;
}
status = internal_nis_setprotoent ();
__libc_lock_unlock (lock);
return NSS_STATUS_SUCCESS;
return status;
}
enum nss_status
@ -62,16 +117,19 @@ _nss_nis_endprotoent (void)
{
__libc_lock_lock (lock);
new_start = 1;
if (oldkey != NULL)
while (start != NULL)
{
free (oldkey);
oldkey = NULL;
oldkeylen = 0;
if (start->val != NULL)
free (start->val);
next = start;
start = start->next;
free (next);
}
start = NULL;
next = NULL;
__libc_lock_unlock (lock);
return NSS_STATUS_SUCCESS;
}
@ -80,57 +138,30 @@ internal_nis_getprotoent_r (struct protoent *proto,
char *buffer, size_t buflen)
{
struct parser_data *data = (void *) buffer;
char *domain, *result, *outkey;
int len, keylen, parse_res;
int parse_res;
if (yp_get_default_domain (&domain))
return NSS_STATUS_UNAVAIL;
if (start == NULL)
internal_nis_setprotoent ();
/* Get the next entry until we found a correct one. */
do
{
enum nss_status retval;
char *p;
if (new_start)
retval = yperr2nss (yp_first (domain, "protocols.bynumber",
&outkey, &keylen, &result, &len));
else
retval = yperr2nss ( yp_next (domain, "protocols.bynumber",
oldkey, oldkeylen,
&outkey, &keylen, &result, &len));
if (retval != NSS_STATUS_SUCCESS)
{
if (retval == NSS_STATUS_TRYAGAIN)
__set_errno (EAGAIN);
return retval;
}
if ((size_t) (len + 1) > buflen)
{
free (result);
__set_errno (ERANGE);
return NSS_STATUS_TRYAGAIN;
}
p = strncpy (buffer, result, len);
buffer[len] = '\0';
if (next == NULL)
return NSS_STATUS_NOTFOUND;
p = strcpy (buffer, next->val);
next = next->next;
while (isspace (*p))
++p;
free (result);
parse_res = _nss_files_parse_protoent (p, proto, data, buflen);
if (!parse_res && errno == ERANGE)
return NSS_STATUS_TRYAGAIN;
free (oldkey);
oldkey = outkey;
oldkeylen = keylen;
new_start = 0;
}
while (!parse_res);
return NSS_STATUS_SUCCESS;
}

View file

@ -1,4 +1,4 @@
/* Copyright (C) 1996 Free Software Foundation, Inc.
/* Copyright (C) 1996, 1997 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Thorsten Kukuk <kukuk@vt.uni-paderborn.de>, 1996.
@ -130,6 +130,7 @@ parse_netid_str (const char *s, uid_t *uidp, gid_t *gidp, int *gidlenp,
gid_t *gidlist)
{
char *p;
int gidlen;
if (!s || !isdigit (*s))
{
@ -162,14 +163,15 @@ parse_netid_str (const char *s, uid_t *uidp, gid_t *gidp, int *gidlenp,
*gidp = (atoi (p));
*gidlenp = 0;
#if 0
gidlen = 0;
while ((p = strchr (p, ',')) != NULL)
{
p++;
gidlist[*gidlenp++] = atoi (p);
gidlist[gidlen++] = atoi (p);
}
#endif
*gidlenp = gidlen;
return NSS_STATUS_SUCCESS;
}

View file

@ -1,4 +1,4 @@
/* Copyright (C) 1996 Free Software Foundation, Inc.
/* Copyright (C) 1996, 1997 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Thorsten Kukuk <kukuk@vt.uni-paderborn.de>, 1996.
@ -35,26 +35,75 @@
__libc_lock_define_initialized (static, lock)
struct response_t
{
char *val;
struct response_t *next;
};
struct intern_t
{
bool_t new_start;
char *oldkey;
int oldkeylen;
struct response_t *start;
struct response_t *next;
};
typedef struct intern_t intern_t;
static intern_t intern = {TRUE, NULL, 0};
static intern_t intern = {NULL, NULL};
static int
saveit (int instatus, char *inkey, int inkeylen, char *inval,
int invallen, char *indata)
{
intern_t *intern = (intern_t *)indata;
if (instatus != YP_TRUE)
return instatus;
if (inkey && inkeylen > 0 && inval && invallen > 0)
{
if (intern->start == NULL)
{
intern->start = malloc (sizeof (struct response_t));
intern->next = intern->start;
}
else
{
intern->next->next = malloc (sizeof (struct response_t));
intern->next = intern->next->next;
}
intern->next->next = NULL;
intern->next->val = malloc (invallen + 1);
strncpy (intern->next->val, inval, invallen);
intern->next->val[invallen] = '\0';
}
return 0;
}
static enum nss_status
internal_nis_setrpcent (intern_t *data)
internal_nis_setrpcent (intern_t *intern)
{
data->new_start = 1;
if (data->oldkey != NULL)
char *domainname;
struct ypall_callback ypcb;
if (yp_get_default_domain (&domainname))
return NSS_STATUS_UNAVAIL;
while (intern->start != NULL)
{
free (data->oldkey);
data->oldkey = NULL;
data->oldkeylen = 0;
if (intern->start->val != NULL)
free (intern->start->val);
intern->next = intern->start;
intern->start = intern->start->next;
free (intern->next);
}
intern->start = NULL;
ypcb.foreach = saveit;
ypcb.data = (char *)intern;
yp_all(domainname, "rpc.bynumber", &ypcb);
intern->next = intern->start;
return NSS_STATUS_SUCCESS;
}
@ -73,15 +122,18 @@ _nss_nis_setrpcent (void)
}
static enum nss_status
internal_nis_endrpcent (intern_t *data)
internal_nis_endrpcent (intern_t *intern)
{
data->new_start = 1;
if (data->oldkey != NULL)
while (intern->start != NULL)
{
free (data->oldkey);
data->oldkey = NULL;
data->oldkeylen = 0;
if (intern->start->val != NULL)
free (intern->start->val);
intern->next = intern->start;
intern->start = intern->start->next;
free (intern->next);
}
intern->start = NULL;
return NSS_STATUS_SUCCESS;
}
@ -104,60 +156,28 @@ internal_nis_getrpcent_r (struct rpcent *rpc, char *buffer, size_t buflen,
intern_t *data)
{
struct parser_data *pdata = (void *) buffer;
char *domain;
char *result;
int len, parse_res;
char *outkey;
int keylen;
int parse_res;
char *p;
if (yp_get_default_domain (&domain))
return NSS_STATUS_UNAVAIL;
if (data->start == NULL)
internal_nis_setrpcent (data);
/* Get the next entry until we found a correct one. */
do
{
enum nss_status retval;
if (data->new_start)
retval = yperr2nss (yp_first (domain, "rpc.bynumber",
&outkey, &keylen, &result, &len));
else
retval = yperr2nss ( yp_next (domain, "rpc.bynumber",
data->oldkey, data->oldkeylen,
&outkey, &keylen, &result, &len));
if (retval != NSS_STATUS_SUCCESS)
{
if (retval == NSS_STATUS_TRYAGAIN)
__set_errno (EAGAIN);
return retval;
}
if ((size_t) (len + 1) > buflen)
{
free (result);
__set_errno (ERANGE);
return NSS_STATUS_TRYAGAIN;
}
p = strncpy (buffer, result, len);
buffer[len] = '\0';
if (data->next == NULL)
return NSS_STATUS_NOTFOUND;
p = strcpy (buffer, data->next->val);
data->next = data->next->next;
while (isspace (*p))
++p;
free (result);
parse_res = _nss_files_parse_rpcent (p, rpc, pdata, buflen);
if (!parse_res && errno == ERANGE)
return NSS_STATUS_TRYAGAIN;
free (data->oldkey);
data->oldkey = outkey;
data->oldkeylen = keylen;
data->new_start = 0;
}
while (!parse_res);
return NSS_STATUS_SUCCESS;
}
@ -179,7 +199,7 @@ enum nss_status
_nss_nis_getrpcbyname_r (const char *name, struct rpcent *rpc,
char *buffer, size_t buflen)
{
intern_t data = {TRUE, NULL, 0};
intern_t data = {NULL, NULL};
enum nss_status status;
int found;

View file

@ -1,4 +1,4 @@
/* Copyright (C) 1996 Free Software Foundation, Inc.
/* Copyright (C) 1996, 1997 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Thorsten Kukuk <kukuk@vt.uni-paderborn.de>, 1996.
@ -37,26 +37,75 @@ extern int _nss_files_parse_servent (char *line, struct servent *result,
__libc_lock_define_initialized (static, lock)
struct response_t
{
char *val;
struct response_t *next;
};
struct intern_t
{
bool_t new_start;
char *oldkey;
int oldkeylen;
struct response_t *start;
struct response_t *next;
};
typedef struct intern_t intern_t;
static intern_t intern = {TRUE, NULL, 0};
static intern_t intern = {NULL, NULL};
static int
saveit (int instatus, char *inkey, int inkeylen, char *inval,
int invallen, char *indata)
{
intern_t *intern = (intern_t *)indata;
if (instatus != YP_TRUE)
return instatus;
if (inkey && inkeylen > 0 && inval && invallen > 0)
{
if (intern->start == NULL)
{
intern->start = malloc (sizeof (struct response_t));
intern->next = intern->start;
}
else
{
intern->next->next = malloc (sizeof (struct response_t));
intern->next = intern->next->next;
}
intern->next->next = NULL;
intern->next->val = malloc (invallen + 1);
strncpy (intern->next->val, inval, invallen);
intern->next->val[invallen] = '\0';
}
return 0;
}
static enum nss_status
internal_nis_setservent (intern_t * intern)
internal_nis_setservent (intern_t *intern)
{
intern->new_start = 1;
if (intern->oldkey != NULL)
char *domainname;
struct ypall_callback ypcb;
if (yp_get_default_domain (&domainname))
return NSS_STATUS_UNAVAIL;
while (intern->start != NULL)
{
free (intern->oldkey);
intern->oldkey = NULL;
intern->oldkeylen = 0;
if (intern->start->val != NULL)
free (intern->start->val);
intern->next = intern->start;
intern->start = intern->start->next;
free (intern->next);
}
intern->start = NULL;
ypcb.foreach = saveit;
ypcb.data = (char *)intern;
yp_all(domainname, "services.byname", &ypcb);
intern->next = intern->start;
return NSS_STATUS_SUCCESS;
}
enum nss_status
@ -76,13 +125,16 @@ _nss_nis_setservent (void)
static enum nss_status
internal_nis_endservent (intern_t * intern)
{
intern->new_start = 1;
if (intern->oldkey != NULL)
while (intern->start != NULL)
{
free (intern->oldkey);
intern->oldkey = NULL;
intern->oldkeylen = 0;
if (intern->start->val != NULL)
free (intern->start->val);
intern->next = intern->start;
intern->start = intern->start->next;
free (intern->next);
}
intern->start = NULL;
return NSS_STATUS_SUCCESS;
}
@ -104,57 +156,25 @@ static enum nss_status
internal_nis_getservent_r (struct servent *serv, char *buffer,
size_t buflen, intern_t *data)
{
char *domain;
char *result;
int len, parse_res;
char *outkey;
int keylen;
int parse_res;
char *p;
if (yp_get_default_domain (&domain))
return NSS_STATUS_UNAVAIL;
if (data->start == NULL)
internal_nis_setservent (data);
/* Get the next entry until we found a correct one. */
do
{
enum nss_status retval;
if (data->new_start)
retval = yperr2nss (yp_first (domain, "services.byname",
&outkey, &keylen, &result, &len));
else
retval = yperr2nss ( yp_next (domain, "services.byname",
data->oldkey, data->oldkeylen,
&outkey, &keylen, &result, &len));
if (retval != NSS_STATUS_SUCCESS)
{
if (retval == NSS_STATUS_TRYAGAIN)
__set_errno (EAGAIN);
return retval;
}
if ((size_t) (len + 1) > buflen)
{
free (result);
__set_errno (ERANGE);
return NSS_STATUS_TRYAGAIN;
}
p = strncpy (buffer, result, len);
buffer[len] = '\0';
if (data->next == NULL)
return NSS_STATUS_NOTFOUND;
p = strcpy (buffer, data->next->val);
data->next = data->next->next;
while (isspace (*p))
++p;
free (result);
parse_res = _nss_files_parse_servent (p, serv, buffer, buflen);
if (!parse_res && errno == ERANGE)
return NSS_STATUS_TRYAGAIN;
free (data->oldkey);
data->oldkey = outkey;
data->oldkeylen = keylen;
data->new_start = 0;
}
while (!parse_res);
@ -179,7 +199,7 @@ enum nss_status
_nss_nis_getservbyname_r (const char *name, char *protocol,
struct servent *serv, char *buffer, size_t buflen)
{
intern_t data = {TRUE, NULL, 0};
intern_t data = {NULL, NULL};
enum nss_status status;
int found;
@ -198,15 +218,19 @@ _nss_nis_getservbyname_r (const char *name, char *protocol,
((status = internal_nis_getservent_r (serv, buffer, buflen, &data))
== NSS_STATUS_SUCCESS))
{
if (strcmp (serv->s_name, name) == 0)
{
if (strcmp (serv->s_proto, protocol) == 0)
{
found = 1;
}
}
if (strcmp (serv->s_proto, protocol) == 0)
{
char **cp;
if (strcmp (serv->s_name, name) == 0)
found = 1;
else
for (cp = serv->s_aliases; *cp; cp++)
if (strcmp(name, *cp) == 0)
found = 1;
}
}
internal_nis_endservent (&data);
if (!found && status == NSS_STATUS_SUCCESS)
@ -219,7 +243,7 @@ enum nss_status
_nss_nis_getservbyport_r (int port, char *protocol, struct servent *serv,
char *buffer, size_t buflen)
{
intern_t data = {TRUE, NULL, 0};
intern_t data = {NULL, NULL};
enum nss_status status;
int found;

View file

@ -171,6 +171,7 @@ extern int access __P ((__const char *__name, int __type));
#ifdef __USE_GNU
/* Test for access to NAME using the effective UID and GID
(as normal file operations use). */
extern int __euidaccess __P ((__const char *__name, int __type));
extern int euidaccess __P ((__const char *__name, int __type));
#endif

View file

@ -21,7 +21,7 @@
#
subdir := stdlib
headers := stdlib.h alloca.h monetary.h
headers := stdlib.h alloca.h monetary.h inttypes.h
routines := \
atof atoi atol atoll \

View file

@ -1,22 +1,22 @@
/* Inline math functions for Alpha.
Copyright (C) 1996 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by David Mosberger-Tang.
Copyright (C) 1996, 1997 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by David Mosberger-Tang.
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 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.
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., 675 Mass Ave,
Cambridge, MA 02139, USA. */
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 (__GNUC__) && !defined (__NO_MATH_INLINES)
@ -41,13 +41,4 @@ atan (double __x)
return __atan2 (__x, 1.0);
}
#ifdef __USE_MISC
extern __inline double
cabs (struct __cabs_complex __z)
{
extern double __hypot (double, double);
return __hypot(__z.x, __z.y);
}
#endif
#endif

View file

@ -50,6 +50,7 @@ enum __socket_type
#define PF_UNSPEC 0 /* Unspecified. */
#define PF_LOCAL 1 /* Local to host (pipes and file-domain). */
#define PF_UNIX PF_LOCAL /* Old BSD name for PF_LOCAL. */
#define PF_FILE PF_LOCAL /* POSIX name for PF_LOCAL. */
#define PF_INET 2 /* IP protocol family. */
#define PF_IMPLINK 3 /* ARPAnet IMP protocol. */
#define PF_PUP 4 /* PUP protocols. */
@ -82,6 +83,7 @@ enum __socket_type
#define AF_UNSPEC PF_UNSPEC
#define AF_LOCAL PF_LOCAL
#define AF_UNIX PF_UNIX
#define AF_FILE PF_FILE
#define AF_INET PF_INET
#define AF_IMPLINK PF_IMPLINK
#define AF_PUP PF_PUP

View file

@ -73,6 +73,8 @@ nofini:
boundary to avoid penalties from misaligned accesses. Thanks
to Edward Seidl <seidl@janed.com> for pointing this out. */
andl $0xfffffff8, %esp
pushl %eax /* Push garbage because we allocate
twelve more bytes. */
pushl %eax /* Push third argument: envp. */
pushl %edx /* Push second argument: argv. */

View file

@ -29,7 +29,7 @@ __fpclassify (double x)
u_int32_t hx, lx;
int retval = FP_NORMAL;
GET_WORDS (hx, lx, x);
EXTRACT_WORDS (hx, lx, x);
lx |= hx & 0xfffff;
hx &= 0x7ff00000;
if ((hx | lx) == 0)

View file

@ -1,22 +1,21 @@
/* euidaccess -- check if effective user id can access file
Copyright (C) 1990, 1991, 1995, 1996 Free Software Foundation, Inc.
/* Check if effective user id can access file
Copyright (C) 1990, 1991, 1995, 1996, 1997 Free Software Foundation, Inc.
This file is part of the GNU C Library.
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 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.
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., 675 Mass Ave,
Cambridge, MA 02139, USA. */
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. */
/* Written by David MacKenzie and Torbjorn Granlund.
Adapted for GNU C library by Roland McGrath. */
@ -95,6 +94,7 @@ extern int errno;
#ifdef _LIBC
#define group_member __group_member
#define euidaccess __euidaccess
#else
@ -104,6 +104,14 @@ static uid_t uid;
/* The user's real group id. */
static gid_t gid;
#ifdef HAVE_GETGROUPS
int group_member ();
#else
#define group_member(gid) 0
#endif
#endif
/* The user's effective user id. */
static uid_t euid;
@ -113,14 +121,6 @@ static gid_t egid;
/* Nonzero if UID, GID, EUID, and EGID have valid values. */
static int have_ids = 0;
#ifdef HAVE_GETGROUPS
int group_member ();
#else
#define group_member(gid) 0
#endif
#endif
/* Return 0 if the user has permission of type MODE on file PATH;
otherwise, return -1 and set `errno' to EACCESS.
@ -137,9 +137,6 @@ euidaccess (path, mode)
int granted;
#ifdef _LIBC
uid_t euid;
gid_t egid;
if (! __libc_enable_secure)
/* If we are not set-uid or set-gid, access does the same. */
return access (path, mode);
@ -171,8 +168,12 @@ euidaccess (path, mode)
#ifdef _LIBC
/* Now we need the IDs. */
euid = geteuid ();
egid = getegid ();
if (have_ids == 0)
{
have_ids = 1;
euid = geteuid ();
egid = getegid ();
}
#endif
/* The super-user can read and write any file, and execute any file
@ -192,6 +193,10 @@ euidaccess (path, mode)
__set_errno (EACCESS);
return -1;
}
#undef euidaccess
#ifdef weak_alias
weak_alias (__euidaccess, euidaccess)
#endif
#ifdef TEST
#include <stdio.h>

4
sysdeps/sparc/configure vendored Executable file
View file

@ -0,0 +1,4 @@
# Local configure fragment for sysdeps/sparc.
# The assembler on SPARC needs the -fPIC flag even when it's assembler code.
ASFLAGS_SO = -fPIC

View file

@ -0,0 +1,6 @@
sinclude(./aclocal.m4)dnl Autoconf lossage
GLIBC_PROVIDES dnl See aclocal.m4 in the top level source directory.
# Local configure fragment for sysdeps/sparc.
# The assembler on SPARC needs the -fPIC flag even when it's assembler code.
ASFLAGS_SO = -fPIC

View file

@ -1,28 +1,28 @@
/* Test for access to FILE using effective UID and GID. Stub version.
Copyright (C) 1991, 1995, 1996 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Copyright (C) 1991, 1995, 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 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.
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., 675 Mass Ave,
Cambridge, MA 02139, USA. */
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 <errno.h>
#include <stddef.h>
#include <unistd.h>
int
euidaccess (file, type)
__euidaccess (file, type)
const char *file;
int type;
{
@ -35,4 +35,5 @@ euidaccess (file, type)
__set_errno (ENOSYS);
return -1;
}
weak_alias (__euidaccess, euidaccess)
stub_warning (euidaccess)

View file

@ -55,6 +55,7 @@ enum __socket_type
#define PF_UNSPEC 0 /* Unspecified. */
#define PF_LOCAL 1 /* Local to host (pipes and file-domain). */
#define PF_UNIX PF_LOCAL /* Old BSD name for PF_LOCAL. */
#define PF_FILE PF_LOCAL /* POSIX name for PF_LOCAL. */
#define PF_INET 2 /* IP protocol family. */
#define PF_AX25 3 /* Amateur Radio AX.25. */
#define PF_IPX 4 /* Novell Internet Protocol. */
@ -70,6 +71,7 @@ enum __socket_type
#define AF_UNSPEC PF_UNSPEC
#define AF_LOCAL PF_LOCAL
#define AF_UNIX PF_UNIX
#define AF_FILE PF_FILE
#define AF_INET PF_INET
#define AF_AX25 PF_AX25
#define AF_IPX PF_IPX

View file

@ -0,0 +1,340 @@
/* Copyright (C) 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. */
/*
* ISO C 9X: 7.4 Integral types <inttypes.h>
*/
#ifndef _INTTYPES_H
#define _INTTYPES_H 1
/* Exact integral types. */
/* Signed. */
typedef signed char int8_t;
typedef short int int16_t;
typedef int int32_t;
typedef long long int int64_t;
/* Unsigned. */
typedef unsigned char uint8_t;
typedef unsigned short int uint16_t;
typedef unsigned int uint32_t;
typedef unsigned long long int uint64_t;
/* Largest integral types. */
typedef long long int intmax_t;
typedef unsigned long long int uintmax_t;
/* Types for `void *' pointers. */
typedef int intptr_t;
typedef unsigned int uintptr_t;
/* Efficient types. */
typedef int intfast_t;
typedef unsigned int uintfast_t;
/* Small types. */
/* Signed. */
typedef signed char int_least8_t;
typedef short int int_least16_t;
typedef int int_least32_t;
typedef long long int int_least64_t;
/* Unsigned. */
typedef unsigned char int_least8_t;
typedef unsigned short int int_least16_t;
typedef unsigned int int_least32_t;
typedef unsigned long long int int_least64_t;
/* Fast types. */
/* Signed. */
typedef signed char int_fast8_t;
typedef int int_fast16_t;
typedef int int_fast32_t;
typedef long long int int_fast64_t;
/* Unsigned. */
typedef unsigned char int_fast8_t;
typedef unsigned int int_fast16_t;
typedef unsigned int int_fast32_t;
typedef unsigned long long int int_fast64_t;
/* Limits of integral types. */
/* Minimum of signed integral types. */
#define INT8_MIN (-128)
#define INT16_MIN (-32767-1)
#define INT32_MIN (-2147483647-1)
#define INT64_MIN (-9223372036854775807LL-1)
/* Maximum of signed integral types. */
#define INT8_MAX (127)
#define INT16_MAX (32767)
#define INT32_MAX (2147483647)
#define INT64_MAX (9223372036854775807LL)
/* Maximum of unsigned integral types. */
#define UINT8_MAX (255U)
#define UINT16_MAX (65535U)
#define UINT32_MAX (4294967295U)
#define UINT64_MAX (18446744073709551615uLL)
/* Minimum of signed integral types having a minimum size. */
#define INT_LEAST8_MIN (-128)
#define INT_LEAST16_MIN (-32767-1)
#define INT_LEAST32_MIN (-2147483647-1)
#define INT_LEAST64_MIN (-9223372036854775807LL-1)
/* Maximum of signed integral types having a minimum size. */
#define INT_LEAST8_MAX (127)
#define INT_LEAST16_MAX (32767)
#define INT_LEAST32_MAX (2147483647)
#define INT_LEAST64_MAX (9223372036854775807LL)
/* Maximum of unsigned integral types having a minimum size. */
#define UINT_LEAST8_MAX (255U)
#define UINT_LEAST16_MAX (65535U)
#define UINT_LEAST32_MAX (4294967295U)
#define UINT_LEAST64_MAX (18446744073709551615uLL)
/* Minimum of fast signed integral types having a minimum size. */
#define INT_LEAST8_MIN (-128)
#define INT_LEAST16_MIN (-2147483647-1)
#define INT_LEAST32_MIN (-2147483647-1)
#define INT_LEAST64_MIN (-9223372036854775807LL-1)
/* Maximum of fast signed integral types having a minimum size. */
#define INT_LEAST8_MAX (127)
#define INT_LEAST16_MAX (2147483647)
#define INT_LEAST32_MAX (2147483647)
#define INT_LEAST64_MAX (9223372036854775807LL)
/* Maximum of fast unsigned integral types having a minimum size. */
#define UINT_LEAST8_MAX (255U)
#define UINT_LEAST16_MAX (4294967295U)
#define UINT_LEAST32_MAX (4294967295U)
#define UINT_LEAST64_MAX (18446744073709551615uLL)
/* Minimum for most efficient signed integral types. */
#define INTFAST_MIN (-128)
/* Maximum for most efficient signed integral types. */
#define INTFAST_MAX (127)
/* Maximum for most efficient unsigned integral types. */
#define UINTFAST_MAX (255)
/* Minimum for largest signed integral type. */
#define INTMAX_MIN (-9223372036854775807LL-1)
/* Maximum for largest signed integral type. */
#define INTMAX_MAX (9223372036854775807LL)
/* Maximum for largest unsigned integral type. */
#define UINTMAX_MAX (18446744073709551615uLL)
/* Values to test for integral types holding `void *' pointer. */
#define INTPTR_MAX (2147483647)
#define UINTPTR_MAX (4294967295U)
/* Macros for creating constants. */
#define __CONCAT__(A, B) A ## B
/* Signed. */
#define INT8_C(c) ((int8_t) c)
#define INT16_C(c) ((int16_t) c)
#define INT32_C(c) ((int32_t) c)
#define INT64_C(c) ((int64_t) __CONCAT__ (c,ll))
/* Unsigned. */
#define UINT8_C(c) ((uint8_t) __CONCAT__ (c,u))
#define UINT16_C(c) ((uint16_t) __CONCAT__ (c,u))
#define UINT32_C(c) ((uint32_t) __CONCAT__ (c,u))
#define UINT64_C(c) ((uint64_t) __CONCAT__ (c,ull))
/* Maximal type. */
#define INTMAX_C(c) ((intmax_t) __CONCAT__ (c,ll))
#define UINTMAX_C(c) ((uintmax_t) __CONCAT__ (c,ull))
/* Macros for printing format specifiers. */
/* Decimal notation. */
#define PRId8 "d"
#define PRId16 "d"
#define PRId32 "d"
#define PRId64 "lld"
#define PRIdLEAST8 "d"
#define PRIdLEAST16 "d"
#define PRIdLEAST32 "d"
#define PRIdLEAST64 "lld"
#define PRIdFAST8 "d"
#define PRIdFAST16 "d"
#define PRIdFAST32 "d"
#define PRIdFAST64 "lld"
#define PRIi8 "i"
#define PRIi16 "i"
#define PRIi32 "i"
#define PRIi64 "lli"
#define PRIiLEAST8 "i"
#define PRIiLEAST16 "i"
#define PRIiLEAST32 "i"
#define PRIiLEAST64 "lli"
#define PRIiFAST8 "i"
#define PRIiFAST16 "i"
#define PRIiFAST32 "i"
#define PRIiFAST64 "lli"
/* Octal notation. */
#define PRIo8 "o"
#define PRIo16 "o"
#define PRIo32 "o"
#define PRIo64 "llo"
#define PRIoLEAST8 "o"
#define PRIoLEAST16 "o"
#define PRIoLEAST32 "o"
#define PRIoLEAST64 "llo"
#define PRIoFAST8 "o"
#define PRIoFAST16 "o"
#define PRIoFAST32 "o"
#define PRIoFAST64 "llo"
/* lowercase hexadecimal notation. */
#define PRIx8 "x"
#define PRIx16 "x"
#define PRIx32 "x"
#define PRIx64 "llx"
#define PRIxLEAST8 "x"
#define PRIxLEAST16 "x"
#define PRIxLEAST32 "x"
#define PRIxLEAST64 "llx"
#define PRIxFAST8 "x"
#define PRIxFAST16 "x"
#define PRIxFAST32 "x"
#define PRIxFAST64 "llx"
/* UPPERCASE hexadecimal notation. */
#define PRIX8 "X"
#define PRIX16 "X"
#define PRIX32 "X"
#define PRIX64 "llX"
#define PRIXLEAST8 "X"
#define PRIXLEAST16 "X"
#define PRIXLEAST32 "X"
#define PRIXLEAST64 "llX"
#define PRIXFAST8 "X"
#define PRIXFAST16 "X"
#define PRIXFAST32 "X"
#define PRIXFAST64 "llX"
/* Unsigned integers. */
#define PRIu8 "u"
#define PRIu16 "u"
#define PRIu32 "u"
#define PRIu64 "llu"
#define PRIuLEAST8 "u"
#define PRIuLEAST16 "u"
#define PRIuLEAST32 "u"
#define PRIuLEAST64 "llu"
#define PRIuFAST8 "u"
#define PRIuFAST16 "u"
#define PRIuFAST32 "u"
#define PRIuFAST64 "llu"
/* Macros for printing `intmax_t' and `uintmax_t'. */
#define PRIdMAX "lld"
#define PRIoMAX "llo"
#define PRIxMAX "llx"
#define PRIuMAX "llu"
/* Macros for printing `intfast_t' and `uintfast_t'. */
#define PRIdFAST "d"
#define PRIoFAST "o"
#define PRIxFAST "x"
#define PRIuFAST "u"
/* Macros for printing `intptr_t' and `uintptr_t'. */
#define PRIdPTR "d"
#define PRIoPTR "o"
#define PRIxPTR "x"
#define PRIuPTR "u"
/* Macros for printing format specifiers. */
/* Decimal notation. */
#define SCNd16 "hd"
#define SCNd32 "d"
#define SCNd64 "lld"
#define SCNi16 "hi"
#define SCNi32 "i"
#define SCNi64 "lli"
/* Octal notation. */
#define SCNo16 "ho"
#define SCNo32 "o"
#define SCNo64 "llo"
/* Hexadecimal notation. */
#define SCNx16 "hx"
#define SCNx32 "x"
#define SCNx64 "llx"
/* Macros for scaning `intfast_t' and `uintfast_t'. */
#define SCNdFAST "d"
#define SCNiFAST "i"
#define SCNoFAST "o"
#define SCNxFAST "x"
/* Macros for scaning `intptr_t' and `uintptr_t'. */
#define SCNdPTR "d"
#define SCNiPTR "i"
#define SCNoPTR "o"
#define SCNxPTR "x"
#endif /* inttypes.h */

View file

@ -0,0 +1,340 @@
/* Copyright (C) 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. */
/*
* ISO C 9X: 7.4 Integral types <inttypes.h>
*/
#ifndef _INTTYPES_H
#define _INTTYPES_H 1
/* Exact integral types. */
/* Signed. */
typedef signed char int8_t;
typedef short int int16_t;
typedef int int32_t;
typedef long int int64_t;
/* Unsigned. */
typedef unsigned char uint8_t;
typedef unsigned short int uint16_t;
typedef unsigned int uint32_t;
typedef unsigned long int uint64_t;
/* Largest integral types. */
typedef long long int intmax_t;
typedef unsigned long int uintmax_t;
/* Types for `void *' pointers. */
typedef long int intptr_t;
typedef unsigned long int uintptr_t;
/* Efficient types. */
typedef long int intfast_t;
typedef unsigned long int uintfast_t;
/* Small types. */
/* Signed. */
typedef signed char int_least8_t;
typedef short int int_least16_t;
typedef int int_least32_t;
typedef long int int_least64_t;
/* Unsigned. */
typedef unsigned char int_least8_t;
typedef unsigned short int int_least16_t;
typedef unsigned int int_least32_t;
typedef unsigned long int int_least64_t;
/* Fast types. */
/* Signed. */
typedef signed char int_fast8_t;
typedef int int_fast16_t;
typedef int int_fast32_t;
typedef long int int_fast64_t;
/* Unsigned. */
typedef unsigned char int_fast8_t;
typedef unsigned int int_fast16_t;
typedef unsigned int int_fast32_t;
typedef unsigned long int int_fast64_t;
/* Limits of integral types. */
/* Minimum of signed integral types. */
#define INT8_MIN (-128)
#define INT16_MIN (-32767-1)
#define INT32_MIN (-2147483647-1)
#define INT64_MIN (-9223372036854775807L-1)
/* Maximum of signed integral types. */
#define INT8_MAX (127)
#define INT16_MAX (32767)
#define INT32_MAX (2147483647)
#define INT64_MAX (9223372036854775807L)
/* Maximum of unsigned integral types. */
#define UINT8_MAX (255U)
#define UINT16_MAX (65535U)
#define UINT32_MAX (4294967295U)
#define UINT64_MAX (18446744073709551615uL)
/* Minimum of signed integral types having a minimum size. */
#define INT_LEAST8_MIN (-128)
#define INT_LEAST16_MIN (-32767-1)
#define INT_LEAST32_MIN (-2147483647-1)
#define INT_LEAST64_MIN (-9223372036854775807L-1)
/* Maximum of signed integral types having a minimum size. */
#define INT_LEAST8_MAX (127)
#define INT_LEAST16_MAX (32767)
#define INT_LEAST32_MAX (2147483647)
#define INT_LEAST64_MAX (9223372036854775807L)
/* Maximum of unsigned integral types having a minimum size. */
#define UINT_LEAST8_MAX (255U)
#define UINT_LEAST16_MAX (65535U)
#define UINT_LEAST32_MAX (4294967295U)
#define UINT_LEAST64_MAX (18446744073709551615uL)
/* Minimum of fast signed integral types having a minimum size. */
#define INT_LEAST8_MIN (-128)
#define INT_LEAST16_MIN (-2147483647-1)
#define INT_LEAST32_MIN (-2147483647-1)
#define INT_LEAST64_MIN (-9223372036854775807L-1)
/* Maximum of fast signed integral types having a minimum size. */
#define INT_LEAST8_MAX (127)
#define INT_LEAST16_MAX (2147483647)
#define INT_LEAST32_MAX (2147483647)
#define INT_LEAST64_MAX (9223372036854775807L)
/* Maximum of fast unsigned integral types having a minimum size. */
#define UINT_LEAST8_MAX (255U)
#define UINT_LEAST16_MAX (4294967295U)
#define UINT_LEAST32_MAX (4294967295U)
#define UINT_LEAST64_MAX (18446744073709551615uL)
/* Minimum for most efficient signed integral types. */
#define INTFAST_MIN (-128)
/* Maximum for most efficient signed integral types. */
#define INTFAST_MAX (127)
/* Maximum for most efficient unsigned integral types. */
#define UINTFAST_MAX (255)
/* Minimum for largest signed integral type. */
#define INTMAX_MIN (-9223372036854775807L-1)
/* Maximum for largest signed integral type. */
#define INTMAX_MAX (9223372036854775807L)
/* Maximum for largest unsigned integral type. */
#define UINTMAX_MAX (18446744073709551615uL)
/* Values to test for integral types holding `void *' pointer. */
#define INTPTR_MAX (9223372036854775807L)
#define UINTPTR_MAX (18446744073709551615uL)
/* Macros for creating constants. */
#define __CONCAT__(A, B) A ## B
/* Signed. */
#define INT8_C(c) ((int8_t) c)
#define INT16_C(c) ((int16_t) c)
#define INT32_C(c) ((int32_t) c)
#define INT64_C(c) ((int64_t) __CONCAT__ (c,l))
/* Unsigned. */
#define UINT8_C(c) ((uint8_t) __CONCAT__ (c,u))
#define UINT16_C(c) ((uint16_t) __CONCAT__ (c,u))
#define UINT32_C(c) ((uint32_t) __CONCAT__ (c,u))
#define UINT64_C(c) ((uint64_t) __CONCAT__ (c,ul))
/* Maximal type. */
#define INTMAX_C(c) ((intmax_t) __CONCAT__ (c,ll))
#define UINTMAX_C(c) ((uintmax_t) __CONCAT__ (c,ul))
/* Macros for printing format specifiers. */
/* Decimal notation. */
#define PRId8 "d"
#define PRId16 "d"
#define PRId32 "d"
#define PRId64 "ld"
#define PRIdLEAST8 "d"
#define PRIdLEAST16 "d"
#define PRIdLEAST32 "d"
#define PRIdLEAST64 "ld"
#define PRIdFAST8 "d"
#define PRIdFAST16 "d"
#define PRIdFAST32 "d"
#define PRIdFAST64 "ld"
#define PRIi8 "i"
#define PRIi16 "i"
#define PRIi32 "i"
#define PRIi64 "li"
#define PRIiLEAST8 "i"
#define PRIiLEAST16 "i"
#define PRIiLEAST32 "i"
#define PRIiLEAST64 "li"
#define PRIiFAST8 "i"
#define PRIiFAST16 "i"
#define PRIiFAST32 "i"
#define PRIiFAST64 "li"
/* Octal notation. */
#define PRIo8 "o"
#define PRIo16 "o"
#define PRIo32 "o"
#define PRIo64 "lo"
#define PRIoLEAST8 "o"
#define PRIoLEAST16 "o"
#define PRIoLEAST32 "o"
#define PRIoLEAST64 "lo"
#define PRIoFAST8 "o"
#define PRIoFAST16 "o"
#define PRIoFAST32 "o"
#define PRIoFAST64 "lo"
/* lowercase hexadecimal notation. */
#define PRIx8 "x"
#define PRIx16 "x"
#define PRIx32 "x"
#define PRIx64 "lx"
#define PRIxLEAST8 "x"
#define PRIxLEAST16 "x"
#define PRIxLEAST32 "x"
#define PRIxLEAST64 "lx"
#define PRIxFAST8 "x"
#define PRIxFAST16 "x"
#define PRIxFAST32 "x"
#define PRIxFAST64 "lx"
/* UPPERCASE hexadecimal notation. */
#define PRIX8 "X"
#define PRIX16 "X"
#define PRIX32 "X"
#define PRIX64 "lX"
#define PRIXLEAST8 "X"
#define PRIXLEAST16 "X"
#define PRIXLEAST32 "X"
#define PRIXLEAST64 "lX"
#define PRIXFAST8 "X"
#define PRIXFAST16 "X"
#define PRIXFAST32 "X"
#define PRIXFAST64 "lX"
/* Unsigned integers. */
#define PRIu8 "u"
#define PRIu16 "u"
#define PRIu32 "u"
#define PRIu64 "lu"
#define PRIuLEAST8 "u"
#define PRIuLEAST16 "u"
#define PRIuLEAST32 "u"
#define PRIuLEAST64 "lu"
#define PRIuFAST8 "u"
#define PRIuFAST16 "u"
#define PRIuFAST32 "u"
#define PRIuFAST64 "lu"
/* Macros for printing `intmax_t' and `uintmax_t'. */
#define PRIdMAX "ld"
#define PRIoMAX "lo"
#define PRIxMAX "lx"
#define PRIuMAX "lu"
/* Macros for printing `intfast_t' and `uintfast_t'. */
#define PRIdFAST "d"
#define PRIoFAST "o"
#define PRIxFAST "x"
#define PRIuFAST "u"
/* Macros for printing `intptr_t' and `uintptr_t'. */
#define PRIdPTR "ld"
#define PRIoPTR "lo"
#define PRIxPTR "lx"
#define PRIuPTR "lu"
/* Macros for printing format specifiers. */
/* Decimal notation. */
#define SCNd16 "hd"
#define SCNd32 "d"
#define SCNd64 "ld"
#define SCNi16 "hi"
#define SCNi32 "i"
#define SCNi64 "li"
/* Octal notation. */
#define SCNo16 "ho"
#define SCNo32 "o"
#define SCNo64 "lo"
/* Hexadecimal notation. */
#define SCNx16 "hx"
#define SCNx32 "x"
#define SCNx64 "lx"
/* Macros for scaning `intfast_t' and `uintfast_t'. */
#define SCNdFAST "d"
#define SCNiFAST "i"
#define SCNoFAST "o"
#define SCNxFAST "x"
/* Macros for scaning `intptr_t' and `uintptr_t'. */
#define SCNdPTR "ld"
#define SCNiPTR "li"
#define SCNoPTR "lo"
#define SCNxPTR "lx"
#endif /* inttypes.h */

View file

@ -179,14 +179,20 @@ CFLAGS-tzset.c = $(tz-cflags)
# We have to make sure the data for testing the tz functions is available.
.PHONY: install-test-data
install-test-data: northamerica $(objpfx)zic $(leapseconds) yearistype \
etcetera simplebackw
install-test-data: $(addprefx $(objpfx)testdata/, America/New_York \
Etc/UTC UTC)
$(objpfx)testdata/America/New_York: $(objpfx)zic $(leapseconds) yearistype
$(built-program-cmd) -d $(objpfx)testdata -L $(leapseconds) \
-y yearistype northamerica
$(objpfx)testdata/Etc/UTC: $(objpfx)zic $(leapseconds) yearistype
$(built-program-cmd) -d $(objpfx)testdata -L $(leapseconds) \
-y yearistype etcetera
$(objpfx)testdata/UTC: $(objpfx)testdata/Etc/UTC $(objpfx)zic \
$(leapseconds) yearistype
$(built-program-cmd) -d $(objpfx)testdata -L $(leapseconds) \
-y yearistype simplebackw
test-tz-ENV = TZDIR=$(objpfx)testdata

View file

@ -176,14 +176,13 @@ extern int errno;
** Private function declarations.
*/
char * icalloc P((int nelem, int elsize));
char * icatalloc P((char * old, const char * new));
char * icpyalloc P((const char * string));
char * imalloc P((int n));
void * irealloc P((void * pointer, int size));
void icfree P((char * pointer));
void ifree P((char * pointer));
char * scheck P((const char *string, char *format));
char * icatalloc P((char * old, const char * const new));
char * icpyalloc P((const char * const string));
char * imalloc P((const int n));
void * irealloc P((void * const pointer, const int size));
void icfree P((char * const pointer));
void ifree P((char * const pointer));
char * scheck P((const char * const string, const char * const format));
/*
** Finally, some convenience items.

View file

@ -11,7 +11,7 @@ static char elsieid[] = "@(#)scheck.c 8.14";
char *
scheck(string, format)
const char * const string;
char * const format;
const char * const format;
{
register char * fbuf;
register const char * fp;