main: (order) move root user check after help/version option

With this change, `NetworkManager --help` and `NetworkManager --version`
work for non-root user.
This commit is contained in:
Thomas Haller
2015-03-13 20:57:18 +01:00
parent 3696c675fe
commit 95786a4e4e
4 changed files with 16 additions and 5 deletions

View File

@@ -36,6 +36,7 @@
#include "gsystem-local-alloc.h" #include "gsystem-local-alloc.h"
#include "main-utils.h" #include "main-utils.h"
#include "NetworkManagerUtils.h"
#include "nm-logging.h" #include "nm-logging.h"
static gboolean static gboolean
@@ -172,6 +173,15 @@ nm_main_utils_ensure_not_running_pidfile (const char *pidfile)
} }
} }
void
nm_main_utils_ensure_root ()
{
if (getuid () != 0) {
fprintf (stderr, _("You must be root to run %s!\n"), str_if_set (g_get_prgname (), ""));
exit (1);
}
}
gboolean gboolean
nm_main_utils_early_setup (const char *progname, nm_main_utils_early_setup (const char *progname,
int *argc, int *argc,
@@ -205,11 +215,6 @@ nm_main_utils_early_setup (const char *progname,
setlocale (LC_ALL, ""); setlocale (LC_ALL, "");
textdomain (GETTEXT_PACKAGE); textdomain (GETTEXT_PACKAGE);
if (getuid () != 0) {
fprintf (stderr, _("You must be root to run %s!\n"), progname);
exit (1);
}
for (i = 0; options[i].long_name; i++) { for (i = 0; options[i].long_name; i++) {
if (!strcmp (options[i].long_name, "log-level")) { if (!strcmp (options[i].long_name, "log-level")) {
opt_fmt_log_level = options[i].description; opt_fmt_log_level = options[i].description;

View File

@@ -23,6 +23,8 @@
#include <glib.h> #include <glib.h>
void nm_main_utils_ensure_root (void);
void nm_main_utils_setup_signals (GMainLoop *main_loop); void nm_main_utils_setup_signals (GMainLoop *main_loop);
void nm_main_utils_ensure_rundir (void); void nm_main_utils_ensure_rundir (void);

View File

@@ -283,6 +283,8 @@ main (int argc, char *argv[])
exit (0); exit (0);
} }
nm_main_utils_ensure_root ();
if (!nm_logging_setup (global_opt.opt_log_level, if (!nm_logging_setup (global_opt.opt_log_level,
global_opt.opt_log_domains, global_opt.opt_log_domains,
&bad_domains, &bad_domains,

View File

@@ -367,6 +367,8 @@ main (int argc, char *argv[])
exit (0); exit (0);
} }
nm_main_utils_ensure_root ();
if (!global_opt.ifname || !global_opt.uuid) { if (!global_opt.ifname || !global_opt.uuid) {
fprintf (stderr, _("An interface name and UUID are required\n")); fprintf (stderr, _("An interface name and UUID are required\n"));
exit (1); exit (1);