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