add sys.writefile; support for darwin only in this CL

SVN=127153
This commit is contained in:
Rob Pike 2008-07-14 20:54:55 -07:00
parent e9a194382e
commit c870ac239e
5 changed files with 156 additions and 112 deletions

View File

@ -53,6 +53,7 @@ func gosched();
func goexit();
func readfile(string) (string, bool); // read file into string; boolean status
func writefile(string, string) (bool); // write string into file; boolean status
func bytestorune(*byte, int32, int32) (int32, int32); // convert bytes to runes
func stringtorune(string, int32, int32) (int32, int32); // convert bytes to runes
@ -113,6 +114,7 @@ export
// files
readfile
writefile
// runes and utf-8
bytestorune

View File

@ -3,10 +3,10 @@ char* sysimport =
"type sys._esys_002 {}\n"
"type sys.any 24\n"
"type sys._esys_003 *sys.any\n"
"type sys._osys_298 {_esys_296 sys._esys_003}\n"
"type sys._osys_314 {_esys_312 sys._esys_003}\n"
"type sys.uint32 6\n"
"type sys._isys_300 {_esys_297 sys.uint32}\n"
"type sys._esys_001 (sys._esys_002 sys._osys_298 sys._isys_300)\n"
"type sys._isys_316 {_esys_313 sys.uint32}\n"
"type sys._esys_001 (sys._esys_002 sys._osys_314 sys._isys_316)\n"
"var !sys.mal sys._esys_001\n"
"type sys._esys_005 {}\n"
"type sys._esys_006 {}\n"
@ -16,199 +16,199 @@ char* sysimport =
"type sys._esys_009 {}\n"
"type sys._esys_010 {}\n"
"type sys.int32 5\n"
"type sys._isys_306 {_esys_305 sys.int32}\n"
"type sys._esys_008 (sys._esys_009 sys._esys_010 sys._isys_306)\n"
"type sys._isys_322 {_esys_321 sys.int32}\n"
"type sys._esys_008 (sys._esys_009 sys._esys_010 sys._isys_322)\n"
"var !sys.panicl sys._esys_008\n"
"type sys._esys_012 {}\n"
"type sys._esys_013 {}\n"
"type sys.bool 12\n"
"type sys._isys_311 {_esys_310 sys.bool}\n"
"type sys._esys_011 (sys._esys_012 sys._esys_013 sys._isys_311)\n"
"type sys._isys_327 {_esys_326 sys.bool}\n"
"type sys._esys_011 (sys._esys_012 sys._esys_013 sys._isys_327)\n"
"var !sys.printbool sys._esys_011\n"
"type sys._esys_015 {}\n"
"type sys._esys_016 {}\n"
"type sys.float64 10\n"
"type sys._isys_316 {_esys_315 sys.float64}\n"
"type sys._esys_014 (sys._esys_015 sys._esys_016 sys._isys_316)\n"
"type sys._isys_332 {_esys_331 sys.float64}\n"
"type sys._esys_014 (sys._esys_015 sys._esys_016 sys._isys_332)\n"
"var !sys.printfloat sys._esys_014\n"
"type sys._esys_018 {}\n"
"type sys._esys_019 {}\n"
"type sys.int64 7\n"
"type sys._isys_321 {_esys_320 sys.int64}\n"
"type sys._esys_017 (sys._esys_018 sys._esys_019 sys._isys_321)\n"
"type sys._isys_337 {_esys_336 sys.int64}\n"
"type sys._esys_017 (sys._esys_018 sys._esys_019 sys._isys_337)\n"
"var !sys.printint sys._esys_017\n"
"type sys._esys_021 {}\n"
"type sys._esys_022 {}\n"
"type sys._esys_023 25\n"
"type sys.string *sys._esys_023\n"
"type sys._isys_326 {_esys_325 sys.string}\n"
"type sys._esys_020 (sys._esys_021 sys._esys_022 sys._isys_326)\n"
"type sys._isys_342 {_esys_341 sys.string}\n"
"type sys._esys_020 (sys._esys_021 sys._esys_022 sys._isys_342)\n"
"var !sys.printstring sys._esys_020\n"
"type sys._esys_025 {}\n"
"type sys._esys_026 {}\n"
"type sys.uint8 2\n"
"type sys._esys_027 *sys.uint8\n"
"type sys._isys_331 {_esys_330 sys._esys_027}\n"
"type sys._esys_024 (sys._esys_025 sys._esys_026 sys._isys_331)\n"
"type sys._isys_347 {_esys_346 sys._esys_027}\n"
"type sys._esys_024 (sys._esys_025 sys._esys_026 sys._isys_347)\n"
"var !sys.printpointer sys._esys_024\n"
"type sys._esys_029 {}\n"
"type sys._osys_338 {_esys_335 sys.string}\n"
"type sys._isys_340 {_esys_336 sys.string _esys_337 sys.string}\n"
"type sys._esys_028 (sys._esys_029 sys._osys_338 sys._isys_340)\n"
"type sys._osys_354 {_esys_351 sys.string}\n"
"type sys._isys_356 {_esys_352 sys.string _esys_353 sys.string}\n"
"type sys._esys_028 (sys._esys_029 sys._osys_354 sys._isys_356)\n"
"var !sys.catstring sys._esys_028\n"
"type sys._esys_031 {}\n"
"type sys._osys_348 {_esys_345 sys.int32}\n"
"type sys._isys_350 {_esys_346 sys.string _esys_347 sys.string}\n"
"type sys._esys_030 (sys._esys_031 sys._osys_348 sys._isys_350)\n"
"type sys._osys_364 {_esys_361 sys.int32}\n"
"type sys._isys_366 {_esys_362 sys.string _esys_363 sys.string}\n"
"type sys._esys_030 (sys._esys_031 sys._osys_364 sys._isys_366)\n"
"var !sys.cmpstring sys._esys_030\n"
"type sys._esys_033 {}\n"
"type sys._osys_359 {_esys_355 sys.string}\n"
"type sys._isys_361 {_esys_356 sys.string _esys_357 sys.int32 _esys_358 sys.int32}\n"
"type sys._esys_032 (sys._esys_033 sys._osys_359 sys._isys_361)\n"
"type sys._osys_375 {_esys_371 sys.string}\n"
"type sys._isys_377 {_esys_372 sys.string _esys_373 sys.int32 _esys_374 sys.int32}\n"
"type sys._esys_032 (sys._esys_033 sys._osys_375 sys._isys_377)\n"
"var !sys.slicestring sys._esys_032\n"
"type sys._esys_035 {}\n"
"type sys._osys_370 {_esys_367 sys.uint8}\n"
"type sys._isys_372 {_esys_368 sys.string _esys_369 sys.int32}\n"
"type sys._esys_034 (sys._esys_035 sys._osys_370 sys._isys_372)\n"
"type sys._osys_386 {_esys_383 sys.uint8}\n"
"type sys._isys_388 {_esys_384 sys.string _esys_385 sys.int32}\n"
"type sys._esys_034 (sys._esys_035 sys._osys_386 sys._isys_388)\n"
"var !sys.indexstring sys._esys_034\n"
"type sys._esys_037 {}\n"
"type sys._osys_379 {_esys_377 sys.string}\n"
"type sys._isys_381 {_esys_378 sys.int64}\n"
"type sys._esys_036 (sys._esys_037 sys._osys_379 sys._isys_381)\n"
"type sys._osys_395 {_esys_393 sys.string}\n"
"type sys._isys_397 {_esys_394 sys.int64}\n"
"type sys._esys_036 (sys._esys_037 sys._osys_395 sys._isys_397)\n"
"var !sys.intstring sys._esys_036\n"
"type sys._esys_039 {}\n"
"type sys._osys_388 {_esys_385 sys.string}\n"
"type sys._osys_404 {_esys_401 sys.string}\n"
"type sys._esys_040 *sys.uint8\n"
"type sys._isys_390 {_esys_386 sys._esys_040 _esys_387 sys.int32}\n"
"type sys._esys_038 (sys._esys_039 sys._osys_388 sys._isys_390)\n"
"type sys._isys_406 {_esys_402 sys._esys_040 _esys_403 sys.int32}\n"
"type sys._esys_038 (sys._esys_039 sys._osys_404 sys._isys_406)\n"
"var !sys.byteastring sys._esys_038\n"
"type sys._esys_042 {}\n"
"type sys._esys_043 <>\n"
"type sys._osys_399 {_esys_395 sys._esys_043}\n"
"type sys._osys_415 {_esys_411 sys._esys_043}\n"
"type sys._esys_044 *sys.uint8\n"
"type sys._esys_045 *sys.uint8\n"
"type sys._ssys_406 {}\n"
"type sys._esys_046 *sys._ssys_406\n"
"type sys._isys_401 {_esys_396 sys._esys_044 _esys_397 sys._esys_045 _esys_398 sys._esys_046}\n"
"type sys._esys_041 (sys._esys_042 sys._osys_399 sys._isys_401)\n"
"type sys._ssys_422 {}\n"
"type sys._esys_046 *sys._ssys_422\n"
"type sys._isys_417 {_esys_412 sys._esys_044 _esys_413 sys._esys_045 _esys_414 sys._esys_046}\n"
"type sys._esys_041 (sys._esys_042 sys._osys_415 sys._isys_417)\n"
"var !sys.mkiface sys._esys_041\n"
"type sys._esys_048 {}\n"
"type sys._osys_410 {_esys_409 sys.int32}\n"
"type sys._osys_426 {_esys_425 sys.int32}\n"
"type sys._esys_049 {}\n"
"type sys._esys_047 (sys._esys_048 sys._osys_410 sys._esys_049)\n"
"type sys._esys_047 (sys._esys_048 sys._osys_426 sys._esys_049)\n"
"var !sys.argc sys._esys_047\n"
"type sys._esys_051 {}\n"
"type sys._osys_414 {_esys_413 sys.int32}\n"
"type sys._osys_430 {_esys_429 sys.int32}\n"
"type sys._esys_052 {}\n"
"type sys._esys_050 (sys._esys_051 sys._osys_414 sys._esys_052)\n"
"type sys._esys_050 (sys._esys_051 sys._osys_430 sys._esys_052)\n"
"var !sys.envc sys._esys_050\n"
"type sys._esys_054 {}\n"
"type sys._osys_419 {_esys_417 sys.string}\n"
"type sys._isys_421 {_esys_418 sys.int32}\n"
"type sys._esys_053 (sys._esys_054 sys._osys_419 sys._isys_421)\n"
"type sys._osys_435 {_esys_433 sys.string}\n"
"type sys._isys_437 {_esys_434 sys.int32}\n"
"type sys._esys_053 (sys._esys_054 sys._osys_435 sys._isys_437)\n"
"var !sys.argv sys._esys_053\n"
"type sys._esys_056 {}\n"
"type sys._osys_427 {_esys_425 sys.string}\n"
"type sys._isys_429 {_esys_426 sys.int32}\n"
"type sys._esys_055 (sys._esys_056 sys._osys_427 sys._isys_429)\n"
"type sys._osys_443 {_esys_441 sys.string}\n"
"type sys._isys_445 {_esys_442 sys.int32}\n"
"type sys._esys_055 (sys._esys_056 sys._osys_443 sys._isys_445)\n"
"var !sys.envv sys._esys_055\n"
"type sys._esys_058 {}\n"
"type sys._osys_436 {_esys_433 sys.float64 _esys_434 sys.int32}\n"
"type sys._isys_438 {_esys_435 sys.float64}\n"
"type sys._esys_057 (sys._esys_058 sys._osys_436 sys._isys_438)\n"
"type sys._osys_452 {_esys_449 sys.float64 _esys_450 sys.int32}\n"
"type sys._isys_454 {_esys_451 sys.float64}\n"
"type sys._esys_057 (sys._esys_058 sys._osys_452 sys._isys_454)\n"
"var !sys.frexp sys._esys_057\n"
"type sys._esys_060 {}\n"
"type sys._osys_445 {_esys_442 sys.float64}\n"
"type sys._isys_447 {_esys_443 sys.float64 _esys_444 sys.int32}\n"
"type sys._esys_059 (sys._esys_060 sys._osys_445 sys._isys_447)\n"
"type sys._osys_461 {_esys_458 sys.float64}\n"
"type sys._isys_463 {_esys_459 sys.float64 _esys_460 sys.int32}\n"
"type sys._esys_059 (sys._esys_060 sys._osys_461 sys._isys_463)\n"
"var !sys.ldexp sys._esys_059\n"
"type sys._esys_062 {}\n"
"type sys._osys_455 {_esys_452 sys.float64 _esys_453 sys.float64}\n"
"type sys._isys_457 {_esys_454 sys.float64}\n"
"type sys._esys_061 (sys._esys_062 sys._osys_455 sys._isys_457)\n"
"type sys._osys_471 {_esys_468 sys.float64 _esys_469 sys.float64}\n"
"type sys._isys_473 {_esys_470 sys.float64}\n"
"type sys._esys_061 (sys._esys_062 sys._osys_471 sys._isys_473)\n"
"var !sys.modf sys._esys_061\n"
"type sys._esys_064 {}\n"
"type sys._osys_464 {_esys_461 sys.bool}\n"
"type sys._isys_466 {_esys_462 sys.float64 _esys_463 sys.int32}\n"
"type sys._esys_063 (sys._esys_064 sys._osys_464 sys._isys_466)\n"
"type sys._osys_480 {_esys_477 sys.bool}\n"
"type sys._isys_482 {_esys_478 sys.float64 _esys_479 sys.int32}\n"
"type sys._esys_063 (sys._esys_064 sys._osys_480 sys._isys_482)\n"
"var !sys.isInf sys._esys_063\n"
"type sys._esys_066 {}\n"
"type sys._osys_473 {_esys_471 sys.bool}\n"
"type sys._isys_475 {_esys_472 sys.float64}\n"
"type sys._esys_065 (sys._esys_066 sys._osys_473 sys._isys_475)\n"
"type sys._osys_489 {_esys_487 sys.bool}\n"
"type sys._isys_491 {_esys_488 sys.float64}\n"
"type sys._esys_065 (sys._esys_066 sys._osys_489 sys._isys_491)\n"
"var !sys.isNaN sys._esys_065\n"
"type sys._esys_068 {}\n"
"type sys._osys_481 {_esys_479 sys.float64}\n"
"type sys._isys_483 {_esys_480 sys.int32}\n"
"type sys._esys_067 (sys._esys_068 sys._osys_481 sys._isys_483)\n"
"type sys._osys_497 {_esys_495 sys.float64}\n"
"type sys._isys_499 {_esys_496 sys.int32}\n"
"type sys._esys_067 (sys._esys_068 sys._osys_497 sys._isys_499)\n"
"var !sys.Inf sys._esys_067\n"
"type sys._esys_070 {}\n"
"type sys._osys_488 {_esys_487 sys.float64}\n"
"type sys._osys_504 {_esys_503 sys.float64}\n"
"type sys._esys_071 {}\n"
"type sys._esys_069 (sys._esys_070 sys._osys_488 sys._esys_071)\n"
"type sys._esys_069 (sys._esys_070 sys._osys_504 sys._esys_071)\n"
"var !sys.NaN sys._esys_069\n"
"type sys._esys_073 {}\n"
"type sys._esys_075 [sys.any] sys.any\n"
"type sys._esys_074 *sys._esys_075\n"
"type sys._osys_491 {hmap sys._esys_074}\n"
"type sys._isys_493 {keysize sys.uint32 valsize sys.uint32 keyalg sys.uint32 valalg sys.uint32 hint sys.uint32}\n"
"type sys._esys_072 (sys._esys_073 sys._osys_491 sys._isys_493)\n"
"type sys._osys_507 {hmap sys._esys_074}\n"
"type sys._isys_509 {keysize sys.uint32 valsize sys.uint32 keyalg sys.uint32 valalg sys.uint32 hint sys.uint32}\n"
"type sys._esys_072 (sys._esys_073 sys._osys_507 sys._isys_509)\n"
"var !sys.newmap sys._esys_072\n"
"type sys._esys_077 {}\n"
"type sys._osys_502 {val sys.any}\n"
"type sys._osys_518 {val sys.any}\n"
"type sys._esys_079 [sys.any] sys.any\n"
"type sys._esys_078 *sys._esys_079\n"
"type sys._isys_504 {hmap sys._esys_078 key sys.any}\n"
"type sys._esys_076 (sys._esys_077 sys._osys_502 sys._isys_504)\n"
"type sys._isys_520 {hmap sys._esys_078 key sys.any}\n"
"type sys._esys_076 (sys._esys_077 sys._osys_518 sys._isys_520)\n"
"var !sys.mapaccess1 sys._esys_076\n"
"type sys._esys_081 {}\n"
"type sys._osys_510 {val sys.any pres sys.bool}\n"
"type sys._osys_526 {val sys.any pres sys.bool}\n"
"type sys._esys_083 [sys.any] sys.any\n"
"type sys._esys_082 *sys._esys_083\n"
"type sys._isys_512 {hmap sys._esys_082 key sys.any}\n"
"type sys._esys_080 (sys._esys_081 sys._osys_510 sys._isys_512)\n"
"type sys._isys_528 {hmap sys._esys_082 key sys.any}\n"
"type sys._esys_080 (sys._esys_081 sys._osys_526 sys._isys_528)\n"
"var !sys.mapaccess2 sys._esys_080\n"
"type sys._esys_085 {}\n"
"type sys._esys_086 {}\n"
"type sys._esys_088 [sys.any] sys.any\n"
"type sys._esys_087 *sys._esys_088\n"
"type sys._isys_519 {hmap sys._esys_087 key sys.any val sys.any}\n"
"type sys._esys_084 (sys._esys_085 sys._esys_086 sys._isys_519)\n"
"type sys._isys_535 {hmap sys._esys_087 key sys.any val sys.any}\n"
"type sys._esys_084 (sys._esys_085 sys._esys_086 sys._isys_535)\n"
"var !sys.mapassign1 sys._esys_084\n"
"type sys._esys_090 {}\n"
"type sys._esys_091 {}\n"
"type sys._esys_093 [sys.any] sys.any\n"
"type sys._esys_092 *sys._esys_093\n"
"type sys._isys_525 {hmap sys._esys_092 key sys.any val sys.any pres sys.bool}\n"
"type sys._esys_089 (sys._esys_090 sys._esys_091 sys._isys_525)\n"
"type sys._isys_541 {hmap sys._esys_092 key sys.any val sys.any pres sys.bool}\n"
"type sys._esys_089 (sys._esys_090 sys._esys_091 sys._isys_541)\n"
"var !sys.mapassign2 sys._esys_089\n"
"type sys._esys_095 {}\n"
"type sys._esys_097 1 sys.any\n"
"type sys._esys_096 *sys._esys_097\n"
"type sys._osys_532 {hchan sys._esys_096}\n"
"type sys._isys_534 {elemsize sys.uint32 elemalg sys.uint32 hint sys.uint32}\n"
"type sys._esys_094 (sys._esys_095 sys._osys_532 sys._isys_534)\n"
"type sys._osys_548 {hchan sys._esys_096}\n"
"type sys._isys_550 {elemsize sys.uint32 elemalg sys.uint32 hint sys.uint32}\n"
"type sys._esys_094 (sys._esys_095 sys._osys_548 sys._isys_550)\n"
"var !sys.newchan sys._esys_094\n"
"type sys._esys_099 {}\n"
"type sys._esys_100 {}\n"
"type sys._esys_102 1 sys.any\n"
"type sys._esys_101 *sys._esys_102\n"
"type sys._isys_541 {hchan sys._esys_101 elem sys.any}\n"
"type sys._esys_098 (sys._esys_099 sys._esys_100 sys._isys_541)\n"
"type sys._isys_557 {hchan sys._esys_101 elem sys.any}\n"
"type sys._esys_098 (sys._esys_099 sys._esys_100 sys._isys_557)\n"
"var !sys.chansend sys._esys_098\n"
"type sys._esys_104 {}\n"
"type sys._osys_546 {elem sys.any}\n"
"type sys._osys_562 {elem sys.any}\n"
"type sys._esys_106 1 sys.any\n"
"type sys._esys_105 *sys._esys_106\n"
"type sys._isys_548 {hchan sys._esys_105}\n"
"type sys._esys_103 (sys._esys_104 sys._osys_546 sys._isys_548)\n"
"type sys._isys_564 {hchan sys._esys_105}\n"
"type sys._esys_103 (sys._esys_104 sys._osys_562 sys._isys_564)\n"
"var !sys.chanrecv1 sys._esys_103\n"
"type sys._esys_108 {}\n"
"type sys._osys_553 {elem sys.any pres sys.bool}\n"
"type sys._osys_569 {elem sys.any pres sys.bool}\n"
"type sys._esys_110 1 sys.any\n"
"type sys._esys_109 *sys._esys_110\n"
"type sys._isys_555 {hchan sys._esys_109}\n"
"type sys._esys_107 (sys._esys_108 sys._osys_553 sys._isys_555)\n"
"type sys._isys_571 {hchan sys._esys_109}\n"
"type sys._esys_107 (sys._esys_108 sys._osys_569 sys._isys_571)\n"
"var !sys.chanrecv2 sys._esys_107\n"
"type sys._esys_112 {}\n"
"type sys._esys_113 {}\n"
@ -221,25 +221,30 @@ char* sysimport =
"type sys._esys_115 (sys._esys_116 sys._esys_117 sys._esys_118)\n"
"var !sys.goexit sys._esys_115\n"
"type sys._esys_120 {}\n"
"type sys._osys_566 {_esys_563 sys.string _esys_564 sys.bool}\n"
"type sys._isys_568 {_esys_565 sys.string}\n"
"type sys._esys_119 (sys._esys_120 sys._osys_566 sys._isys_568)\n"
"type sys._osys_582 {_esys_579 sys.string _esys_580 sys.bool}\n"
"type sys._isys_584 {_esys_581 sys.string}\n"
"type sys._esys_119 (sys._esys_120 sys._osys_582 sys._isys_584)\n"
"var !sys.readfile sys._esys_119\n"
"type sys._esys_122 {}\n"
"type sys._osys_577 {_esys_572 sys.int32 _esys_573 sys.int32}\n"
"type sys._esys_123 *sys.uint8\n"
"type sys._isys_579 {_esys_574 sys._esys_123 _esys_575 sys.int32 _esys_576 sys.int32}\n"
"type sys._esys_121 (sys._esys_122 sys._osys_577 sys._isys_579)\n"
"var !sys.bytestorune sys._esys_121\n"
"type sys._esys_125 {}\n"
"type sys._osys_590 {_esys_585 sys.int32 _esys_586 sys.int32}\n"
"type sys._isys_592 {_esys_587 sys.string _esys_588 sys.int32 _esys_589 sys.int32}\n"
"type sys._esys_124 (sys._esys_125 sys._osys_590 sys._isys_592)\n"
"var !sys.stringtorune sys._esys_124\n"
"type sys._osys_591 {_esys_588 sys.bool}\n"
"type sys._isys_593 {_esys_589 sys.string _esys_590 sys.string}\n"
"type sys._esys_121 (sys._esys_122 sys._osys_591 sys._isys_593)\n"
"var !sys.writefile sys._esys_121\n"
"type sys._esys_124 {}\n"
"type sys._osys_603 {_esys_598 sys.int32 _esys_599 sys.int32}\n"
"type sys._esys_125 *sys.uint8\n"
"type sys._isys_605 {_esys_600 sys._esys_125 _esys_601 sys.int32 _esys_602 sys.int32}\n"
"type sys._esys_123 (sys._esys_124 sys._osys_603 sys._isys_605)\n"
"var !sys.bytestorune sys._esys_123\n"
"type sys._esys_127 {}\n"
"type sys._esys_128 {}\n"
"type sys._isys_599 {_esys_598 sys.int32}\n"
"type sys._esys_126 (sys._esys_127 sys._esys_128 sys._isys_599)\n"
"var !sys.exit sys._esys_126\n"
"type sys._osys_616 {_esys_611 sys.int32 _esys_612 sys.int32}\n"
"type sys._isys_618 {_esys_613 sys.string _esys_614 sys.int32 _esys_615 sys.int32}\n"
"type sys._esys_126 (sys._esys_127 sys._osys_616 sys._isys_618)\n"
"var !sys.stringtorune sys._esys_126\n"
"type sys._esys_129 {}\n"
"type sys._esys_130 {}\n"
"type sys._isys_625 {_esys_624 sys.int32}\n"
"type sys._esys_128 (sys._esys_129 sys._esys_130 sys._isys_625)\n"
"var !sys.exit sys._esys_128\n"
"))\n"
;

View File

@ -196,8 +196,9 @@ void* mal(uint32);
uint32 cmpstring(string, string);
void initsig(void);
void traceback(uint8 *pc, uint8 *sp, G* gp);
int32 open(byte*, int32);
int32 open(byte*, int32, ...);
int32 read(int32, void*, int32);
int32 write(int32, void*, int32);
void close(int32);
int32 fstat(int32, void*);

View File

@ -26,6 +26,7 @@ TEXT sys·write(SB),1,$-8
TEXT open(SB),1,$-8
MOVQ 8(SP), DI
MOVL 16(SP), SI
MOVL 20(SP), DX
MOVQ $0, R10
MOVL $(0x2000000+5), AX // syscall entry
SYSCALL
@ -52,6 +53,14 @@ TEXT read(SB),1,$-8
SYSCALL
RET
TEXT write(SB),1,$-8
MOVL 8(SP), DI
MOVQ 16(SP), SI
MOVL 24(SP), DX
MOVL $(0x2000000+4), AX // syscall entry
SYSCALL
RET
TEXT sys·sigaction(SB),1,$-8
MOVL 8(SP), DI // arg 1 sig
MOVQ 16(SP), SI // arg 2 act

View File

@ -37,12 +37,39 @@ sys·readfile(string filein, string fileout, bool okout)
fileout = nil;
goto close_out;
}
okout = 1;
okout = true;
close_out:
close(fd);
out:
FLUSH(&fileout);
FLUSH(&okout);
return;
}
void
sys·writefile(string filein, string textin, bool okout)
{
int32 fd;
byte namebuf[256];
okout = false;
if(filein == nil || filein->len >= sizeof(namebuf))
goto out;
mcpy(namebuf, filein->str, filein->len);
namebuf[filein->len] = '\0';
fd = open(namebuf, 1|0x0200, 0644); // open for write, create if non-existant (sic)
if(fd < 0)
goto out;
if (write(fd, textin->str, textin->len) != textin->len) {
goto close_out;
}
okout = true;
close_out:
close(fd);
out:
FLUSH(&okout);
}