Bump to version 1.22.1
[platform/upstream/busybox.git] / libbb / print_flags.c
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 source tree.
7  */
8 #include "libbb.h"
9
10 /* returns a set with the flags not printed */
11 int FAST_FUNC print_flags_separated(const int *masks, const char *labels, int flags, const char *separator)
12 {
13         const char *need_separator = NULL;
14         while (*labels) {
15                 if (flags & *masks) {
16                         printf("%s%s",
17                                 need_separator ? need_separator : "",
18                                 labels);
19                         need_separator = separator;
20                         flags &= ~ *masks;
21                 }
22                 masks++;
23                 labels += strlen(labels) + 1;
24         }
25         return flags;
26 }
27
28 int FAST_FUNC print_flags(const masks_labels_t *ml, int flags)
29 {
30         return print_flags_separated(ml->masks, ml->labels, flags, NULL);
31 }