summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--libstd/blat.myr28
1 files changed, 28 insertions, 0 deletions
diff --git a/libstd/blat.myr b/libstd/blat.myr
new file mode 100644
index 0000000..f5a665e
--- /dev/null
+++ b/libstd/blat.myr
@@ -0,0 +1,28 @@
+use "sys.use"
+use "fmt.use"
+
+pkg std =
+ const blat : (path : byte[:], buf : byte[:] -> bool)
+;;
+
+const blat = {path, buf
+ var fd
+ var written
+ var n
+
+ fd = open(path, Ocreat|Owronly, 0o777)
+ if fd < 0
+ fatal(1, "Could not open file \"%s\"", path)
+ ;;
+
+ n = 0
+ while true
+ written = write(fd, buf[n:])
+ if written <= 0
+ goto done
+ ;;
+ n += written
+ ;;
+:done
+ -> written == 0
+}