void VerifyACL(char *file, Attributes a, Promise *pp) { if (!CheckACLSyntax(file, a.acl, pp)) { cfPS(cf_error, CF_INTERPT, "", pp, a, " !! Syntax error in access control list for \"%s\"", file); PromiseRef(cf_error, pp); return; } SetACLDefaults(file, &a.acl); // decide which ACL API to use switch (a.acl.acl_type) { case cfacl_notype: // fallthrough: acl_type defaults to generic case cfacl_generic: #if defined(__linux__) CheckPosixLinuxACL(file, a.acl, a, pp); #elif defined(__MINGW32__) Nova_CheckNtACL(file, a.acl, a, pp); #else CfOut(cf_inform, "", "!! ACLs are not yet supported on this system."); #endif break; case cfacl_posix: #if defined(__linux__) CheckPosixLinuxACL(file, a.acl, a, pp); #else CfOut(cf_inform, "", "!! Posix ACLs are not supported on this system"); #endif break; case cfacl_ntfs: #if defined(__MINGW32__) Nova_CheckNtACL(file, a.acl, a, pp); #else CfOut(cf_inform, "", "!! NTFS ACLs are not supported on this system"); #endif break; default: CfOut(cf_error, "", "!! Unknown ACL type - software error"); break; } }
void VerifyACL(EvalContext *ctx, char *file, Attributes a, Promise *pp) { if (!CheckACLSyntax(file, a.acl, pp)) { cfPS(ctx, OUTPUT_LEVEL_ERROR, PROMISE_RESULT_INTERRUPTED, "", pp, a, " !! Syntax error in access control list for \"%s\"", file); PromiseRef(OUTPUT_LEVEL_ERROR, pp); return; } SetACLDefaults(file, &a.acl); // decide which ACL API to use switch (a.acl.acl_type) { case ACL_TYPE_NONE: // fallthrough: acl_type defaults to generic case ACL_TYPE_GENERIC: #if defined(__linux__) CheckPosixLinuxACL(ctx, file, a.acl, a, pp); #elif defined(__MINGW32__) Nova_CheckNtACL(ctx, file, a.acl, a, pp); #else CfOut(OUTPUT_LEVEL_INFORM, "", "!! ACLs are not yet supported on this system."); #endif break; case ACL_TYPE_POSIX: #if defined(__linux__) CheckPosixLinuxACL(ctx, file, a.acl, a, pp); #else CfOut(OUTPUT_LEVEL_INFORM, "", "!! Posix ACLs are not supported on this system"); #endif break; case ACL_TYPE_NTFS_: #if defined(__MINGW32__) Nova_CheckNtACL(ctx, file, a.acl, a, pp); #else CfOut(OUTPUT_LEVEL_INFORM, "", "!! NTFS ACLs are not supported on this system"); #endif break; default: CfOut(OUTPUT_LEVEL_ERROR, "", "!! Unknown ACL type - software error"); break; } }