BSD 4_4_Lite1 release
[unix-history] / usr / src / contrib / mh-6.8.3a / sbr / sprintb.c
CommitLineData
ad787160
C
1/* sprintb.c - sprintf a %b string */
2#ifndef lint
3static char ident[] = "@(#)$Id: sprintb.c,v 1.3 1992/12/15 00:20:22 jromine Exp $";
4#endif /* lint */
5
6#include "../h/mh.h"
7#include <stdio.h>
8
9
10char *sprintb (buffer, v, bits)
11register char *buffer,
12 *bits;
13register unsigned v;
14{
15 register int i,
16 j;
17 register char c,
18 *bp;
19
20 (void) sprintf (buffer, bits && *bits == 010 ? "0%o" : "0x%x", v);
21 bp = buffer + strlen (buffer);
22
23 if (bits && *++bits) {
24 j = 0;
25 *bp++ = '<';
26 while (i = *bits++)
27 if (v & (1 << (i - 1))) {
28 if (j++)
29 *bp++ = ',';
30 for (; (c = *bits) > 32; bits++)
31 *bp++ = c;
32 }
33 else
34 for (; *bits > 32; bits++)
35 continue;
36 *bp++ = '>';
37 *bp = 0;
38 }
39
40 return buffer;
41}