rogue > md_getusername()


※上記の広告は60日以上更新のないWIKIに表示されています。更新することで広告が下部へ移動します。

呼び出し元

rogue/main()

メモ

Userのログイン名を得るための関数。

OS間の差異を吸収。

LOGNAME環境変数から値を得る

環境変数なので、信頼性があまりないが、ゲームだからいいのか?

GetUserName関数

同じくユーザ名を得る

http://msdn.microsoft.com/ja-jp/library/cc429924.aspx

char *
md_getusername(void)
{
    static char login[80];
    char *l = NULL;

    /* POSIX Shell has priority, then O/S specific methods */
    if ( (l = getenv("LOGNAME")) != NULL )
    {
        strncpy(login,l,80);
        login[79] = 0;
        return(login);
    }

#ifdef _WIN32
    LPSTR mybuffer;
    DWORD size = UNLEN + 1;
    TCHAR buffer[UNLEN + 1];

    mybuffer = buffer;
    GetUserName(mybuffer,&size);
    l = mybuffer;
#elif defined(HAVE_GETPWUID)&& !defined(__DJGPP__)
    struct passwd *pw;

    pw = getpwuid(getuid());

    l = pw->pw_name;
#endif

    if ((l == NULL) || (*l == '\0'))
        if ( (l = getenv("USERNAME")) == NULL )
            if ( (l = getenv("LOGNAME")) == NULL )
                if ( (l = getenv("USER")) == NULL )
                    l = "nobody";

    strncpy(login,l,80);
    login[79] = 0;

    return(login);
}