/* snprintb.h -- snprintf a %b string * * This code is Copyright (c) 2017, by the authors of nmh. See the * COPYRIGHT file in the root directory of the nmh distribution for * complete copyright information. */ /* * Convert a set of bit flags to printable format. * * Arguments: * * buffer - Buffer to output string to. * size - Size of buffer in bytes. Buffer is always NUL terminated. * flags - Binary flags to output * bitfield - Textual representation of bits to output. This string * is in the following format: * * Option byte 0x01 STRING1 0x02 STRING2 .... * * The first byte is an option byte to snprintb(). Currently the only option * supported is 0x08, which indicates that the flags should be output in * octal format; if the option byte is any other value, the flags will be * output in hexadecimal. * * After the option bytes are series of text strings, prefixed by the number * of the bit they correspond to. For example, the bitfield string: * * "\020\01FLAG1\02FLAG2\03FLAG3\04FLAG4" * * will output the following string if "flags" is set to 0x09: * * 0x2 * * You don't have to use octal in the bitfield string, that's just the * convention currently used by the nmh code. The order of flags in the * bitfield string is not significant, but again, general convention is * from least significant bit to most significant. */ char *snprintb(char *, size_t, unsigned, char *);