From fb73fc8292d507e9d6f368da5f2c2ac3e3f85e45 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?P=C5=99emysl=20Janouch?= Date: Fri, 14 Jul 2017 21:49:32 +0200 Subject: Mark files that make use of POSIX ACLs --- sdn.cpp | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) (limited to 'sdn.cpp') diff --git a/sdn.cpp b/sdn.cpp index c9cf895..05577e3 100644 --- a/sdn.cpp +++ b/sdn.cpp @@ -26,15 +26,18 @@ #include #include -#include #include #include #include #include +#include #include #include #include +#include +#include + // Unicode is complex enough already and we might make assumptions #ifndef __STDC_ISO_10646__ #error Unicode required for wchar_t @@ -288,7 +291,15 @@ static struct { fun make_row (const string &filename, const struct stat &info) -> row { row r; - r.cols[row::MODES] = apply_attrs (decode_mode (info.st_mode), 0); + auto mode = decode_mode (info.st_mode); + if (auto acl = acl_get_file (filename.c_str (), ACL_TYPE_ACCESS)) { + mode_t m; + // This is a Linux-only extension + if (!acl_equiv_mode (acl, &m) && (m ^ info.st_mode) & 0777) + mode += L"+"; + acl_free (acl); + } + r.cols[row::MODES] = apply_attrs (mode, 0); auto user = to_wstring (info.st_uid); if (auto u = getpwuid (info.st_uid)) -- cgit v1.2.3