1

我按照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 有什么问题以及如何删除?

4

0 回答 0