summaryrefslogtreecommitdiff
path: root/src/ls.c
diff options
context:
space:
mode:
authorPádraig Brady <P@draigBrady.com>2013-07-02 03:42:20 +0100
committerMichael Demeter <michael.demeter@intel.com>2013-08-12 15:55:31 -0700
commitff17cbca5ea4784266d5fd967bba06cb248ec901 (patch)
tree20edc7483c18249b957f6d89cbf6252b09ffae34 /src/ls.c
parent0224b79c7cee7d7e6ca2b7d7fa2b81e644409f1f (diff)
downloadcoreutils-ff17cbca5ea4784266d5fd967bba06cb248ec901.tar.gz
coreutils-ff17cbca5ea4784266d5fd967bba06cb248ec901.tar.bz2
coreutils-ff17cbca5ea4784266d5fd967bba06cb248ec901.zip
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/ls.c')
-rw-r--r--src/ls.c15
1 files changed, 4 insertions, 11 deletions
diff --git a/src/ls.c b/src/ls.c
index af972941a..ae29bcc5d 100644
--- a/src/ls.c
+++ b/src/ls.c
@@ -101,6 +101,7 @@
#include "obstack.h"
#include "quote.h"
#include "quotearg.h"
+#include "smack.h"
#include "stat-size.h"
#include "stat-time.h"
#include "strftime.h"
@@ -115,10 +116,6 @@
# include <sys/capability.h>
#endif
-#ifdef HAVE_SMACK
-# include <sys/smack.h>
-#endif
-
#define PROGRAM_NAME (ls_mode == LS_LS ? "ls" \
: (ls_mode == LS_MULTI_COL \
? "dir" : "vdir"))
@@ -2754,11 +2751,9 @@ free_ent (struct fileinfo *f)
free (f->linkname);
if (f->scontext != UNKNOWN_SECURITY_CONTEXT)
{
-#ifdef HAVE_SMACK
- if (smack_smackfs_path ())
+ if (is_smack_enabled ())
free (f->scontext);
else
-#endif
freecon (f->scontext);
}
}
@@ -2817,7 +2812,7 @@ getfilecon_cache (char const *file, struct fileinfo *f, bool deref)
}
int r = 0;
#ifdef HAVE_SMACK
- if (smack_smackfs_path ())
+ if (is_smack_enabled ())
r = smack_new_label_from_path (file, "security.SMACK64", deref,
&f->scontext);
else
@@ -3022,11 +3017,9 @@ gobble_file (char const *name, enum filetype type, ino_t inode,
if (err == 0)
{
-#ifdef HAVE_SMACK
- if (smack_smackfs_path ())
+ if (is_smack_enabled ())
have_scontext = ! STREQ ("_", f->scontext);
else
-#endif
have_scontext = ! STREQ ("unlabeled", f->scontext);
}
else