Update to 960810.

Sat Aug 10 13:17:27 1996  David Mosberger-Tang  <davidm@azstarnet.com>

	* shadow.h: New file.

	* sysdeps/unix/sysv/linux/netinet/in.h: Move
 	__BEGIN_DECLS/__END_DECLS up so ntohl() et al are bracketed as
 	well.

	* socket/sys/socket.h [__cplusplus]: Use old-style __SOCKADDR_ARG.
	g++ 2.7.2 (and earlier) has no transparent unions support.

Fri Aug  9 18:50:06 1996  David Mosberger-Tang  <davidm@azstarnet.com>

	* sysdeps/unix/sysv/linux/alpha/ioperm.c (_bus_base_sparse): New
	function to determine the base address of sparse bus memory.
	(APECS_*): Rename to CIA_*.
	(APECS_SPARSE_MEM, CIA_SPARSE_MEM): New macros.
	(platform): Add sparse_bus_memory_base member and initialize.
	(sparse_bus_memory_base): New variable.

Tue Aug  6 10:23:18 1996  David Mosberger-Tang  <davidm@azstarnet.com>

	* sysdeps/posix/ttyname_r.c (ttyname_r),
	sysdeps/posix/ttyname.c (ttyname): Return -1/NULL if
	!__isatty(fd) (POSIX.1 says so.)

	* sysdeps/unix/getlogin.c (getlogin): Fix to check fd 0 only.
  	This is not a gross hack, after all---for compatibility,
 	getlogin() really should check fd 0 only and not try to base its
 	operation on the controlling tty.

Wed Jul 17 10:54:20 1996  David Mosberger-Tang  <davidm@azstarnet.com>

	* sysdeps/unix/getlogin.c (getlogin): Add static variable NAME,
 	change utmp_data from static to auto.

Sun Aug 11 02:56:08 1996  Ulrich Drepper  <drepper@cygnus.com>

	* posix/unistd.h [__USE_MISC]: Add prototype for `nice'.
	Reported by David Mosberger-Tang.
This commit is contained in:
Ulrich Drepper 1996-08-11 01:08:23 +00:00
parent f2b5d40e87
commit 267ca16a67
33 changed files with 1062 additions and 30 deletions

View file

@ -1,3 +1,44 @@
Sat Aug 10 13:17:27 1996 David Mosberger-Tang <davidm@azstarnet.com>
* shadow.h: New file.
* sysdeps/unix/sysv/linux/netinet/in.h: Move
__BEGIN_DECLS/__END_DECLS up so ntohl() et al are bracketed as
well.
* socket/sys/socket.h [__cplusplus]: Use old-style __SOCKADDR_ARG.
g++ 2.7.2 (and earlier) has no transparent unions support.
Fri Aug 9 18:50:06 1996 David Mosberger-Tang <davidm@azstarnet.com>
* sysdeps/unix/sysv/linux/alpha/ioperm.c (_bus_base_sparse): New
function to determine the base address of sparse bus memory.
(APECS_*): Rename to CIA_*.
(APECS_SPARSE_MEM, CIA_SPARSE_MEM): New macros.
(platform): Add sparse_bus_memory_base member and initialize.
(sparse_bus_memory_base): New variable.
Tue Aug 6 10:23:18 1996 David Mosberger-Tang <davidm@azstarnet.com>
* sysdeps/posix/ttyname_r.c (ttyname_r),
sysdeps/posix/ttyname.c (ttyname): Return -1/NULL if
!__isatty(fd) (POSIX.1 says so.)
* sysdeps/unix/getlogin.c (getlogin): Fix to check fd 0 only.
This is not a gross hack, after all---for compatibility,
getlogin() really should check fd 0 only and not try to base its
operation on the controlling tty.
Wed Jul 17 10:54:20 1996 David Mosberger-Tang <davidm@azstarnet.com>
* sysdeps/unix/getlogin.c (getlogin): Add static variable NAME,
change utmp_data from static to auto.
Sun Aug 11 02:56:08 1996 Ulrich Drepper <drepper@cygnus.com>
* posix/unistd.h [__USE_MISC]: Add prototype for `nice'.
Reported by David Mosberger-Tang.
Sat Aug 10 02:05:28 1996 Richard Henderson <richard@twiddle.tamu.edu>
* sysdeps/libm-ieee754/s_isnan.c [NO_LONG_DOUBLE]: Add strong

View file

@ -33,10 +33,12 @@
* @(#)gmon.h 8.2 (Berkeley) 1/4/94
*/
#ifndef _SYS_GMON_H_
#define _SYS_GMON_H_
#ifndef _SYS_GMON_H_
#include <sys/cdefs.h>
#define _SYS_GMON_H_ 1
#include <features.h>
#include <sys/types.h>
/*
* See gmon_out.h for gmon.out format.

63
grp/fgetgrent_r.c Normal file
View file

@ -0,0 +1,63 @@
/* Copyright (C) 1991, 1996 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., 675 Mass Ave,
Cambridge, MA 02139, USA. */
#include <ctype.h>
#include <grp.h>
#include <stdio.h>
/* Define a line parsing function using the common code
used in the nss_files module. */
#define STRUCTURE group
#define ENTNAME grent
struct grent_data {};
#define TRAILING_LIST_MEMBER gr_mem
#define TRAILING_LIST_SEPARATOR_P(c) ((c) == ',')
#include "../nss/nss_files/files-parse.c"
LINE_PARSER
(,
STRING_FIELD (result->gr_name, ISCOLON, 0);
STRING_FIELD (result->gr_passwd, ISCOLON, 0);
INT_FIELD (result->gr_gid, ISCOLON, 0, 10,);
)
/* Read one entry from the given stream. */
struct group *
__fgetgrent_r (FILE *stream, struct group *result, char *buffer, int buflen)
{
char *p;
do
{
p = fgets (buffer, buflen, stream);
if (p == NULL)
return NULL;
/* Skip leading blanks. */
while (isspace (*p))
++p;
} while (*p == '\0' || *p == '#' || /* Ignore empty and comment lines. */
/* Parse the line. If it is invalid, loop to
get the next line of the file to parse. */
! parse_line (p, result, (void *) buffer, buflen));
return result;
}
weak_alias (__fgetgrent_r, fgetgrent_r)

View file

@ -37,6 +37,7 @@
#define _FTS_H_
#include <sys/cdefs.h>
#include <sys/types.h>
typedef struct {
struct _ftsent *fts_cur; /* current node */

View file

@ -0,0 +1,37 @@
/* User file parser in nss_files module.
Copyright (C) 1996 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., 675 Mass Ave,
Cambridge, MA 02139, USA. */
#include <shadow.h>
#define STRUCTURE spwd
#define ENTNAME spent
#define DATABASE "shadow"
struct spent_data {};
/* Our parser function is already defined in sgetspent_r.c, so use that
to parse lines from the database file. */
#define EXTERN_PARSER
#include "files-parse.c"
#include GENERIC
DB_LOOKUP (spnam, 1 + strlen (name), (".%s", name),
{
if (! strcmp (name, result->sp_namp))
break;
}, const char *name)

22
nss/spwd-lookup.c Normal file
View file

@ -0,0 +1,22 @@
/* Copyright (C) 1996 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1996.
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. */
#define DATABASE_NAME shadow
#include "XXX-lookup.c"

65
pwd/fgetpwent_r.c Normal file
View file

@ -0,0 +1,65 @@
/* Copyright (C) 1991, 1996 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., 675 Mass Ave,
Cambridge, MA 02139, USA. */
#include <ctype.h>
#include <stdio.h>
#include <pwd.h>
/* Define a line parsing function using the common code
used in the nss_files module. */
#define STRUCTURE passwd
#define ENTNAME pwent
struct pwent_data {};
#include "../nss/nss_files/files-parse.c"
LINE_PARSER
(,
STRING_FIELD (result->pw_name, ISCOLON, 0);
STRING_FIELD (result->pw_passwd, ISCOLON, 0);
INT_FIELD (result->pw_uid, ISCOLON, 0, 10,);
INT_FIELD (result->pw_gid, ISCOLON, 0, 10,);
STRING_FIELD (result->pw_gecos, ISCOLON, 0);
STRING_FIELD (result->pw_dir, ISCOLON, 0);
result->pw_shell = line;
)
/* Read one entry from the given stream. */
struct passwd *
__fgetpwent_r (FILE *stream, struct passwd *result, char *buffer, int buflen)
{
char *p;
do
{
p = fgets (buffer, buflen, stream);
if (p == NULL)
return NULL;
/* Skip leading blanks. */
while (isspace (*p))
++p;
} while (*p == '\0' || *p == '#' || /* Ignore empty and comment lines. */
/* Parse the line. If it is invalid, loop to
get the next line of the file to parse. */
! parse_line (p, result, (void *) buffer, buflen));
return result;
}
weak_alias (__fgetpwent_r, fgetpwent_r)

29
shadow/Makefile Normal file
View file

@ -0,0 +1,29 @@
# Copyright (C) 1996 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.
#
# Makefile for shadow.
#
subdir := shadow
headers = shadow.h
routines = getspent getspnam sgetspent fgetspent putspent \
getspent_r getspnam_r sgetspent_r fgetspent_r
include ../Rules

31
shadow/fgetspent.c Normal file
View file

@ -0,0 +1,31 @@
/* Copyright (C) 1996 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., 675 Mass Ave,
Cambridge, MA 02139, USA. */
#include <shadow.h>
#include <stdio.h>
/* Read one shadow entry from the given stream. */
struct spwd *
fgetspent (FILE *stream)
{
static char buffer[BUFSIZ];
static struct spwd result;
return __fgetspent_r (stream, &result, buffer, sizeof buffer);
}

56
shadow/fgetspent_r.c Normal file
View file

@ -0,0 +1,56 @@
/* Copyright (C) 1996 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., 675 Mass Ave,
Cambridge, MA 02139, USA. */
#include <ctype.h>
#include <shadow.h>
#include <stdio.h>
/* Define a line parsing function using the common code
used in the nss_files module. */
#define STRUCTURE spwd
#define ENTNAME spent
#define EXTERN_PARSER 1
struct spent_data {};
#include "../nss/nss_files/files-parse.c"
/* Read one shadow entry from the given stream. */
struct spwd *
__fgetspent_r (FILE *stream, struct spwd *result, char *buffer, int buflen)
{
char *p;
do
{
p = fgets (buffer, buflen, stream);
if (p == NULL)
return NULL;
/* Skip leading blanks. */
while (isspace (*p))
++p;
} while (*p == '\0' || *p == '#' || /* Ignore empty and comment lines. */
/* Parse the line. If it is invalid, loop to
get the next line of the file to parse. */
! parse_line (buffer, (void *) result, NULL, 0));
return result;
}
weak_alias (__fgetspent_r, fgetspent_r)

30
shadow/getspent.c Normal file
View file

@ -0,0 +1,30 @@
/* Copyright (C) 1996 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1996.
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 <shadow.h>
#define LOOKUP_TYPE struct spwd
#define SETFUNC_NAME setspent
#define GETFUNC_NAME getspent
#define ENDFUNC_NAME endspent
#define DATABASE_NAME shadow
#define BUFLEN 1024
#include "../nss/getXXent.c"

30
shadow/getspent_r.c Normal file
View file

@ -0,0 +1,30 @@
/* Copyright (C) 1996 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1996.
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/tes
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 <shadow.h>
#define LOOKUP_TYPE struct spwd
#define SETFUNC_NAME setspent
#define GETFUNC_NAME getspent
#define ENDFUNC_NAME endspent
#define DATABASE_NAME shadow
#define BUFLEN 1024
#include "../nss/getXXent_r.c"

30
shadow/getspnam.c Normal file
View file

@ -0,0 +1,30 @@
/* Copyright (C) 1996 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1996.
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 <shadow.h>
#define LOOKUP_TYPE struct spwd
#define FUNCTION_NAME getspnam
#define DATABASE_NAME shadow
#define ADD_PARAMS const char *name
#define ADD_VARIABLES name
#define BUFLEN 1024
#include "../nss/getXXbyYY.c"

30
shadow/getspnam_r.c Normal file
View file

@ -0,0 +1,30 @@
/* Copyright (C) 1996 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1996.
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 <shadow.h>
#define LOOKUP_TYPE struct spwd
#define FUNCTION_NAME getspnam
#define DATABASE_NAME shadow
#define ADD_PARAMS const char *name
#define ADD_VARIABLES name
#define BUFLEN 1024
#include "../nss/getXXbyYY_r.c"

80
shadow/putspent.c Normal file
View file

@ -0,0 +1,80 @@
/* Copyright (C) 1991, 1992, 1996 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., 675 Mass Ave,
Cambridge, MA 02139, USA. */
#include <errno.h>
#include <stdio.h>
#include <shadow.h>
/* Write an entry to the given stream.
This must know the format of the password file. */
int
putspent (const struct spwd *p, FILE *stream)
{
int errors = 0;
if (fprintf (stream, "%s:%s", p->sp_namp, p->sp_pwdp) < 0)
++errors;
if ((p->sp_lstchg != (time_t) -1
&& fprintf (stream, "%ld", p->sp_lstchg) < 0)
|| (p->sp_lstchg == (time_t) -1
&& putc (':', stream) == EOF))
++errors;
if ((p->sp_min != (time_t) -1
&& fprintf (stream, "%ld", p->sp_min) < 0)
|| (p->sp_min == (time_t) -1
&& putc (':', stream) == EOF))
++errors;
if ((p->sp_max != (time_t) -1
&& fprintf (stream, "%ld", p->sp_max) < 0)
|| (p->sp_max == (time_t) -1
&& putc (':', stream) == EOF))
++errors;
if ((p->sp_warn != (time_t) -1
&& fprintf (stream, "%ld", p->sp_warn) < 0)
|| (p->sp_warn == (time_t) -1
&& putc (':', stream) == EOF))
++errors;
if ((p->sp_inact != (time_t) -1
&& fprintf (stream, "%ld", p->sp_inact) < 0)
|| (p->sp_inact == (time_t) -1
&& putc (':', stream) == EOF))
++errors;
if ((p->sp_expire != (time_t) -1
&& fprintf (stream, "%ld", p->sp_expire) < 0)
|| (p->sp_expire == (time_t) -1
&& putc (':', stream) == EOF))
++errors;
if ((p->sp_flag != -1l
&& fprintf (stream, "%ld", p->sp_flag) < 0)
|| (p->sp_flag == -1l
&& putc (':', stream) == EOF))
++errors;
if (putc ('\n', stream) == EOF)
++errors;
return errors ? -1 : 0;
}

46
shadow/sgetspent.c Normal file
View file

@ -0,0 +1,46 @@
/* Copyright (C) 1996 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., 675 Mass Ave,
Cambridge, MA 02139, USA. */
#include <shadow.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX(a, b) ((a) > (b) ? (a) : (b))
/* Read one shadow entry from the given stream. */
struct spwd *
sgetspent (const char *string)
{
static struct spwd result;
static int max_size = 0;
static char *buffer = NULL;
int len;
len = strlen (string) + 1;
if (len > max_size)
{
max_size = MAX (128, len + 32);
buffer = realloc (buffer, max_size);
if (buffer == NULL)
return NULL;
}
return __sgetspent_r (string, &result, buffer, max_size);
}

72
shadow/sgetspent_r.c Normal file
View file

@ -0,0 +1,72 @@
/* Copyright (C) 1996 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., 675 Mass Ave,
Cambridge, MA 02139, USA. */
#include <ctype.h>
#include <shadow.h>
#include <stdio.h>
#include <string.h>
/* Define a line parsing function using the common code
used in the nss_files module. */
#define STRUCTURE spwd
#define ENTNAME spent
struct spent_data {};
#include "../nss/nss_files/files-parse.c"
LINE_PARSER
(,
STRING_FIELD (result->sp_namp, ISCOLON, 0);
STRING_FIELD (result->sp_pwdp, ISCOLON, 0);
INT_FIELD (result->sp_lstchg, ISCOLON, 0, 10, (time_t));
INT_FIELD (result->sp_min, ISCOLON, 0, 10, (time_t));
INT_FIELD (result->sp_max, ISCOLON, 0, 10, (time_t));
while (isspace (*line))
++line;
if (*line == '\0')
{
/* The old form. */
result->sp_warn = (time_t) -1;
result->sp_inact = (time_t) -1;
result->sp_expire = (time_t) -1;
result->sp_flag = (time_t) -1;
}
else
{
INT_FIELD (result->sp_warn, ISCOLON, 0, 10, (time_t));
INT_FIELD (result->sp_inact, ISCOLON, 0, 10, (time_t));
INT_FIELD (result->sp_expire, ISCOLON, 0, 10, (time_t));
while (isspace (*line))
++line;
if (*line == '\0')
result->sp_flag = -1;
else
INT_FIELD (result->sp_flag, ISCOLON, 0, 10, );
}
)
/* Read one shadow entry from the given stream. */
struct spwd *
__sgetspent_r (const char *string, struct spwd *result, char *buffer,
int buflen)
{
return parse_line (strncpy (string, buffer, buflen), result, NULL, 0)
? result : NULL;
}
weak_alias (__sgetspent_r, sgetspent_r)

108
shadow/shadow.h Normal file
View file

@ -0,0 +1,108 @@
/* Copyright (C) 1996 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. */
/* Declaration of types and functions for shadow password suite. */
#ifndef _SHADOW_H
#define _SHADOW_H 1
#include <features.h>
#define __need_FILE
#include <stdio.h>
#define __need_time_t
#include <time.h>
/* Paths to the userd files. */
#define SHADOW "/etc/shadow"
__BEGIN_DECLS
/* Structure of the password file. */
struct spwd
{
char *sp_namp; /* Login name. */
char *sp_pwdp; /* Encrypted password. */
__time_t sp_lstchg; /* Date of last change. */
__time_t sp_min; /* Minimum number of days between changes. */
__time_t sp_max; /* Maximum number of days between changes. */
__time_t sp_warn; /* Number of days to warn user to change
the password. */
__time_t sp_inact; /* Number of days the account may be
inactive. */
__time_t sp_expire; /* Number of days since 700101 until account
expires. */
unsigned long int sp_flag; /* Reserved. */
};
/* Open database for reading. */
extern void setspent __P ((void));
/* Close database. */
extern void endspent __P ((void));
/* Get next entry from database, perhaps after opening the file. */
extern struct spwd *getspent __P ((void));
/* Get shadow entry matching NAME. */
extern struct spwd *getspnam __P ((__const char *__name));
/* Read shadow entry from STRING. */
extern struct spwd *sgetspent __P ((__const char *__string));
/* Read next shadow entry from STREAM. */
extern struct spwd *fgetspent __P ((FILE *__stream));
/* Write line containing shadow password entry to stream. */
extern int putspent __P ((__const struct spwd *__p, FILE *__stream));
#ifdef __USE_REENTRANT
/* Reentrant versions of some of the functions above. */
extern struct spwd *__getspent_r __P ((struct spwd *__result_buf,
char *__buffer, int __buflen));
extern struct spwd *getspent_r __P ((struct spwd *__result_buf,
char *__buffer, int __buflen));
extern struct spwd *__getspnam_r __P ((__const char *__name,
struct spwd *__result_buf,
char *__buffer, int __buflen));
extern struct spwd *getspnam_r __P ((__const char *__name,
struct spwd *__result_buf,
char *__buffer, int __buflen));
extern struct spwd *__sgetspent_r __P ((__const char *__string,
struct spwd *__result_buf,
char *__buffer, int __buflen));
extern struct spwd *sgetspent_r __P ((__const char *__string,
struct spwd *__result_buf,
char *__buffer, int __buflen));
extern struct spwd *__fgetspent_r __P ((FILE *__stream,
struct spwd *__result_buf,
char *__buffer, int __buflen));
extern struct spwd *fgetspent_r __P ((FILE *__stream,
struct spwd *__result_buf,
char *__buffer, int __buflen));
#endif /* reentrant */
__END_DECLS
#endif /* shadow.h */

View file

@ -26,5 +26,4 @@ int main(int arc, char *argv)
abort ();
return 0;
return 0;
}

View file

@ -27,12 +27,14 @@
__BEGIN_DECLS
#ifdef __USE_GNU
/* Make a '\0' separated arg vector from a unix argv vector, returning it in
ARGZ, and the total length in LEN. If a memory allocation error occurs,
ENOMEM is returned, otherwise 0. The result can be destroyed using free. */
extern error_t __argz_create __P ((char *const __argv[], char **__argz,
extern error_t __argz_create __P ((char *__const __argv[], char **__argz,
size_t *__len));
extern error_t argz_create __P ((char *const __argv[], char **__argz,
extern error_t argz_create __P ((char *__const __argv[], char **__argz,
size_t *__len));
/* Make a '\0' separated arg vector from a SEP separated list in
@ -130,4 +132,6 @@ argz_next (char *__argz, size_t __argz_len, const char *__entry)
}
#endif /* optimizing GCC2 */
#endif /* use GNU */
#endif /* __ARGZ_H__ */

View file

@ -0,0 +1,2 @@
# Code optimized for i586 is better than simple i386 code.
i386/i586

View file

@ -38,5 +38,6 @@ static char rcsid[] = "$NetBSD: s_isnan.c,v 1.8 1995/05/10 20:47:36 jtc Exp $";
}
weak_alias (__isnan, isnan)
#ifdef NO_LONG_DOUBLE
strong_alias (__isnan, __isnanl)
weak_alias (__isnan, isnanl)
#endif

View file

@ -202,7 +202,6 @@ __stdio_gen_tempname (const char *dir, const char *pfx, int dir_search,
goto lose;
}
fp->file._flags &= ~_IO_DELETE_DONT_CLOSE;
fp->file._IO_file_flags = 0;
*streamptr = (FILE *) fp;
#else

View file

@ -0,0 +1,118 @@
/* Copyright (C) 1996 Free Software Foundation, Inc.
Contributed by Richard Henderson (rth@tamu.edu)
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., 675 Mass Ave,
Cambridge, MA 02139, USA. */
/* clone() is even more special than fork() as it mucks with stacks
and invokes a function in the right context after its all over. */
#include <sysdep.h>
#include <errnos.h>
/* int clone(int (*fn)(), void *child_stack, int flags, int nargs, ...) */
.text
ENTRY(__clone)
lda sp,-16(sp)
.frame sp,16,$26,0
/* Save rest of argument registers for varargs-type work. */
stq a4,0(sp)
stq a5,8(sp)
.prologue 1
/* Sanity check arguments. */
sextl a3,a3
ldiq v0,EINVAL
beq a0,$error /* no NULL function pointers */
beq a1,$error /* no NULL stack pointers */
blt a3,$error /* no negative argument counts */
/* Allocate space on the new stack and copy args over */
mov a3,t0 /* save nargs for thread_start */
s8addq a3,sp,t1
1: ldq t2,-8(t1)
subq t1,8,t1
stq t2,-8(a1)
subq a3,1,a3
subq a1,8,a1
bne a3,1b
/* Do the system call */
mov a0,pv /* get fn ptr out of the way */
mov a2,a0
ldiq v0,__NR_clone
call_pal PAL_callsys
bne a3,$error
beq v0,thread_start
/* Successful return from the parent */
lda sp,16(sp)
ret
/* Something bad happened -- no child created */
$error:
br gp,1f
1: ldgp gp,0(gp)
lda sp,16(sp)
jmp zero,__syscall_error
END(__clone)
/* Load up the arguments to the function. Put this block of code in
its own function so that we can terminate the stack trace with our
debug info.
At this point we have $t0=nargs, $pv=fn, $sp=&arg[0]. */
.ent thread_start
thread_start:
.frame fp,0,zero,0
mov zero,fp
.prologue 0
/* Calculate address of jump into argument loading code */
cmple t0,6,t2 /* no more than 6 args in registers */
cmoveq t2,6,t0
br v0,1f /* find address of arg0 */
1: lda v0,$arg0-1b(v0)
s4addq t0,zero,t1
subq v0,t1,v0
jmp (v0)
/* Load the integer register arguments */
ldq a5,40(sp)
ldq a4,32(sp)
ldq a3,24(sp)
ldq a2,16(sp)
ldq a1,8(sp)
ldq a0,0(sp)
$arg0:
/* Adjust stack to remove the arguments we just loaded */
s8addq t0,sp,sp
/* Call the user's function */
jsr ra,(pv)
ldgp gp,0(ra)
/* Call _exit rather than doing it inline for breakpoint purposes */
mov v0,a0
jsr ra,_exit
.end thread_start
weak_alias(__clone, clone)

View file

@ -1,8 +1,26 @@
/* Get `struct dirent' from the Linux kernel header file. */
/* Copyright (C) 1996 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., 675 Mass Ave,
Cambridge, MA 02139, USA. */
#ifndef _DIRENTRY_H
#define _DIRENTRY_H
#define _DIRENTRY_H 1
/* Get `struct dirent' from the Linux kernel header file. */
#include <asm/posix_types.h>
#include <linux/dirent.h>
#define d_fileno d_ino /* backwards compatibility */

View file

@ -0,0 +1,3 @@
/* Linux defines the ftime system call but doesn't actually implement
it. Use the generic implementation. */
#include <sysdeps/generic/ftime.c>

View file

@ -0,0 +1,80 @@
/* Copyright (C) 1996 Free Software Foundation, Inc.
Contributed by Richard Henderson (rth@tamu.edu)
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., 675 Mass Ave,
Cambridge, MA 02139, USA. */
/* clone() is even more special than fork() as it mucks with stacks
and invokes a function in the right context after its all over. */
#include <sysdep.h>
#include <errnos.h>
/* int clone(int (*fn)(), void *child_stack, int flags, int nargs, ...) */
.text
ENTRY(__clone)
/* Sanity check arguments. */
movl $-EINVAL,%eax
movl 4(%esp),%ecx /* no NULL function pointers */
testl %ecx,%ecx
jz syscall_error
movl 8(%esp),%ecx /* no NULL stack pointers */
testl %ecx,%ecx
jz syscall_error
movl 16(%esp),%edx /* no negative argument counts */
testl %edx,%edx
js syscall_error
/* Allocate space on the new stack and copy args over */
movl %edx,%eax
negl %eax
lea -4(%ecx,%eax,4),%ecx
jz 2f
1: movl 16(%esp,%edx,4),%eax
movl %eax,0(%ecx,%edx,4)
dec %edx
jnz 1b
2:
/* Save the function pointer as the zeroth argument.
It will be popped off in the child in the ebx frobbing below. */
movl 4(%esp),%eax
movl %eax,0(%ecx)
/* Do the system call */
pushl %ebx
movl 16(%esp),%ebx
movl $SYS_ify(clone),%eax
int $0x80
popl %ebx
test %eax,%eax
jl syscall_error
jz thread_start
ret
SYSCALL_ERROR_HANDLER
thread_start:
subl %ebp,%ebp /* terminate the stack frame */
call *%ebx
#ifdef PIC
call _exit@PLT
#else
call _exit
#endif
weak_alias(__clone, clone)

View file

@ -54,6 +54,9 @@ enum __rlimit_resource
/* Locked-in-memory address space. */
RLIMIT_MEMLOCK,
#define RLIMIT_MEMLOCK RLIMIT_MEMLOCK
/* Address space limit. */
RLIMIT_AS,
#define RLIMIT_AS RLIMIT_AS
RLIMIT_NLIMITS, /* Number of limit flavors. */
RLIM_NLIMITS = RLIMIT_NLIMITS /* Traditional name for same. */

View file

@ -21,6 +21,9 @@ Boston, MA 02111-1307, USA. */
#define _SYS_ACCT_H 1
#include <features.h>
#define __need_time_t
#include <time.h>
/* Get needed constants. */
#include <linux/acct.h>

View file

@ -16,9 +16,12 @@ 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. */
#ifndef _SYS_IO_H
#define _SYS_IO_H
#ifndef _SYS_IO_H
#define _SYS_IO_H 1
#include <features.h>
/* Get constants from kernel header files. */
#include <asm/io.h>
/* If TURN_ON is TRUE, request for permission to do direct i/o on the
@ -28,12 +31,12 @@ Cambridge, MA 02139, USA. */
Portability note: not all Linux platforms support this call. Most
platforms based on the PC I/O architecture probably will, however.
E.g., Linux/Alpha for Alpha PCs supports this. */
extern int ioperm __P((unsigned long __from, unsigned long __num,
int __turn_on));
extern int ioperm __P ((unsigned long int __from, unsigned long int __num,
int __turn_on));
/* Set the I/O privilege level to LEVEL. If LEVEL>3, permission to
access any I/O port is granted. This call requires root
privileges. */
extern int iopl __P((int __level));
extern int iopl __P ((int __level));
#endif /* _SYS_IO_H */

View file

@ -1,10 +1,30 @@
#ifndef _SYS_KLOG_H
#define _SYS_KLOG_H
/* Copyright (C) 1996 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., 675 Mass Ave,
Cambridge, MA 02139, USA. */
#ifndef _SYS_KLOG_H
#define _SYS_KLOG_H 1
#include <features.h>
/* Control the kernel's logging facility. This corresponds exactly to
the kernel's syslog system call, but that name is easily confused
with the user-level syslog facility, which is something completely
different. */
extern int klogctl __P((int type, char *bufp, int len));
extern int klogctl __P ((int __type, char *__bufp, int __len));
#endif /* _SYS_KLOG_H */

View file

@ -1,21 +1,24 @@
#ifndef _SYS_MODULE_H
#define _SYS_MODULE_H
#ifndef _SYS_MODULE_H
#define _SYS_MODULE_H 1
#include <features.h>
#define __need_size_t
#include <stddef.h>
#include <linux/module.h>
/* Return number of kernel symbols if TABLE == NULL, otherwise, return
kernel symbols in TABLE. TABLE must be large enough to hold all
kernel symbols. */
extern int get_kernel_syms __P((struct kernel_sym * table));
extern int get_kernel_syms __P ((struct kernel_sym * table));
/* Create a new module of name MODULE_NAME and of size SIZE bytes.
The return address is the starting address of the new module or -1L
if the module cannot be created (the return value needs to be cast
to (long) to detect the error condition). */
extern unsigned long create_module __P((const char * module_name,
size_t size));
extern unsigned long create_module __P ((__const char * module_name,
size_t size));
/* Initialize the module called MODULE_NAME with the CONTENTSSIZE
bytes starting at address CONTENTS. CONTENTS normally contains the
@ -25,12 +28,12 @@ extern unsigned long create_module __P((const char * module_name,
ROUTINES.cleanup is executed. SYMTAB is NULL if the module does
not want to export symbols by itself, or a pointer to a symbol
table if the module wants to register its own symbols. */
extern int init_module __P((const char * module_name,
const void * contents, size_t contentssize,
struct mod_routines * routines,
struct symbol_table * symtab));
extern int init_module __P ((__const char * module_name,
__const void * contents, size_t contentssize,
struct mod_routines * routines,
struct symbol_table * symtab));
/* Delete the module named MODULE_NAME from the kernel. */
extern int delete_module __P((const char *module_name));
extern int delete_module __P ((__const char *module_name));
#endif /* _SYS_MODULE_H */

View file

@ -1,4 +1,5 @@
/* Copyright (C) 1995 Free Software Foundation, Inc.
/* Copyright (C) 1995, 1996 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
@ -15,10 +16,12 @@ 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. */
#ifndef _SYS_TIMEX_H
#define _SYS_TIMEX_H
#ifndef _SYS_TIMEX_H
#define _SYS_TIMEX_H 1
#include <features.h>
#include <sys/time.h>
#include <linux/timex.h>
__BEGIN_DECLS