summaryrefslogtreecommitdiff
path: root/sys/src/cmd/1c
diff options
context:
space:
mode:
authorcinap_lenrek <cinap_lenrek@gmx.de>2012-12-31 21:09:46 +0100
committercinap_lenrek <cinap_lenrek@gmx.de>2012-12-31 21:09:46 +0100
commit6cadd03bbeace1c256ba875c2e6a877f924877cd (patch)
tree8079ea6f6ccdb1c2cbb2b7813f618837617cb33e /sys/src/cmd/1c
parent6d99096136278f06f6333f927da34105a8dfe0bf (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.c20
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;
}