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 /gl/lib | |
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 'gl/lib')
-rw-r--r-- | gl/lib/smack.h | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/gl/lib/smack.h b/gl/lib/smack.h new file mode 100644 index 000000000..dea729e09 --- /dev/null +++ b/gl/lib/smack.h @@ -0,0 +1,46 @@ +/* Include and determine availability of smack routines + Copyright (C) 2013 Free Software Foundation, Inc. + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see <http://www.gnu.org/licenses/>. */ + +/* Here we replace or wrap the most common smack functions used by coreutils. + Others will need to be protected by HAVE_SMACK. */ + +#include <config.h> + +#ifdef HAVE_SMACK +# include <sys/smack.h> +#else +static inline ssize_t +smack_new_label_from_self (char **label) +{ + return -1; +} + +static inline int +smack_set_label_for_self (const char *label) +{ + return -1; +} +#endif + +static inline bool +is_smack_enabled (void) +{ +#ifdef HAVE_SMACK + return smack_smackfs_path () != NULL; +#else + return false; +#endif +} |