1 /* Provide a working getlogin for systems which lack it. 2 3 Copyright (C) 2010-2021 Free Software Foundation, Inc. 4 5 This file is free software: you can redistribute it and/or modify 6 it under the terms of the GNU Lesser General Public License as 7 published by the Free Software Foundation; either version 2.1 of the 8 License, or (at your option) any later version. 9 10 This file is distributed in the hope that it will be useful, 11 but WITHOUT ANY WARRANTY; without even the implied warranty of 12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 GNU Lesser General Public License for more details. 14 15 You should have received a copy of the GNU Lesser General Public License 16 along with this program. If not, see <https://www.gnu.org/licenses/>. */ 17 18 /* Written by Bruno Haible, 2010. */ 19 20 #include <config.h> 21 22 /* Specification. */ 23 #include <unistd.h> 24 25 #if defined _WIN32 && ! defined __CYGWIN__ 26 # define WIN32_LEAN_AND_MEAN 27 # include <windows.h> 28 /* Don't assume that UNICODE is not defined. */ 29 # undef GetUserName 30 # define GetUserName GetUserNameA 31 #endif 32 33 char * 34 getlogin (void) /* */ 35 { 36 #if defined _WIN32 && ! defined __CYGWIN__ 37 static char login_name[1024]; 38 DWORD sz = sizeof (login_name); 39 40 if (GetUserName (login_name, &sz)) 41 return login_name; 42 #endif 43 return NULL; 44 }