cmd/land: support stdout, fizzbuzz
This commit is contained in:
parent
00c3cbf4d7
commit
3932cd5f07
|
@ -227,6 +227,11 @@ func (p *Process) open(fnamesP int32, flags int32) int32 {
|
|||
var err error
|
||||
switch str {
|
||||
case "stdout":
|
||||
fi = stdFD{
|
||||
ReadWriteCloser: os.Stdout,
|
||||
}
|
||||
|
||||
case "log":
|
||||
fi = stdFD{
|
||||
ReadWriteCloser: loggerFile{
|
||||
Logger: log.New(os.Stdout, p.name+" ", log.LstdFlags),
|
||||
|
|
|
@ -116,3 +116,7 @@ func TestStruct(t *testing.T) {
|
|||
func TestCHelloWorld(t *testing.T) {
|
||||
testWasmFile(t, "./testdata/helloworld.wasm")
|
||||
}
|
||||
|
||||
func TestFizzbuzz(t *testing.T) {
|
||||
testWasmFile(t, "./testdata/fizzbuzz.wasm")
|
||||
}
|
||||
|
|
|
@ -0,0 +1,71 @@
|
|||
extern int open(const char *, int);
|
||||
extern int write(int, char *, int);
|
||||
|
||||
char intToLetter(int i) {
|
||||
switch (i) {
|
||||
case 0:
|
||||
return '0';
|
||||
case 1:
|
||||
return '1';
|
||||
case 2:
|
||||
return '2';
|
||||
case 3:
|
||||
return '3';
|
||||
case 4:
|
||||
return '4';
|
||||
case 5:
|
||||
return '5';
|
||||
case 6:
|
||||
return '6';
|
||||
case 7:
|
||||
return '7';
|
||||
case 8:
|
||||
return '8';
|
||||
case 9:
|
||||
return '9';
|
||||
}
|
||||
|
||||
return '?';
|
||||
}
|
||||
|
||||
char* makeIntString(int i) {
|
||||
char a[3];
|
||||
|
||||
int hundreds = i / 100;
|
||||
int tens = (i/10) % 10;
|
||||
int ones = i % 10;
|
||||
|
||||
a[0] = intToLetter(hundreds);
|
||||
a[1] = intToLetter(tens);
|
||||
a[2] = intToLetter(ones);
|
||||
|
||||
return a;
|
||||
}
|
||||
|
||||
__attribute__ ((visibility ("default")))
|
||||
int main() {
|
||||
int fd;
|
||||
int x;
|
||||
|
||||
fd = open("stdout", 0x42);
|
||||
|
||||
for (x = 0; x < 100; x++) {
|
||||
int wrote = 0;
|
||||
if (x % 3 == 0) {
|
||||
wrote = 1;
|
||||
write(fd, "Fizz", 4);
|
||||
}
|
||||
if (x % 5 == 0) {
|
||||
wrote = 1;
|
||||
write(fd, "Buzz", 4);
|
||||
}
|
||||
|
||||
if (wrote == 0) {
|
||||
write(fd, makeIntString(x), 3);
|
||||
}
|
||||
|
||||
write(fd, "\n", 1);
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
Loading…
Reference in New Issue