]> diplodocus.org Git - nmh/blob - docs/historical/mh-6.8.5/sbr/sprintb.c
Always check that mktemp()/mktemp2() succeeds before trying to
[nmh] / docs / historical / mh-6.8.5 / sbr / sprintb.c
1 /* sprintb.c - sprintf a %b string */
2 #ifndef lint
3 static 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
10 char *sprintb (buffer, v, bits)
11 register char *buffer,
12 *bits;
13 register 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 }