Changeset 2133 for trunk


Ignore:
Timestamp:
Jul 1, 2005, 5:59:56 AM (20 years ago)
Author:
bird
Message:

Added getlogin_r().

Location:
trunk/src/emx
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/emx/include/unistd.h

    • Property cvs2svn:cvs-rev changed from 1.30 to 1.31
    r2132 r2133  
    413413
    414414#if __POSIX_VISIBLE >= 199506
    415 /** @todo int    getlogin_r(char *, int); */
     415int      getlogin_r(char *, int);
    416416#endif
    417417
  • trunk/src/emx/src/lib/libc.def

    • Property cvs2svn:cvs-rev changed from 1.123 to 1.124
    r2132 r2133  
    17521752    "__std_getdelim" @1753
    17531753    "__std_getline" @1754
     1754    "__std_getlogin_r" @1755
  • trunk/src/emx/src/lib/misc/cuserid.c

    • Property cvs2svn:cvs-rev changed from 1.4 to 1.5
    r2132 r2133  
    33#include "libc-alias.h"
    44#include <stdio.h>
    5 #include <stdlib.h>
    6 #include <string.h>
     5#include <unistd.h>
     6#include <unistd.h>
    77
    8 char *_STD(cuserid) (char *buffer)
     8char *_STD(cuserid)(char *string)
    99{
    10   static char tmp_name[L_cuserid];
    11   const char *name;
     10    static char s_sz[L_cuserid];
     11    if (!string)
     12        string = s_sz;
     13    /** @todo this is wrong, it may be a different user! s*/
     14    if (!getlogin_r(string, L_cuserid))
     15        return string;
     16    return NULL;
     17}
    1218
    13   name = getenv ("LOGNAME");
    14   if (name == NULL)
    15     name = getenv ("USER");
    16   if (name == NULL)
    17     name = "root";
    18   if (buffer == NULL)
    19     buffer = tmp_name;
    20   _strncpy (buffer, name, L_cuserid);
    21   return buffer;
    22 }
  • trunk/src/emx/src/lib/misc/getlogin.c

    • Property cvs2svn:cvs-rev changed from 1.4 to 1.5
    r2132 r2133  
    66#include <string.h>
    77#include <unistd.h>
     8#include <errno.h>
    89
    9 char *_STD(getlogin) (void)
     10char *_STD(getlogin)(void)
    1011{
    11   static char tmp_name[L_cuserid];
    12   const char *name;
     12    static char tmp_name[L_cuserid];
     13    if (!getlogin_r(tmp_name, sizeof(tmp_name)))
     14        return tmp_name;
     15    return NULL;
     16}
    1317
    14   name = getenv ("LOGNAME");
    15   if (name == NULL)
    16     name = getenv ("USER");
    17   if (name == NULL)
    18     name = "root";
    19   _strncpy (tmp_name, name, sizeof (tmp_name));
    20   return tmp_name;
     18int _STD(getlogin_r)(char *buf, int size)
     19{
     20    if (size >= 0)
     21    {
     22        /** @todo this isn't correct, use the uid stuff in SPM */
     23        const char *pszName = getenv("LOGNAME");
     24        if (!pszName)
     25            pszName = getenv("USER");
     26        if (!pszName)
     27            pszName = "root";
     28        int cchName = strlen(pszName);
     29        if (cchName <= size)
     30        {
     31            memcpy(buf, pszName, cchName + 1);
     32            return 0;
     33        }
     34        memcpy(buf, pszName, --size);
     35        buf[size] = '\0';
     36    }
     37    errno = ERANGE;
     38    return -1;
    2139}
     40
Note: See TracChangeset for help on using the changeset viewer.