Mercurial > trustbridge
diff common/util.c @ 323:31ba7ed4d50f
Made is_elevated portable.
author | Sascha Wilde <wilde@intevation.de> |
---|---|
date | Mon, 07 Apr 2014 13:20:34 +0200 |
parents | 824ef90a6721 |
children | 64e38886f903 |
line wrap: on
line diff
--- a/common/util.c Mon Apr 07 13:11:48 2014 +0200 +++ b/common/util.c Mon Apr 07 13:20:34 2014 +0200 @@ -1,26 +1,32 @@ #include "util.h" -#ifdef WIN32 +#ifndef _WIN32 +#include <unistd.h> +#include <sys/types.h> +#else #include <windows.h> #endif -#ifdef WIN32 bool -is_elevated() { - HANDLE hToken = NULL; - bool ret = false; - if (OpenProcessToken (GetCurrentProcess(), TOKEN_QUERY, &hToken)) - { - DWORD elevation; - DWORD cbSize = sizeof (DWORD); - if (GetTokenInformation (hToken, TokenElevation, &elevation, - sizeof (TokenElevation), &cbSize)) - { - ret = elevation; - } - } - if (hToken) - CloseHandle (hToken); +is_elevated() +{ + bool ret = false; +#ifndef _WIN32 + ret = (geteuid() == 0); +#else + HANDLE hToken = NULL; + if (OpenProcessToken (GetCurrentProcess(), TOKEN_QUERY, &hToken)) + { + DWORD elevation; + DWORD cbSize = sizeof (DWORD); + if (GetTokenInformation (hToken, TokenElevation, &elevation, + sizeof (TokenElevation), &cbSize)) + { + ret = elevation; + } + } + if (hToken) + CloseHandle (hToken); +#endif + return ret; +} - return ret; -} -#endif