summaryrefslogtreecommitdiff
path: root/sys/src/libaml
diff options
context:
space:
mode:
authormia soweli <inbox@tachibana-labs.org>2023-05-18 20:13:14 +0000
committerSigrid Solveig Haflínudóttir <sigrid@ftrv.se>2023-05-18 20:13:14 +0000
commit93837692bbaab28e01ea1178d8867047bbcad11d (patch)
treee2dc7f78bb406fac21226106c3f3c86ce556e231 /sys/src/libaml
parent0883ed0a61c38898ad926ea67eb0e9386dff4ecd (diff)
libaml: tow eisaid inside the environment
Diffstat (limited to 'sys/src/libaml')
-rw-r--r--sys/src/libaml/aml.c35
1 files changed, 35 insertions, 0 deletions
diff --git a/sys/src/libaml/aml.c b/sys/src/libaml/aml.c
index 57a0f8e2c..06d9b2a6d 100644
--- a/sys/src/libaml/aml.c
+++ b/sys/src/libaml/aml.c
@@ -2463,3 +2463,38 @@ amldrop(void *p)
if(p != nil)
D2H(p)->mark &= ~2;
}
+
+char*
+amleisaid(void *v)
+{
+ int i;
+ ulong l, m, n;
+ static char s[8];
+
+ if(amltag(v) == 's')
+ return v;
+
+ if(amltag(v) == 'i') {
+ m = 0;
+ l = amlint(v);
+ for(i = 24; i >= 0; i -= 8) {
+ m |= (l & 0xff) << i;
+ l >>= 8;
+ }
+
+ s[7] = 0;
+ for(i = 6; i >= 3; i--) {
+ n = m & 0xf;
+ s[i] = "0123456789ABCDEF"[n]; m >>= 4;
+ }
+
+ for(i = 2; i >= 0; i--) {
+ n = m & 0x1f;
+ s[i] = '@' + n; m >>= 5;
+ }
+
+ return s;
+ }
+
+ return nil;
+}