Subversion Repositories planix.SVN

Rev

Rev 2 | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
2 - 1
#include <u.h>
2
#include <libc.h>
3
#include <bio.h>
4
 
5
void
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
}