|
|
1.1 root 1: /* sprintb.c - sprintf a %b string */
2:
3: #include "../h/mh.h"
4: #include <stdio.h>
5:
6:
7: char *sprintb (buffer, v, bits)
8: register char *buffer,
9: *bits;
10: register unsigned v;
11: {
12: register int i,
13: j;
14: register char c,
15: *bp;
16:
17: (void) sprintf (buffer, bits && *bits == 010 ? "0%o" : "0x%x", v);
18: bp = buffer + strlen (buffer);
19:
20: if (bits && *++bits) {
21: j = 0;
22: *bp++ = '<';
23: while (i = *bits++)
24: if (v & (1 << (i - 1))) {
25: if (j++)
26: *bp++ = ',';
27: for (; (c = *bits) > 32; bits++)
28: *bp++ = c;
29: }
30: else
31: for (; *bits > 32; bits++)
32: continue;
33: *bp++ = '>';
34: *bp = NULL;
35: }
36:
37: return buffer;
38: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.