summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--include/libbb.h2
-rw-r--r--libbb/parse_mode.c5
2 files changed, 4 insertions, 3 deletions
diff --git a/include/libbb.h b/include/libbb.h
index 1ec8d2d..6727c22 100644
--- a/include/libbb.h
+++ b/include/libbb.h
@@ -1607,7 +1607,7 @@ char *bb_ask_noecho_stdin(const char *prompt) FAST_FUNC;
int bb_ask_y_confirmation_FILE(FILE *fp) FAST_FUNC;
int bb_ask_y_confirmation(void) FAST_FUNC;
-/* Returns -1 if input is invalid. current_mode is a base for e.g. "u+rw" */
+/* Returns -1 if input is invalid. cur_mode is a base for e.g. "u+rw" */
int bb_parse_mode(const char* s, unsigned cur_mode) FAST_FUNC;
/*
diff --git a/libbb/parse_mode.c b/libbb/parse_mode.c
index dc65860..1d238e1 100644
--- a/libbb/parse_mode.c
+++ b/libbb/parse_mode.c
@@ -16,13 +16,14 @@
int FAST_FUNC bb_parse_mode(const char *s, unsigned current_mode)
{
- static const mode_t who_mask[] = {
+/* should be mode_t really, but in all Unixes these constants fit into uint16 */
+ static const uint16_t who_mask[] ALIGN2 = {
S_ISUID | S_ISGID | S_ISVTX | S_IRWXU | S_IRWXG | S_IRWXO, /* a */
S_ISUID | S_IRWXU, /* u */
S_ISGID | S_IRWXG, /* g */
S_IRWXO /* o */
};
- static const mode_t perm_mask[] = {
+ static const uint16_t perm_mask[] ALIGN2 = {
S_IRUSR | S_IRGRP | S_IROTH, /* r */
S_IWUSR | S_IWGRP | S_IWOTH, /* w */
S_IXUSR | S_IXGRP | S_IXOTH, /* x */