busybox/libbb/print_flags.c
<<
>>
Prefs
   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 */
  11int 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
  28int FAST_FUNC print_flags(const masks_labels_t *ml, int flags)
  29{
  30        return print_flags_separated(ml->masks, ml->labels, flags, NULL);
  31}
  32