我按照https://issues.apache.org/jira/browse/HADOOP-3123操作,输入命令
root@one: /export/hadoop-1.0.1/# ant -Dcompile.native=true -Dnonspace.os=SunOS - Dmake.cmd=/usr/local/bin/make clean tar
结果也收到了(这是一部分)
[exec] checking for an ANSI C-conforming const... yes
[exec] checking for memset... yes
[exec] checking whether strerror_r is declared... yes
[exec] checking for strerror_r... yes
[exec] checking whether strerror_r returns char *... no
[exec] configure: creating ./config.status
[exec] /bin/sh ./config.status
[exec] config.status: creating Makefile
[exec] config.status: creating config.h
[exec] config.status: config.h is unchanged
[exec] config.status: executing depfiles commands
[exec] cd /export/hadoop-1.0.1/src/native && /bin/sh /export/hadoop-1.0.1/src/native/config/missing --run autoheader
[exec] rm -f stamp-h1
[exec] touch /export/hadoop-1.0.1/src/native/config.h.in
[exec] cd . && /bin/sh ./config.status config.h
[exec] /export/hadoop-1.0.1/src/native/config/missing[52]: autoheader: not found [No such file or directory]
[exec] WARNING: `autoheader' is missing on your system. You should only need it if
[exec] you modified `acconfig.h' or `configure.ac'. You might want
[exec] to install the `Autoconf' and `GNU m4' packages. Grab them
[exec] from any GNU archive site.
[exec] config.status: creating config.h
[exec] config.status: config.h is unchanged
[exec] /usr/local/bin/make all-am
[exec] make[1]: Entering directory `/export/hadoop-1.0.1/build/native/SunOS-x86-32'
[exec] if /bin/sh ./libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I/export/hadoop-1.0.1/src/native -I. -I/opt/jdk1.7.0_06/include -I/opt/jdk1.7.0_06/include/solaris -I/export/hadoop-1.0.1/src/native/src -Isrc/org/apache/hadoop/io/compress/zlib -Isrc/org/apache/hadoop/io/nativeio -Isrc/org/apache/hadoop/security -g -Wall -fPIC -O2 -m32 -g -O2 -MT ZlibCompressor.lo -MD -MP -MF ".deps/ZlibCompressor.Tpo" -c -o ZlibCompressor.lo `test -f 'src/org/apache/hadoop/io/compress/zlib/ZlibCompressor.c' || echo '/export/hadoop-1.0.1/src/native/'`src/org/apache/hadoop/io/compress/zlib/ZlibCompressor.c; \
[exec] then mv -f ".deps/ZlibCompressor.Tpo" ".deps/ZlibCompressor.Plo"; else rm -f ".deps/ZlibCompressor.Tpo"; exit 1; fi
[exec] mkdir .libs
[exec] gcc -DHAVE_CONFIG_H -I. -I/export/hadoop-1.0.1/src/native -I. -I/opt/jdk1.7.0_06/include -I/opt/jdk1.7.0_06/include/solaris -I/export/hadoop-1.0.1/src/native/src -Isrc/org/apache/hadoop/io/compress/zlib -Isrc/org/apache/hadoop/io/nativeio -Isrc/org/apache/hadoop/security -g -Wall -fPIC -O2 -m32 -g -O2 -MT ZlibCompressor.lo -MD -MP -MF .deps/ZlibCompressor.Tpo -c /export/hadoop-1.0.1/src/native/src/org/apache/hadoop/io/compress/zlib/ZlibCompressor.c -fPIC -DPIC -o .libs/ZlibCompressor.o
[exec] gcc -DHAVE_CONFIG_H -I. -I/export/hadoop-1.0.1/src/native -I. -I/opt/jdk1.7.0_06/include -I/opt/jdk1.7.0_06/include/solaris -I/export/hadoop-1.0.1/src/native/src -Isrc/org/apache/hadoop/io/compress/zlib -Isrc/org/apache/hadoop/io/nativeio -Isrc/org/apache/hadoop/security -g -Wall -fPIC -O2 -m32 -g -O2 -MT ZlibCompressor.lo -MD -MP -MF .deps/ZlibCompressor.Tpo -c /export/hadoop-1.0.1/src/native/src/org/apache/hadoop/io/compress/zlib/ZlibCompressor.c -o ZlibCompressor.o >/dev/null 2>&1
[exec] if /bin/sh ./libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I/export/hadoop-1.0.1/src/native -I. -I/opt/jdk1.7.0_06/include -I/opt/jdk1.7.0_06/include/solaris -I/export/hadoop-1.0.1/src/native/src -Isrc/org/apache/hadoop/io/compress/zlib -Isrc/org/apache/hadoop/io/nativeio -Isrc/org/apache/hadoop/security -g -Wall -fPIC -O2 -m32 -g -O2 -MT ZlibDecompressor.lo -MD -MP -MF ".deps/ZlibDecompressor.Tpo" -c -o ZlibDecompressor.lo `test -f 'src/org/apache/hadoop/io/compress/zlib/ZlibDecompressor.c' || echo '/export/hadoop-1.0.1/src/native/'`src/org/apache/hadoop/io/compress/zlib/ZlibDecompressor.c; \
[exec] then mv -f ".deps/ZlibDecompressor.Tpo" ".deps/ZlibDecompressor.Plo"; else rm -f ".deps/ZlibDecompressor.Tpo"; exit 1; fi
[exec] gcc -DHAVE_CONFIG_H -I. -I/export/hadoop-1.0.1/src/native -I. -I/opt/jdk1.7.0_06/include -I/opt/jdk1.7.0_06/include/solaris -I/export/hadoop-1.0.1/src/native/src -Isrc/org/apache/hadoop/io/compress/zlib -Isrc/org/apache/hadoop/io/nativeio -Isrc/org/apache/hadoop/security -g -Wall -fPIC -O2 -m32 -g -O2 -MT ZlibDecompressor.lo -MD -MP -MF .deps/ZlibDecompressor.Tpo -c /export/hadoop-1.0.1/src/native/src/org/apache/hadoop/io/compress/zlib/ZlibDecompressor.c -fPIC -DPIC -o .libs/ZlibDecompressor.o
[exec] gcc -DHAVE_CONFIG_H -I. -I/export/hadoop-1.0.1/src/native -I. -I/opt/jdk1.7.0_06/include -I/opt/jdk1.7.0_06/include/solaris -I/export/hadoop-1.0.1/src/native/src -Isrc/org/apache/hadoop/io/compress/zlib -Isrc/org/apache/hadoop/io/nativeio -Isrc/org/apache/hadoop/security -g -Wall -fPIC -O2 -m32 -g -O2 -MT ZlibDecompressor.lo -MD -MP -MF .deps/ZlibDecompressor.Tpo -c /export/hadoop-1.0.1/src/native/src/org/apache/hadoop/io/compress/zlib/ZlibDecompressor.c -o ZlibDecompressor.o >/dev/null 2>&1
[exec] if /bin/sh ./libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I/export/hadoop-1.0.1/src/native -I. -I/opt/jdk1.7.0_06/include -I/opt/jdk1.7.0_06/include/solaris -I/export/hadoop-1.0.1/src/native/src -Isrc/org/apache/hadoop/io/compress/zlib -Isrc/org/apache/hadoop/io/nativeio -Isrc/org/apache/hadoop/security -g -Wall -fPIC -O2 -m32 -g -O2 -MT getGroup.lo -MD -MP -MF ".deps/getGroup.Tpo" -c -o getGroup.lo `test -f 'src/org/apache/hadoop/security/getGroup.c' || echo '/export/hadoop-1.0.1/src/native/'`src/org/apache/hadoop/security/getGroup.c; \
[exec] then mv -f ".deps/getGroup.Tpo" ".deps/getGroup.Plo"; else rm -f ".deps/getGroup.Tpo"; exit 1; fi
[exec] gcc -DHAVE_CONFIG_H -I. -I/export/hadoop-1.0.1/src/native -I. -I/opt/jdk1.7.0_06/include -I/opt/jdk1.7.0_06/include/solaris -I/export/hadoop-1.0.1/src/native/src -Isrc/org/apache/hadoop/io/compress/zlib -Isrc/org/apache/hadoop/io/nativeio -Isrc/org/apache/hadoop/security -g -Wall -fPIC -O2 -m32 -g -O2 -MT getGroup.lo -MD -MP -MF .deps/getGroup.Tpo -c /export/hadoop-1.0.1/src/native/src/org/apache/hadoop/security/getGroup.c -fPIC -DPIC -o .libs/getGroup.o
[exec] make[1]: Leaving directory `/export/hadoop-1.0.1/build/native/SunOS-x86-32'
[exec] /export/hadoop-1.0.1/src/native/src/org/apache/hadoop/security/getGroup.c: In function 'getGroupIDList':
[exec] /export/hadoop-1.0.1/src/native/src/org/apache/hadoop/security/getGroup.c:42: warning: implicit declaration of function 'getPW'
[exec] /export/hadoop-1.0.1/src/native/src/org/apache/hadoop/security/getGroup.c:52: warning: implicit declaration of function 'getgrouplist'
[exec] /export/hadoop-1.0.1/src/native/src/org/apache/hadoop/security/getGroup.c: In function 'getGroupDetails':
[exec] /export/hadoop-1.0.1/src/native/src/org/apache/hadoop/security/getGroup.c:90: error: too many arguments to function 'getgrgid_r'
[exec] /export/hadoop-1.0.1/src/native/src/org/apache/hadoop/security/getGroup.c:90: warning: assignment makes integer from pointer without a cast
[exec] /export/hadoop-1.0.1/src/native/src/org/apache/hadoop/security/getGroup.c: In function 'getPW':
[exec] /export/hadoop-1.0.1/src/native/src/org/apache/hadoop/security/getGroup.c:132: error: too many arguments to function 'getpwnam_r'
[exec] /export/hadoop-1.0.1/src/native/src/org/apache/hadoop/security/getGroup.c:132: warning: assignment makes integer from pointer without a cast
[exec] make[1]: *** [getGroup.lo] Error 1
[exec] make: *** [all] Error 2
BUILD FAILED
/export/hadoop-1.0.1/build.xml:653: exec returned: 2
Total time: 58 seconds
我提供了这些功能满足的标题文件的文本
/usr/include/grp.h
/*
* CDDL HEADER START
*
* The contents of this file are subject to the terms of the
* Common Development and Distribution License, Version 1.0 only
* (the "License"). You may not use this file except in compliance
* with the License.
*
* You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
* or http://www.opensolaris.org/os/licensing.
* See the License for the specific language governing permissions
* and limitations under the License.
*
* When distributing Covered Code, include this CDDL HEADER in each
* file and include the License file at usr/src/OPENSOLARIS.LICENSE.
* If applicable, add the following below this CDDL HEADER, with the
* fields enclosed by brackets "[]" replaced with your own identifying
* information: Portions Copyright [yyyy] [name of copyright owner]
*
* CDDL HEADER END
*/
/* Copyright (c) 1988 AT&T */
/* All Rights Reserved */
/*
* Copyright 2004 Sun Microsystems, Inc. All rights reserved.
* Use is subject to license terms.
*/
#ifndef _GRP_H
#define _GRP_H
#pragma ident "%Z%%M% %I% %E% SMI" /* SVr4.0 1.3.3.1 */
#include <sys/feature_tests.h>
#include <sys/types.h>
#if defined(__EXTENSIONS__) || !defined(__XOPEN_OR_POSIX)
#include <stdio.h>
#endif
#ifdef __cplusplus
extern "C" {
#endif
struct group { /* see getgrent(3C) */
char *gr_name;
char *gr_passwd;
gid_t gr_gid;
char **gr_mem;
};
#if defined(__STDC__)
extern struct group *getgrgid(gid_t); /* MT-unsafe */
extern struct group *getgrnam(const char *); /* MT-unsafe */
#if defined(__EXTENSIONS__) || !defined(__XOPEN_OR_POSIX)
extern struct group *getgrent_r(struct group *, char *, int);
extern struct group *fgetgrent_r(FILE *, struct group *, char *, int);
extern struct group *fgetgrent(FILE *); /* MT-unsafe */
extern int initgroups(const char *, gid_t);
#endif /* defined(__EXTENSIONS__) || !defined(__XOPEN_OR_POSIX) */
#if defined(__EXTENSIONS__) || !defined(__XOPEN_OR_POSIX) || defined(_XPG4_2)
extern void endgrent(void);
extern void setgrent(void);
extern struct group *getgrent(void); /* MT-unsafe */
#endif /* defined(__EXTENSIONS__) || !defined(__XOPEN_OR_POSIX)... */
#else
extern struct group *getgrgid(); /* MT-unsafe */
extern struct group *getgrnam(); /* MT-unsafe */
#if defined(__EXTENSIONS__) || !defined(__XOPEN_OR_POSIX)
extern struct group *getgrent_r();
extern struct group *fgetgrent_r();
extern struct group *fgetgrent(); /* MT-unsafe */
extern int initgroups();
#endif /* defined(__EXTENSIONS__) || !defined(__XOPEN_OR_POSIX) */
#if defined(__EXTENSIONS__) || !defined(__XOPEN_OR_POSIX) || defined(_XPG4_2)
extern void endgrent();
extern void setgrent();
extern struct group *getgrent(); /* MT-unsafe */
#endif /* defined(__EXTENSIONS__) || !defined(__XOPEN_OR_POSIX)... */
#endif /* __STDC__ */
/*
* getgrgid_r() & getgrnam_r() prototypes are defined here.
*/
/*
* Previous releases of Solaris, starting at 2.3, provided definitions of
* various functions as specified in POSIX.1c, Draft 6. For some of these
* functions, the final POSIX 1003.1c standard had a different number of
* arguments and return values.
*
* The following segment of this header provides support for the standard
* interfaces while supporting applications written under earlier
* releases. The application defines appropriate values of the feature
* test macros _POSIX_C_SOURCE and _POSIX_PTHREAD_SEMANTICS to indicate
* whether it was written to expect the Draft 6 or standard versions of
* these interfaces, before including this header. This header then
* provides a mapping from the source version of the interface to an
* appropriate binary interface. Such mappings permit an application
* to be built from libraries and objects which have mixed expectations
* of the definitions of these functions.
*
* For applications using the Draft 6 definitions, the binary symbol is the
* same as the source symbol, and no explicit mapping is needed. For the
* standard interface, the function func() is mapped to the binary symbol
* _posix_func(). The preferred mechanism for the remapping is a compiler
* #pragma. If the compiler does not provide such a #pragma, the header file
* defines a static function func() which calls the _posix_func() version;
* this has to be done instead of #define since POSIX specifies that an
* application can #undef the symbol and still be bound to the correct
* implementation. Unfortunately, the statics confuse lint so we fallback to
* #define in that case.
*
* NOTE: Support for the Draft 6 definitions is provided for compatibility
* only. New applications/libraries should use the standard definitions.
*/
#if defined(__EXTENSIONS__) || !defined(__XOPEN_OR_POSIX) || \
(_POSIX_C_SOURCE - 0 >= 199506L) || defined(_POSIX_PTHREAD_SEMANTICS)
#if defined(__STDC__)
#if (_POSIX_C_SOURCE - 0 >= 199506L) || defined(_POSIX_PTHREAD_SEMANTICS)
#ifdef __PRAGMA_REDEFINE_EXTNAME
#pragma redefine_extname getgrgid_r __posix_getgrgid_r
#pragma redefine_extname getgrnam_r __posix_getgrnam_r
extern int getgrgid_r(gid_t, struct group *, char *, int, struct group **);
extern int getgrnam_r(const char *, struct group *, char *, int,
struct group **);
#else /* __PRAGMA_REDEFINE_EXTNAME */
extern int __posix_getgrgid_r(gid_t, struct group *, char *, size_t,
struct group **);
extern int __posix_getgrnam_r(const char *, struct group *, char *, size_t,
struct group **);
#ifdef __lint
#define getgrgid_r __posix_getgrgid_r
#define getgrnam_r __posix_getgrnam_r
#else /* !__lint */
static int
getgrgid_r(gid_t __gid, struct group *__grp, char *__buf, int __len,
struct group **__res)
{
return (__posix_getgrgid_r(__gid, __grp, __buf, __len, __res));
}
static int
getgrnam_r(const char *__cb, struct group *__grp, char *__buf, int __len,
struct group **__res)
{
return (__posix_getgrnam_r(__cb, __grp, __buf, __len, __res));
}
#endif /* !__lint */
#endif /* __PRAGMA_REDEFINE_EXTNAME */
#else /* (_POSIX_C_SOURCE - 0 >= 199506L) || ... */
extern struct group *getgrgid_r(gid_t, struct group *, char *, int);
extern struct group *getgrnam_r(const char *, struct group *, char *, int);
#endif /* (_POSIX_C_SOURCE - 0 >= 199506L) || ... */
#else /* __STDC__ */
#if (_POSIX_C_SOURCE - 0 >= 199506L) || defined(_POSIX_PTHREAD_SEMANTICS)
#ifdef __PRAGMA_REDEFINE_EXTNAME
#pragma redefine_extname getgrgid_r __posix_getgrgid_r
#pragma redefine_extname getgrnam_r __posix_getgrnam_r
extern int getgrgid_r();
extern int getgrnam_r();
#else /* __PRAGMA_REDEFINE_EXTNAME */
extern int __posix_getgrgid_r();
extern int __posix_getgrnam_r();
#ifdef __lint
#define getgrgid_r __posix_getgrgid_r
#define getgrnam_r __posix_getgrnam_r
#else /* !__lint */
static int
getgrgid_r(__gid, __grp, __buf, __len, __res)
gid_t __gid;
struct group *__grp;
char *__buf;
int __len;
struct group **__res;
{
return (__posix_getgrgid_r(__gid, __grp, __buf, __len, __res));
}
static int
getgrnam_r(__cb, __grp, __buf, __len, __res)
char *__cb;
struct group *__grp;
char *__buf;
int __len;
struct group **__res;
{
return (__posix_getgrnam_r(__cb, __grp, __buf, __len, __res));
}
#endif /* !__lint */
#endif /* __PRAGMA_REDEFINE_EXTNAME */
#else /* (_POSIX_C_SOURCE - 0 >= 199506L) || ... */
extern struct group *getgrgid_r();
extern struct group *getgrnam_r();
#endif /* (_POSIX_C_SOURCE - 0 >= 199506L) || ... */
#endif /* __STDC__ */
#endif /* defined(__EXTENSIONS__) || !defined(__XOPEN_OR_POSIX)... */
#ifdef __cplusplus
}
#endif
#endif /* _GRP_H */
/usr/include/pwd.h
/*
* CDDL HEADER START
*
* The contents of this file are subject to the terms of the
* Common Development and Distribution License, Version 1.0 only
* (the "License"). You may not use this file except in compliance
* with the License.
*
* You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
* or http://www.opensolaris.org/os/licensing.
* See the License for the specific language governing permissions
* and limitations under the License.
*
* When distributing Covered Code, include this CDDL HEADER in each
* file and include the License file at usr/src/OPENSOLARIS.LICENSE.
* If applicable, add the following below this CDDL HEADER, with the
* fields enclosed by brackets "[]" replaced with your own identifying
* information: Portions Copyright [yyyy] [name of copyright owner]
*
* CDDL HEADER END
*/
/* Copyright (c) 1988 AT&T */
/* All Rights Reserved */
/*
* Copyright 2004 Sun Microsystems, Inc. All rights reserved.
* Use is subject to license terms.
*/
#ifndef _PWD_H
#define _PWD_H
#pragma ident "%Z%%M% %I% %E% SMI" /* SVr4.0 1.3.1.9 */
#include <sys/feature_tests.h>
#include <sys/types.h>
#if !defined(__XOPEN_OR_POSIX) || defined(__EXTENSIONS__)
#include <stdio.h>
#endif
#ifdef __cplusplus
extern "C" {
#endif
struct passwd {
char *pw_name;
char *pw_passwd;
uid_t pw_uid;
gid_t pw_gid;
char *pw_age;
char *pw_comment;
char *pw_gecos;
char *pw_dir;
char *pw_shell;
};
#if !defined(__XOPEN_OR_POSIX) || defined(__EXTENSIONS__)
struct comment {
char *c_dept;
char *c_name;
char *c_acct;
char *c_bin;
};
#endif /* !defined(__XOPEN_OR_POSIX) || defined(__EXTENSIONS__) */
#if defined(__STDC__)
extern struct passwd *getpwuid(uid_t); /* MT-unsafe */
extern struct passwd *getpwnam(const char *); /* MT-unsafe */
#if !defined(__XOPEN_OR_POSIX) || defined(__EXTENSIONS__)
extern struct passwd *getpwent_r(struct passwd *, char *, int);
extern struct passwd *fgetpwent_r(FILE *, struct passwd *, char *, int);
extern struct passwd *fgetpwent(FILE *); /* MT-unsafe */
extern int putpwent(const struct passwd *, FILE *);
#endif /* !defined(__XOPEN_OR_POSIX) || defined(__EXTENSIONS__) */
#if !defined(__XOPEN_OR_POSIX) || defined(_XPG4_2) || \
defined(__EXTENSIONS__)
extern void endpwent(void);
extern struct passwd *getpwent(void); /* MT-unsafe */
extern void setpwent(void);
#endif /* !defined(__XOPEN_OR_POSIX) || defined(_XPG4_2) ... */
#else /* (__STDC__) */
extern struct passwd *getpwuid(); /* MT-unsafe */
extern struct passwd *getpwnam(); /* MT-unsafe */
#if !defined(__XOPEN_OR_POSIX) || defined(__EXTENSIONS__)
extern struct passwd *getpwent_r();
extern struct passwd *fgetpwent_r();
extern struct passwd *fgetpwent(); /* MT-unsafe */
extern int putpwent();
#endif /* !defined(__XOPEN_OR_POSIX) || defined(__EXTENSIONS__) */
#if !defined(__XOPEN_OR_POSIX) || defined(_XPG4_2) || \
defined(__EXTENSIONS__)
extern void endpwent();
extern struct passwd *getpwent(); /* MT-unsafe */
extern void setpwent();
#endif /* !defined(__XOPEN_OR_POSIX) || defined(_XPG4_2) ... */
#endif /* (__STDC__) */
/*
* getpwuid_r() & getpwnam_r() prototypes are defined here.
*/
/*
* Previous releases of Solaris, starting at 2.3, provided definitions of
* various functions as specified in POSIX.1c, Draft 6. For some of these
* functions, the final POSIX 1003.1c standard had a different number of
* arguments and return values.
*
* The following segment of this header provides support for the standard
* interfaces while supporting applications written under earlier
* releases. The application defines appropriate values of the feature
* test macros _POSIX_C_SOURCE and _POSIX_PTHREAD_SEMANTICS to indicate
* whether it was written to expect the Draft 6 or standard versions of
* these interfaces, before including this header. This header then
* provides a mapping from the source version of the interface to an
* appropriate binary interface. Such mappings permit an application
* to be built from libraries and objects which have mixed expectations
* of the definitions of these functions.
*
* For applications using the Draft 6 definitions, the binary symbol is the
* same as the source symbol, and no explicit mapping is needed. For the
* standard interface, the function func() is mapped to the binary symbol
* _posix_func(). The preferred mechanism for the remapping is a compiler
* #pragma. If the compiler does not provide such a #pragma, the header file
* defines a static function func() which calls the _posix_func() version;
* this has to be done instead of #define since POSIX specifies that an
* application can #undef the symbol and still be bound to the correct
* implementation. Unfortunately, the statics confuse lint so we fallback to
* #define in that case.
*
* NOTE: Support for the Draft 6 definitions is provided for compatibility
* only. New applications/libraries should use the standard definitions.
*/
#if !defined(__XOPEN_OR_POSIX) || (_POSIX_C_SOURCE - 0 >= 199506L) || \
defined(_POSIX_PTHREAD_SEMANTICS) || defined(__EXTENSIONS__)
#if defined(__STDC__)
#if (_POSIX_C_SOURCE - 0 >= 199506L) || defined(_POSIX_PTHREAD_SEMANTICS)
#ifdef __PRAGMA_REDEFINE_EXTNAME
#pragma redefine_extname getpwuid_r __posix_getpwuid_r
#pragma redefine_extname getpwnam_r __posix_getpwnam_r
extern int getpwuid_r(uid_t, struct passwd *, char *, int, struct passwd **);
extern int getpwnam_r(const char *, struct passwd *, char *,
int, struct passwd **);
#else /* __PRAGMA_REDEFINE_EXTNAME */
extern int __posix_getpwuid_r(uid_t, struct passwd *, char *, size_t,
struct passwd **);
extern int __posix_getpwnam_r(const char *, struct passwd *, char *,
size_t, struct passwd **);
#ifdef __lint
#define getpwuid_r __posix_getpwuid_r
#define getpwnam_r __posix_getpwnam_r
#else /* !__lint */
static int
getpwuid_r(uid_t __uid, struct passwd *__pwd, char *__buf, int __len,
struct passwd **__res)
{
return (__posix_getpwuid_r(__uid, __pwd, __buf, __len, __res));
}
static int
getpwnam_r(const char *__cb, struct passwd *__pwd, char *__buf, int __len,
struct passwd **__res)
{
return (__posix_getpwnam_r(__cb, __pwd, __buf, __len, __res));
}
#endif /* !__lint */
#endif /* __PRAGMA_REDEFINE_EXTNAME */
#else /* (_POSIX_C_SOURCE - 0 >= 199506L) || ... */
extern struct passwd *getpwuid_r(uid_t, struct passwd *, char *, int);
extern struct passwd *getpwnam_r(const char *, struct passwd *, char *, int);
#endif /* (_POSIX_C_SOURCE - 0 >= 199506L) || ... */
#else /* __STDC__ */
#if (_POSIX_C_SOURCE - 0 >= 199506L) || defined(_POSIX_PTHREAD_SEMANTICS)
#ifdef __PRAGMA_REDEFINE_EXTNAME
#pragma redefine_extname getpwuid_r __posix_getpwuid_r
#pragma redefine_extname getpwnam_r __posix_getpwnam_r
extern int getpwuid_r();
extern int getpwnam_r();
#else /* __PRAGMA_REDEFINE_EXTNAME */
extern int __posix_getpwuid_r();
extern int __posix_getpwnam_r();
#ifdef __lint
#define getpwuid_r __posix_getpwuid_r
#define getpwnam_r __posix_getpwnam_r
#else /* !__lint */
static int
getpwuid_r(__uid, __pwd, __buf, __len, __res)
uid_t __uid;
struct passwd *__pwd;
char *__buf;
int __len;
struct passwd **__res;
{
return (__posix_getpwuid_r(__uid, __pwd, __buf, __len, __res));
}
static int
getpwnam_r(__cb, __pwd, __buf, __len, __res)
char *__cb;
struct passwd *__pwd;
char *__buf;
int __len;
struct passwd **__res;
{
return (__posix_getpwnam_r(__cb, __pwd, __buf, __len, __res));
}
#endif /* !__lint */
#endif /* __PRAGMA_REDEFINE_EXTNAME */
#else /* (_POSIX_C_SOURCE - 0 >= 199506L) || ... */
extern struct passwd *getpwuid_r();
extern struct passwd *getpwnam_r();
#endif /* (_POSIX_C_SOURCE - 0 >= 199506L) || ... */
#endif /* __STDC__ */
#endif /* !defined(__XOPEN_OR_POSIX) || (_POSIX_C_SOURCE - 0 >= 199506L)... */
#ifdef __cplusplus
}
#endif
#endif /* _PWD_H */
函数 getgrouplist、getgrgid_r、getpwnam_r 有什么问题以及如何删除?