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