diff options
author | mia soweli <inbox@tachibana-labs.org> | 2023-05-18 20:13:14 +0000 |
---|---|---|
committer | Sigrid Solveig Haflínudóttir <sigrid@ftrv.se> | 2023-05-18 20:13:14 +0000 |
commit | 93837692bbaab28e01ea1178d8867047bbcad11d (patch) | |
tree | e2dc7f78bb406fac21226106c3f3c86ce556e231 /sys/src/libaml | |
parent | 0883ed0a61c38898ad926ea67eb0e9386dff4ecd (diff) |
libaml: tow eisaid inside the environment
Diffstat (limited to 'sys/src/libaml')
-rw-r--r-- | sys/src/libaml/aml.c | 35 |
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; +} |