diff --git a/include/glacier_runtime.h b/include/glacier_runtime.h index 9113731..1133f52 100644 --- a/include/glacier_runtime.h +++ b/include/glacier_runtime.h @@ -34,4 +34,20 @@ void runtime_exists(); +/* + * is_process_root + * + * DESCRIPTION: is_process_root checks if the process is running with root privileges. + * PARAMETERS: + * None. + * RETURN VALUES: + * 0 on root, 1 on non-root + * CAVEATS: + * None. + * EXAMPLE: + * is_process_root(); + */ + +int is_process_root(); + #endif diff --git a/libglacier.c b/libglacier.c index affc3eb..3abcee6 100644 --- a/libglacier.c +++ b/libglacier.c @@ -51,6 +51,7 @@ const char *runtime_files[] = { * * DESCRIPTION: Output a stylized info message. * PARAMETERS: char MSG[] + * DEFINED IN: glacier_log.h * */ @@ -70,6 +71,7 @@ infolog(char MSG[]) * * DESCRIPTION: Output a stylized warning message. * Parameters: char MSG[] + * DEFINED IN: glacier_log.h * */ @@ -89,6 +91,7 @@ warnlog(char MSG[]) * * DESCRIPTION: Output a stylized error message. * PARAMETERS: char MSG[] + * DEFINED IN: glacier_log.h * */ @@ -108,6 +111,7 @@ errlog(char MSG[]) * * DESCRIPTION: Output a stylized success message. * PARAMETERS: char MSG[] + * DEFINED IN: glacier_log.h * */ @@ -130,6 +134,7 @@ successlog(char MSG[]) * * DESCRIPTION: Check if necesary runtime files exist. * PARAMETERS: None. + * DEFINED IN: glacier_runtime.h * */ @@ -148,11 +153,30 @@ runtime_exists() return 1; } +/* + * is_process_root + * + * DESCRIPTION: Check if process is running as root. + * PARAMETERS: None. + * DEFINED IN: glacier_runtime.h + * + */ + +int +is_process_root() +{ + if (getuid() != 0) { + errlog("Failed to open package index: permission denied. Are you root?"); + exit(1); + } +} + /* * init_config * * DESCRIPTION: Initialize libconfig. * PARAMETERS: None. + * DEFINED IN: glacier_config.h * */ @@ -177,6 +201,7 @@ init_config() * * DESCRIPTION: Kill libconfig. * PARAMETERS: None. + * DEFINED IN: glacier_config.h * */ @@ -193,6 +218,7 @@ die_config() * * DESCRIPTION: Loads all settings from the Glacier config file. * PARAMETERS: None. + * DEFINED IN: glacier_config.h * */ @@ -222,6 +248,7 @@ load_all_from_config() * * DESCRIPTION: Load a specified setting from the Glacier config file. * PARAMETERS: char SETTING[] + * DEFINED IN: glacier_config.h * */ @@ -234,6 +261,7 @@ load_setting_from_config(char SETTING[]) * * DESCRIPTION: Creates a new Glacier workspace in /tmp. * PARAMETERS: None. + * DEFINED IN: glacier_pkgops.h * */ @@ -257,6 +285,7 @@ mkworkspace() * * DESCRIPTION: Copies a package archive from the localdb to the workspace, and unpacks it. * PARAMETERS: char PACKAGE[] + * DEFINED IN: glacier_pkgops.h * */ @@ -340,6 +369,7 @@ TEST_chdir(char dir[]) * * DESCRIPTION: Runs a make task in current working directory * PARAMETERS: char TASK[] + * DEFINED IN: glacier_pkgops.h * */