1 #include <lib9.h>
2 #include <bio.h>
3
4 void
main(int argc,char * argv[])5 main(int argc, char *argv[])
6 {
7 Biobuf bin, bout;
8 long len;
9 int n;
10 uchar block[8], *c;
11
12 if(argc != 2){
13 fprint(2, "usage: data2s name\n");
14 exits("usage");
15 }
16 setbinmode();
17 Binit(&bin, 0, OREAD);
18 Binit(&bout, 1, OWRITE);
19 for(len=0; (n=Bread(&bin, block, sizeof(block))) > 0; len += n){
20 Bprint(&bout, "DATA %scode+%ld(SB)/%d, $\"", argv[1], len, n);
21 for(c=block; c < block+n; c++)
22 if(*c)
23 Bprint(&bout, "\\%uo", *c);
24 else
25 Bprint(&bout, "\\z");
26 Bprint(&bout, "\"\n");
27 }
28 if(len == 0)
29 Bprint(&bout, "GLOBL %scode+0(SB), $1\n", argv[1]);
30 else
31 Bprint(&bout, "GLOBL %scode+0(SB), $%ld\n", argv[1], len);
32 Bprint(&bout, "GLOBL %slen+0(SB), $4\n", argv[1]);
33 Bprint(&bout, "DATA %slen+0(SB)/4, $%ld\n", argv[1], len);
34 exits(0);
35 }
36