diff options
author | Pádraig Brady <P@draigBrady.com> | 2013-07-02 03:42:20 +0100 |
---|---|---|
committer | Pádraig Brady <P@draigBrady.com> | 2013-07-02 09:47:32 +0100 |
commit | 5fb93f635b935ea5632e36600e07a2c5fc5bad5e (patch) | |
tree | 387476cda6992e8768ff4646cc605f24dd307de5 /src/id.c | |
parent | b8a87eaf2d6f054473d2dab491ffd4252b6f5b4d (diff) | |
download | coreutils-5fb93f635b935ea5632e36600e07a2c5fc5bad5e.tar.xz |
maint: refactor SMACK interface to a separate module
Consolidate all smack routines and checks in a module.
We replace and wrap the most commonly used smack routines,
which allows removing ifdefs throughout the code.
* gl/lib/smack.h: A new header containing the implementation
of the wrapped and replacement routines. Note the is_smack_enabled()
routine should be optimized out at compile time when compiled
on a system without libsmack.
* gl/modules/smack: Describe the new module and move the
configure time code here from ...
* m4/jm-macros.m4: ... here.
* bootstrap.conf: Reference the new module.
* src/id.c: Use the routines without ifdefs where possible.
* src/ls.c: Likewise.
* src/mkdir.c: Likewise.
* src/mkfifo.c: Likewise.
* src/mknod.c: Likewise.
Diffstat (limited to 'src/id.c')
-rw-r--r-- | src/id.c | 19 |
1 files changed, 6 insertions, 13 deletions
@@ -24,15 +24,13 @@ #include <grp.h> #include <getopt.h> #include <selinux/selinux.h> -#ifdef HAVE_SMACK -# include <sys/smack.h> -#endif #include "system.h" #include "error.h" #include "mgetgroups.h" #include "quote.h" #include "group-list.h" +#include "smack.h" /* The official name of this program (e.g., no 'g' prefix). */ #define PROGRAM_NAME "id" @@ -110,9 +108,7 @@ main (int argc, char **argv) { int optc; int selinux_enabled = (is_selinux_enabled () > 0); -#ifdef HAVE_SMACK - int smack_enabled = (smack_smackfs_path () != NULL); -#endif + bool smack_enabled = is_smack_enabled (); /* If true, output the list of all group IDs. -G */ bool just_group_list = false; @@ -207,14 +203,11 @@ main (int argc, char **argv) || (default_format && ! getenv ("POSIXLY_CORRECT")))) { /* Report failure only if --context (-Z) was explicitly requested. */ - if (selinux_enabled && getcon (&context) && just_context) + if ((selinux_enabled && getcon (&context) && just_context) + || (smack_enabled + && smack_new_label_from_self ((char **) &context) < 0 + && just_context)) error (EXIT_FAILURE, 0, _("can't get process context")); -#ifdef HAVE_SMACK - else if (smack_enabled - && smack_new_label_from_self ((char **) &context) < 0 - && just_context) - error (EXIT_FAILURE, 0, _("can't get process context")); -#endif } if (n_ids == 1) |