From 973057bef150cf294ac0cf5fa208db8f7b64a41d Mon Sep 17 00:00:00 2001 From: Your Name Date: Thu, 2 Nov 2023 12:32:35 +0300 Subject: [PATCH] test --- libmu/parse_mode.h | 24 +++++++++++++++--------- 1 file changed, 15 insertions(+), 9 deletions(-) diff --git a/libmu/parse_mode.h b/libmu/parse_mode.h index c1a5628..9fd77fc 100644 --- a/libmu/parse_mode.h +++ b/libmu/parse_mode.h @@ -20,10 +20,11 @@ mode_t mu_parse_mode(const char *s) { if (!*p && mode < 07777U) return mode; - mode = 0; + else if (mode > 07777U) + return 0; - /* 0 - + */ - int type = 0; + mode = 0; + int append = 1; mode_t mask = 0; for (size_t i = 0; i < strlen(s); i++) { @@ -41,11 +42,11 @@ mode_t mu_parse_mode(const char *s) { break; case '+': - type = 0; + append = 1; break; case '-': - type = 1; + append = 0; break; case 'g': @@ -65,14 +66,19 @@ mode_t mu_parse_mode(const char *s) { break; default: - return -1; + return 0; } } - if (type) - return ~mask & mode; + if (mask == 0) + mask = U(FULL_PERM); - return mask & mode; + if (append) + return mask & mode; + + mode_t test = mask & mode; + printf("test: %d\n", test); + return test; } #endif