diff options
author | Denis Vlasenko <vda.linux@googlemail.com> | 2008-06-07 15:11:08 +0000 |
---|---|---|
committer | Denis Vlasenko <vda.linux@googlemail.com> | 2008-06-07 15:11:08 +0000 |
commit | dd6f570fa3978bdc056ffae4c2ac509250f97177 (patch) | |
tree | 0417a6c9d4c403e22940c508e598bf81607c6cfa | |
parent | 53354ac47df03bdccebad66bc22958fa2b4da520 (diff) | |
download | busybox-w32-dd6f570fa3978bdc056ffae4c2ac509250f97177.tar.gz busybox-w32-dd6f570fa3978bdc056ffae4c2ac509250f97177.tar.bz2 busybox-w32-dd6f570fa3978bdc056ffae4c2ac509250f97177.zip |
add libbb/print_flags.c...
-rw-r--r-- | libbb/print_flags.c | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/libbb/print_flags.c b/libbb/print_flags.c new file mode 100644 index 000000000..413f51653 --- /dev/null +++ b/libbb/print_flags.c | |||
@@ -0,0 +1,32 @@ | |||
1 | /* vi: set sw=4 ts=4: */ | ||
2 | /* Print string that matches bit masked flags | ||
3 | * | ||
4 | * Copyright (C) 2008 Natanael Copa <natanael.copa@gmail.com> | ||
5 | * | ||
6 | * Licensed under GPLv2 or later, see file LICENSE in this tarball for details. | ||
7 | */ | ||
8 | |||
9 | #include <libbb.h> | ||
10 | |||
11 | /* returns a set with the flags not printed */ | ||
12 | int print_flags_separated(const int *masks, const char *labels, int flags, const char *separator) | ||
13 | { | ||
14 | const char *need_separator = NULL; | ||
15 | while (*labels) { | ||
16 | if (flags & *masks) { | ||
17 | printf("%s%s", | ||
18 | need_separator ? need_separator : "", | ||
19 | labels); | ||
20 | need_separator = separator; | ||
21 | flags &= ~ *masks; | ||
22 | masks++; | ||
23 | } | ||
24 | labels += strlen(labels) + 1; | ||
25 | } | ||
26 | return flags; | ||
27 | } | ||
28 | |||
29 | int print_flags(const masks_labels_t *ml, int flags) | ||
30 | { | ||
31 | return print_flags_separated(ml->masks, ml->labels, flags, NULL); | ||
32 | } | ||