2003-08-18 Ralf Corsepius <corsepiu@faw.uni-ulm.de>

PR 449/rtems:
	* src/getegid.c: New (Copied from ../posix/src).
	* src/geteuid.c: New (Copied from ../posix/src).
	* src/getgid.c: New (Copied from ../posix/src).
	* src/getgroups.c: New (Copied from ../posix/src).
	* src/getlogin.c: New (Copied from ../posix/src).
	* src/getpgrp.c: New (Copied from ../posix/src).
	* src/getpid.c: New (Copied from ../posix/src).
	* src/getppid.c: New (Copied from ../posix/src).
	* src/getuid.c: New (Copied from ../posix/src).
	* src/setpgid.c: New (Copied from ../posix/src).
	* src/setsid.c: New (Copied from ../posix/src).
	* src/no_posix: Remove getpid and _getpid_r.
	* Makefile.am: Reflect changes above.
This commit is contained in:
Ralf Corsepius
2003-08-18 07:31:32 +00:00
parent de85d7be56
commit c5f52e9725
15 changed files with 450 additions and 23 deletions

View File

@@ -1,7 +1,24 @@
2003-08-18 Ralf Corsepius <corsepiu@faw.uni-ulm.de>
PR 449/rtems:
* src/getegid.c: New (Copied from ../posix/src).
* src/geteuid.c: New (Copied from ../posix/src).
* src/getgid.c: New (Copied from ../posix/src).
* src/getgroups.c: New (Copied from ../posix/src).
* src/getlogin.c: New (Copied from ../posix/src).
* src/getpgrp.c: New (Copied from ../posix/src).
* src/getpid.c: New (Copied from ../posix/src).
* src/getppid.c: New (Copied from ../posix/src).
* src/getuid.c: New (Copied from ../posix/src).
* src/setpgid.c: New (Copied from ../posix/src).
* src/setsid.c: New (Copied from ../posix/src).
* src/no_posix: Remove getpid and _getpid_r.
* Makefile.am: Reflect changes above.
2003-08-14 Joel Sherrill <joel@OARcorp.com>
* Makefile.am: Add fileio to list of interactive tests.
* src/sync.c: New file.
* src/sync.c: New (Copied from ../posix/src). New file.
2003-08-05 Till Strauman <strauman@slac.stanford.edu>

View File

@@ -123,6 +123,10 @@ DIRECTORY_SCAN_C_FILES = src/opendir.c src/closedir.c src/readdir.c \
src/readdir_r.c src/rewinddir.c src/scandir.c src/seekdir.c \
src/telldir.c src/getcwd.c
ID_C_FILES = src/getegid.c src/geteuid.c src/getgid.c src/getgroups.c \
src/getlogin.c src/getpgrp.c \
src/getpid.c src/getppid.c src/getuid.c src/setpgid.c src/setsid.c
MALLOC_C_FILES = src/malloc.c src/mallocfreespace.c src/__brk.c src/__sbrk.c
PASSWORD_GROUP_C_FILES = src/getpwent.c
@@ -148,7 +152,7 @@ UNIX_C_FILES = $(UNIX_LIBC_C_FILES)
EMBEDDED_C_FILES = $(LIBC_GLUE_C_FILES) $(PASSWORD_GROUP_C_FILES) \
$(TERMINAL_IDENTIFICATION_C_FILES) $(SYSTEM_CALL_C_FILES) \
$(DIRECTORY_SCAN_C_FILES)
$(DIRECTORY_SCAN_C_FILES) $(ID_C_FILES)
if UNIX
C_FILES = $(COMMON_C_FILES) $(UNIX_C_FILES)

View File

@@ -0,0 +1,33 @@
/*
* $Id$
*/
#if HAVE_CONFIG_H
#include "config.h"
#endif
#include <limits.h>
#include <string.h>
#include <sys/types.h>
#include <rtems/system.h>
#include <rtems/score/object.h>
#include <rtems/seterr.h>
#include <rtems/userenv.h>
/*
* MACRO in userenv.h
gid_t _POSIX_types_Egid = 0;
*/
/*PAGE
*
* 4.2.1 Get Real User, Effective User, Ral Group, and Effective Group IDs,
* P1003.1b-1993, p. 84
*/
gid_t getegid( void )
{
return _POSIX_types_Egid;
}

View File

@@ -0,0 +1,33 @@
/*
* $Id$
*/
#if HAVE_CONFIG_H
#include "config.h"
#endif
#include <limits.h>
#include <string.h>
#include <sys/types.h>
#include <rtems/system.h>
#include <rtems/score/object.h>
#include <rtems/seterr.h>
#include <rtems/userenv.h>
/*
* MACRO in userenv.h
uid_t _POSIX_types_Euid = 0;
*/
/*PAGE
*
* 4.2.1 Get Real User, Effective User, Ral Group, and Effective Group IDs,
* P1003.1b-1993, p. 84
*/
uid_t geteuid( void )
{
return _POSIX_types_Euid;
}

View File

@@ -0,0 +1,47 @@
/*
* $Id$
*/
#if HAVE_CONFIG_H
#include "config.h"
#endif
#include <limits.h>
#include <string.h>
#include <sys/types.h>
#include <rtems/system.h>
#include <rtems/score/object.h>
#include <rtems/seterr.h>
#include <rtems/userenv.h>
/*
* MACRO in userenv.h
*
gid_t _POSIX_types_Gid = 0;
*/
/*PAGE
*
* 4.2.1 Get Real User, Effective User, Ral Group, and Effective Group IDs,
* P1003.1b-1993, p. 84
*/
gid_t getgid( void )
{
return _POSIX_types_Gid;
}
/*PAGE
*
* 4.2.2 Set User and Group IDs, P1003.1b-1993, p. 84
*/
int setgid(
gid_t gid
)
{
_POSIX_types_Gid = gid;
return 0;
}

View File

@@ -0,0 +1,30 @@
/*
* $Id$
*/
#if HAVE_CONFIG_H
#include "config.h"
#endif
#include <limits.h>
#include <errno.h>
#include <string.h>
#include <sys/types.h>
#include <rtems/system.h>
#include <rtems/score/object.h>
#include <rtems/seterr.h>
/*PAGE
*
* 4.2.3 Get Supplementary IDs, P1003.1b-1993, p. 86
*/
int getgroups(
int gidsetsize,
gid_t grouplist[]
)
{
return 0; /* no supplemental group ids */
}

View File

@@ -0,0 +1,64 @@
/*
* $Id$
*/
#if HAVE_CONFIG_H
#include "config.h"
#endif
#include <limits.h>
#include <string.h>
#include <sys/types.h>
#include <errno.h>
#include <rtems/system.h>
#include <rtems/score/object.h>
#include <rtems/seterr.h>
#include <rtems/userenv.h>
#include <unistd.h>
#include <pwd.h>
/*PAGE
*
* 4.2.4 Get User Name, P1003.1b-1993, p. 87
*
* NOTE: P1003.1c/D10, p. 49 adds getlogin_r().
*/
/*
* MACRO in userenv.h
*
static char _POSIX_types_Getlogin_buffer[ LOGIN_NAME_MAX ];
*/
char *getlogin( void )
{
(void) getlogin_r( _POSIX_types_Getlogin_buffer, LOGIN_NAME_MAX );
return _POSIX_types_Getlogin_buffer;
}
/*PAGE
*
* 4.2.4 Get User Name, P1003.1b-1993, p. 87
*
* NOTE: P1003.1c/D10, p. 49 adds getlogin_r().
*/
int getlogin_r(
char *name,
size_t namesize
)
{
struct passwd *pw;
if ( namesize < LOGIN_NAME_MAX )
return ERANGE;
pw=getpwuid(getuid());
if (!pw) {
strcpy(name,"");
} else {
strncpy(name,pw->pw_name,LOGIN_NAME_MAX);
};
return 0;
}

View File

@@ -0,0 +1,31 @@
/*
* $Id$
*/
#if HAVE_CONFIG_H
#include "config.h"
#endif
#include <limits.h>
#include <errno.h>
#include <string.h>
#include <sys/types.h>
#include <rtems/system.h>
#include <rtems/score/object.h>
#include <rtems/seterr.h>
/*PAGE
*
* 4.3.1 Get Process Group IDs, P1003.1b-1993, p. 89
*/
pid_t getpgrp( void )
{
/*
* This always succeeds and returns the process group id. For rtems,
* this will always be the local node;
*/
return _Objects_Local_node;
}

View File

@@ -0,0 +1,45 @@
/*
* $Id$
*/
#if HAVE_CONFIG_H
#include "config.h"
#endif
#include <limits.h>
#include <errno.h>
#include <string.h>
#include <sys/types.h>
#include <rtems/system.h>
#include <rtems/score/object.h>
#include <rtems/seterr.h>
/*PAGE
*
* 4.1.1 Get Process and Parent Process IDs, P1003.1b-1993, p. 83
*/
pid_t getpid( void )
{
return _Objects_Local_node;
}
/*
* _getpid_r
*
* This is the Newlib dependent reentrant version of getpid().
*/
#if defined(RTEMS_NEWLIB)
#include <reent.h>
pid_t _getpid_r(
struct _reent *ptr
)
{
return getpid();
}
#endif

View File

@@ -0,0 +1,29 @@
/*
* $Id$
*/
#if HAVE_CONFIG_H
#include "config.h"
#endif
#include <limits.h>
#include <errno.h>
#include <string.h>
#include <sys/types.h>
#include <rtems/system.h>
#include <rtems/score/object.h>
#include <rtems/seterr.h>
pid_t _POSIX_types_Ppid = 0;
/*PAGE
*
* 4.1.1 Get Process and Parent Process IDs, P1003.1b-1993, p. 83
*/
pid_t getppid( void )
{
return _POSIX_types_Ppid;
}

View File

@@ -0,0 +1,47 @@
/*
* $Id$
*/
#if HAVE_CONFIG_H
#include "config.h"
#endif
#include <limits.h>
#include <string.h>
#include <sys/types.h>
#include <rtems/system.h>
#include <rtems/score/object.h>
#include <rtems/seterr.h>
#include <rtems/userenv.h>
/*
* MACRO in userenv.h
*
uid_t _POSIX_types_Uid = 0;
*/
/*PAGE
*
* 4.2.1 Get Real User, Effective User, Ral Group, and Effective Group IDs,
* P1003.1b-1993, p. 84
*/
uid_t getuid( void )
{
return _POSIX_types_Uid;
}
/*PAGE
*
* 4.2.2 Set User and Group IDs, P1003.1b-1993, p. 84
*/
int setuid(
uid_t uid
)
{
_POSIX_types_Uid = uid;
return 0;
}

View File

@@ -0,0 +1,11 @@
libcsupport/src/getegid.c
libcsupport/src/geteuid.c
libcsupport/src/getgid.c
libcsupport/src/getgroups.c
libcsupport/src/getlogin.c
libcsupport/src/getpgrp.c
libcsupport/src/getpid.c
libcsupport/src/getppid.c
libcsupport/src/getuid.c
libcsupport/src/setpgid.c
libcsupport/src/setsid.c

View File

@@ -2,8 +2,6 @@
* Marginal implementations of some POSIX API routines
* to be used when POSIX is disabled.
*
* + getpid
* + _getpid_r
* + kill
* + _kill_r
* + __kill
@@ -28,25 +26,6 @@
* These are directly supported (and completely correct) in the posix api.
*/
#if !defined(RTEMS_POSIX_API)
pid_t getpid(void)
{
return 0;
}
#if defined(RTEMS_NEWLIB)
#include <reent.h>
pid_t _getpid_r(
struct _reent *ptr
)
{
return getpid();
}
#endif
#endif
#if !defined(RTEMS_POSIX_API)
int kill( pid_t pid, int sig )
{

View File

@@ -0,0 +1,29 @@
/*
* $Id$
*/
#if HAVE_CONFIG_H
#include "config.h"
#endif
#include <limits.h>
#include <errno.h>
#include <string.h>
#include <sys/types.h>
#include <rtems/system.h>
#include <rtems/score/object.h>
#include <rtems/seterr.h>
/*PAGE
*
* 4.3.3 Set Process Group ID for Job Control, P1003.1b-1993, p. 89
*/
int setpgid(
pid_t pid,
pid_t pgid
)
{
rtems_set_errno_and_return_minus_one( ENOSYS );
}

View File

@@ -0,0 +1,28 @@
/*
* $Id$
*/
#if HAVE_CONFIG_H
#include "config.h"
#endif
#include <limits.h>
#include <errno.h>
#include <string.h>
#include <sys/types.h>
#include <rtems/system.h>
#include <rtems/score/object.h>
#include <rtems/seterr.h>
/*PAGE
*
* 4.3.2 Create Session and Set Process Group ID, P1003.1b-1993, p. 88
*/
pid_t setsid( void )
{
rtems_set_errno_and_return_minus_one( EPERM );
}