posix_getpw.c revision 225736
1/*
2 * Copyright (c) 1999 Kungliga Tekniska H�gskolan
3 * (Royal Institute of Technology, Stockholm, Sweden).
4 * All rights reserved.
5 *
6 * Redistribution and use in source and binary forms, with or without
7 * modification, are permitted provided that the following conditions
8 * are met:
9 *
10 * 1. Redistributions of source code must retain the above copyright
11 *    notice, this list of conditions and the following disclaimer.
12 *
13 * 2. Redistributions in binary form must reproduce the above copyright
14 *    notice, this list of conditions and the following disclaimer in the
15 *    documentation and/or other materials provided with the distribution.
16 *
17 * 3. Neither the name of KTH nor the names of its contributors may be
18 *    used to endorse or promote products derived from this software without
19 *    specific prior written permission.
20 *
21 * THIS SOFTWARE IS PROVIDED BY KTH AND ITS CONTRIBUTORS ``AS IS'' AND ANY
22 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
23 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
24 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL KTH OR ITS CONTRIBUTORS BE
25 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
26 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
27 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
28 * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
29 * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
30 * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
31 * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */
32
33#include "sia_locl.h"
34
35RCSID("$Id: posix_getpw.c 5680 1999-03-21 17:07:02Z joda $");
36
37#ifndef POSIX_GETPWNAM_R
38/*
39 * These functions translate from the old Digital UNIX 3.x interface
40 * to POSIX.1c.
41 */
42
43int
44posix_getpwnam_r(const char *name, struct passwd *pwd,
45		 char *buffer, int len, struct passwd **result)
46{
47    int ret = getpwnam_r(name, pwd, buffer, len);
48    if(ret == 0)
49	*result = pwd;
50    else{
51	*result = NULL;
52	ret = _Geterrno();
53	if(ret == 0){
54	    ret = ERANGE;
55	    _Seterrno(ret);
56	}
57    }
58    return ret;
59}
60
61int
62posix_getpwuid_r(uid_t uid, struct passwd *pwd,
63		 char *buffer, int len, struct passwd **result)
64{
65    int ret = getpwuid_r(uid, pwd, buffer, len);
66    if(ret == 0)
67	*result = pwd;
68    else{
69	*result = NULL;
70	ret = _Geterrno();
71	if(ret == 0){
72	    ret = ERANGE;
73	    _Seterrno(ret);
74	}
75    }
76    return ret;
77}
78#endif /* POSIX_GETPWNAM_R */
79