mirror of
https://sourceware.org/git/glibc.git
synced 2024-11-21 20:40:05 +00:00
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:
parent
f2b5d40e87
commit
267ca16a67
41
ChangeLog
41
ChangeLog
@ -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
|
||||
|
@ -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
63
grp/fgetgrent_r.c
Normal 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)
|
1
io/fts.h
1
io/fts.h
@ -37,6 +37,7 @@
|
||||
#define _FTS_H_
|
||||
|
||||
#include <sys/cdefs.h>
|
||||
#include <sys/types.h>
|
||||
|
||||
typedef struct {
|
||||
struct _ftsent *fts_cur; /* current node */
|
||||
|
37
nss/nss_files/files-spwd.c
Normal file
37
nss/nss_files/files-spwd.c
Normal 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
22
nss/spwd-lookup.c
Normal 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
65
pwd/fgetpwent_r.c
Normal 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
29
shadow/Makefile
Normal 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
31
shadow/fgetspent.c
Normal 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
56
shadow/fgetspent_r.c
Normal 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
30
shadow/getspent.c
Normal 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
30
shadow/getspent_r.c
Normal 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
30
shadow/getspnam.c
Normal 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
30
shadow/getspnam_r.c
Normal 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
80
shadow/putspent.c
Normal 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
46
shadow/sgetspent.c
Normal 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
72
shadow/sgetspent_r.c
Normal 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
108
shadow/shadow.h
Normal 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 */
|
@ -26,5 +26,4 @@ int main(int arc, char *argv)
|
||||
abort ();
|
||||
|
||||
return 0;
|
||||
return 0;
|
||||
}
|
||||
|
@ -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__ */
|
||||
|
2
sysdeps/i386/i686/Implies
Normal file
2
sysdeps/i386/i686/Implies
Normal file
@ -0,0 +1,2 @@
|
||||
# Code optimized for i586 is better than simple i386 code.
|
||||
i386/i586
|
@ -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
|
||||
|
@ -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
|
||||
|
118
sysdeps/unix/sysv/linux/alpha/clone.S
Normal file
118
sysdeps/unix/sysv/linux/alpha/clone.S
Normal 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)
|
@ -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 */
|
||||
|
3
sysdeps/unix/sysv/linux/ftime.c
Normal file
3
sysdeps/unix/sysv/linux/ftime.c
Normal 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>
|
80
sysdeps/unix/sysv/linux/i386/clone.S
Normal file
80
sysdeps/unix/sysv/linux/i386/clone.S
Normal 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)
|
@ -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. */
|
||||
|
@ -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>
|
||||
|
||||
|
@ -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 */
|
||||
|
@ -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 */
|
||||
|
@ -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 */
|
||||
|
@ -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
|
||||
|
Loading…
Reference in New Issue
Block a user