Start 1.33.0 development cycle
[oweals/busybox.git] / libbb / print_flags.c
1 /* vi: set sw=4 ts=4: */
2 /*
3  * Print string that matches bit masked flags
4  *
5  * Copyright (C) 2008 Natanael Copa <natanael.copa@gmail.com>
6  *
7  * Licensed under GPLv2 or later, see file LICENSE in this source tree.
8  */
9 #include "libbb.h"
10
11 /* returns a set with the flags not printed */
12 int FAST_FUNC 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                 }
23                 masks++;
24                 labels += strlen(labels) + 1;
25         }
26         return flags;
27 }
28
29 int FAST_FUNC print_flags(const masks_labels_t *ml, int flags)
30 {
31         return print_flags_separated(ml->masks, ml->labels, flags, NULL);
32 }