6 main(int argc, char *argv[])
13 fprint(2, "usage: data2s name\n");
16 Binit(&bin, 0, OREAD);
17 Binit(&bout, 1, OWRITE);
18 Bprint(&bout, "#define D(o,s) DATA %scode+o(SB)/8, $s\n", argv[1]);
19 for(len=0; (c=Bgetc(&bin))!=Beof; len++){
21 Bprint(&bout, "D(%ld,\"", len);
22 if(c>=0x20 && c<=0x7E){
23 if(c == '\\' || c == '"')
25 Bprint(&bout, "%c", c);
27 if((x=Bgetc(&bin))!=Beof)
30 Bprint(&bout, "\\%.3uo", c);
32 Bprint(&bout, "\\%uo", c);
35 Bprint(&bout, "\")\n");
43 Bprint(&bout, "\")\n");
45 Bprint(&bout, "#undef D\n");
46 Bprint(&bout, "GLOBL %scode+0(SB), $%ld\n", argv[1], len);
47 Bprint(&bout, "GLOBL %slen+0(SB), $4\n", argv[1]);
48 Bprint(&bout, "DATA %slen+0(SB)/4, $%ld\n", argv[1], slen);