shithub: mc

Download patch

ref: 8a7f47695be3621942b0b951913814185617fbf0
parent: bc40668ce5784f97856add94d43e8f3b36e3749a
author: Ori Bernstein <ori@eigenstate.org>
date: Tue Apr 14 21:07:24 EDT 2015

Update to most recent Myrddin.

--- /dev/null
+++ b/lib/date/bld.proj
@@ -1,0 +1,8 @@
+lib date =
+	date.myr
+	fmt.myr
+	names.myr
+	parse.myr
+	types.myr
+	zoneinfo.myr
+;;
--- a/lib/date/bldfile
+++ /dev/null
@@ -1,8 +1,0 @@
-lib date =
-	date.myr
-	fmt.myr
-	names.myr
-	parse.myr
-	types.myr
-	zoneinfo.myr
-;;
--- a/lib/date/fmt.myr
+++ b/lib/date/fmt.myr
@@ -9,76 +9,76 @@
 	const Datefmt	= "%Y-%m-%d %z"
 
 	const fmt	: (f : byte[:], d : instant	-> byte[:])
-	const bfmt	: (buf : byte[:], f : byte[:], d : instant	-> std.size)
+	const bfmt	: (buf : byte[:], f : byte[:], d : instant	-> byte[:])
 ;;
 
 
 const fmt = {f, d
 	var buf
-	var sz
 
 	buf = std.slalloc(2048)
-	sz = bfmt(buf, f, d)
-	-> buf[:sz]
+	-> bfmt(buf, f, d)
 }
 
 const bfmt = {buf, f, d
-	var c
+	var c, s
 	var o
 	
 	o = 0
+	s = ""
 	while f.len != 0
 		(c, f) = std.striter(f)
 		if c == '%'
 			(c, f) = std.striter(f)
 			match c
-			| 'a':	o += std.bfmt(buf[o:], "%s", _names.abbrevday[d.day])
-			| 'A':	o += std.bfmt(buf[o:], "%s", _names.fullday[d.day])
-			| 'b':	o += std.bfmt(buf[o:], "%s", _names.abbrevmon[d.mon])
-			| 'B':	o += std.bfmt(buf[o:], "%s", _names.fullmon[d.mon])
-			| 'c':	o += bfmt(buf[o:], "%Y-%m-%d", d)
-			| 'C':	o += std.bfmt(buf[o:], "%02i", d.year % 100)
-			| 'd':	o += std.bfmt(buf[o:], "%02i", d.day)
-			| 'D':	o += std.bfmt(buf[o:], "%m/%d/%y (wtf america)", d.mon, d.day, d.year)
-			| 'e':	o += std.bfmt(buf[o:], "%2i", d.day)
-			| 'F':	o += std.bfmt(buf[o:], "%y-%m-%d", d.year, d.mon, d.day)
+			| 'a':	s = std.bfmt(buf[o:], "%s", _names.abbrevday[d.day])
+			| 'A':	s = std.bfmt(buf[o:], "%s", _names.fullday[d.day])
+			| 'b':	s = std.bfmt(buf[o:], "%s", _names.abbrevmon[d.mon])
+			| 'B':	s = std.bfmt(buf[o:], "%s", _names.fullmon[d.mon])
+			| 'c':	s = bfmt(buf[o:], "%Y-%m-%d", d)
+			| 'C':	s = std.bfmt(buf[o:], "%02i", d.year % 100)
+			| 'd':	s = std.bfmt(buf[o:], "%02i", d.day)
+			| 'D':	s = std.bfmt(buf[o:], "%m/%d/%y (wtf america)", d.mon, d.day, d.year)
+			| 'e':	s = std.bfmt(buf[o:], "%2i", d.day)
+			| 'F':	s = std.bfmt(buf[o:], "%y-%m-%d", d.year, d.mon, d.day)
 			/*
-			| 'G':	o += std.bfmt(buf[o:], ...?
+			| 'G':	s = std.bfmt(buf[o:], ...?
 			| 'g':
 			*/
-			| 'h':	o += std.bfmt(buf[o:], "%s", _names.abbrevmon[d.mon])
-			| 'H':	o += std.bfmt(buf[o:], "%02i", d.h)
-			| 'I':	o += std.bfmt(buf[o:], "%02i", d.h % 12)
-			| 'j':	o += std.bfmt(buf[o:], "year day... unimplemented.")
-			| 'k':	o += std.bfmt(buf[o:], "%i", d.h)
-			| 'l':	o += std.bfmt(buf[o:], "%i", d.h % 12)
-			| 'm':	o += std.bfmt(buf[o:], "%i", d.mon)
-			| 'M':	o += std.bfmt(buf[o:], "%i", d.m)
-			| 'n':	o += std.bfmt(buf[o:], "\n")
-			| 'O':	o += std.bfmt(buf[o:], "unsupported %O")
-			| 'p':	o += std.bfmt(buf[o:], "%s", ["AM", "PM"][d.h/12])
-			| 'P':	o += std.bfmt(buf[o:], "%s", ["am", "pm"][d.h/12])
-			| 'r':	o += bfmt(buf[o:], "%H:%M:%S %P", d) 
-			| 'R':	o += bfmt(buf[o:], "%H:%M %P", d)
-			| 's':	o += std.bfmt(buf[o:], "%l", d.actual)
-			| 'S':	o += std.bfmt(buf[o:], "%i", d.s)
-			| 't':	o += std.bfmt(buf[o:], "\t")
-			| 'u':	o += std.bfmt(buf[o:], "%i", d.wday)
-			| 'U':	o += std.bfmt(buf[o:], "week number... unimplemented.")
-			| 'x':	o += bfmt(buf[o:], Datefmt, d)
-			| 'X':	o += bfmt(buf[o:], Timefmt, d)
-			| 'y':	o += std.bfmt(buf[o:], "%i", d.year % 100)
-			| 'Y':	o += std.bfmt(buf[o:], "%i", d.year)
-			| 'z':	o += timezone(buf[o:], d.tzoff)
-			| 'Z':	o += std.bfmt(buf[o:], "%s", d.tzname)
-			| '%':	o += std.bfmt(buf[o:], "%%")
+			| 'h':	s = std.bfmt(buf[o:], "%s", _names.abbrevmon[d.mon])
+			| 'H':	s = std.bfmt(buf[o:], "%02i", d.h)
+			| 'I':	s = std.bfmt(buf[o:], "%02i", d.h % 12)
+			| 'j':	s = std.bfmt(buf[o:], "year day... unimplemented.")
+			| 'k':	s = std.bfmt(buf[o:], "%i", d.h)
+			| 'l':	s = std.bfmt(buf[o:], "%i", d.h % 12)
+			| 'm':	s = std.bfmt(buf[o:], "%i", d.mon)
+			| 'M':	s = std.bfmt(buf[o:], "%i", d.m)
+			| 'n':	s = std.bfmt(buf[o:], "\n")
+			| 'O':	s = std.bfmt(buf[o:], "unsupported %O")
+			| 'p':	s = std.bfmt(buf[o:], "%s", ["AM", "PM"][d.h/12])
+			| 'P':	s = std.bfmt(buf[o:], "%s", ["am", "pm"][d.h/12])
+			| 'r':	s = bfmt(buf[o:], "%H:%M:%S %P", d) 
+			| 'R':	s = bfmt(buf[o:], "%H:%M %P", d)
+			| 's':	s = std.bfmt(buf[o:], "%l", d.actual)
+			| 'S':	s = std.bfmt(buf[o:], "%i", d.s)
+			| 't':	s = std.bfmt(buf[o:], "\t")
+			| 'u':	s = std.bfmt(buf[o:], "%i", d.wday)
+			| 'U':	s = std.bfmt(buf[o:], "week number... unimplemented.")
+			| 'x':	s = bfmt(buf[o:], Datefmt, d)
+			| 'X':	s = bfmt(buf[o:], Timefmt, d)
+			| 'y':	s = std.bfmt(buf[o:], "%i", d.year % 100)
+			| 'Y':	s = std.bfmt(buf[o:], "%i", d.year)
+			| 'z':	s = timezone(buf[o:], d.tzoff)
+			| 'Z':	s = std.bfmt(buf[o:], "%s", d.tzname)
+			| '%':	s = std.bfmt(buf[o:], "%%")
 			| _:	std.fatal(1, "unknown format character %c\n", c)
 			;;
 		else
-			o += std.bfmt(buf[o:], "%c", c)
+			s = std.bfmt(buf[o:], "%c", c)
 		;;
+		o += s.len
 	;;
-	-> o
+	-> s
 }
 
 const timezone = {buf, off