diff options
author | cinap_lenrek <cinap_lenrek@gmx.de> | 2012-12-31 21:09:46 +0100 |
---|---|---|
committer | cinap_lenrek <cinap_lenrek@gmx.de> | 2012-12-31 21:09:46 +0100 |
commit | 6cadd03bbeace1c256ba875c2e6a877f924877cd (patch) | |
tree | 8079ea6f6ccdb1c2cbb2b7813f618837617cb33e /sys/src/cmd/1c | |
parent | 6d99096136278f06f6333f927da34105a8dfe0bf (diff) |
fix utf and rune handling in preparation for 32bit runes
Diffstat (limited to 'sys/src/cmd/1c')
-rw-r--r-- | sys/src/cmd/1c/swt.c | 20 |
1 files changed, 10 insertions, 10 deletions
diff --git a/sys/src/cmd/1c/swt.c b/sys/src/cmd/1c/swt.c index 66f4d36dc..85622a4df 100644 --- a/sys/src/cmd/1c/swt.c +++ b/sys/src/cmd/1c/swt.c @@ -244,26 +244,26 @@ outstring(char *s, long n) } long -outlstring(ushort *s, long n) +outlstring(Rune *s, long n) { - char buf[2]; - int c; + char buf[sizeof(Rune)]; + int c, i; long r; - while(nstring & 1) + while(nstring % sizeof buf) outstring("", 1); r = nstring; while(n > 0) { c = *s++; if(align(0, types[TCHAR], Aarg1)) { - buf[0] = c>>8; - buf[1] = c; + for(i = sizeof buf; i > 0; c >>= 8) + buf[--i] = c; } else { - buf[0] = c; - buf[1] = c>>8; + for(i = 0; i < sizeof buf; c >>= 8) + buf[i++] = c; } - outstring(buf, 2); - n -= sizeof(ushort); + outstring(buf, sizeof buf); + n -= sizeof buf; } return r; } |