> I'm getting rid of ape but I need the functions at > /sys/src/ape/lib/bsd/ntohl.c to port some software. These functions > just change endianness. Is there some native similar functions > somebody is aware of? lookman is not helping me here. I don't want > to add code if a similar functionality is already in the system.
No. Those functions are mental. The Plan 9 way is so simple that there's no library, everyone just brings their own macros/functions. The trick is: if you care about the order of bytes then you should be dealing with a byte array, not a native integral type. These are from Ori's git implementation though there are other, similar implementations around the place (e.g. lib9p, venti). They do the job perfectly well. #define GETBE32(b) \ ((((b)[0] & 0xFFul) << 24) | \ (((b)[1] & 0xFFul) << 16) | \ (((b)[2] & 0xFFul) << 8) | \ (((b)[3] & 0xFFul) << 0)) #define PUTBE32(b, n)\ do{ \ (b)[0] = (n) >> 24; \ (b)[1] = (n) >> 16; \ (b)[2] = (n) >> 8; \ (b)[3] = (n) >> 0; \ } while(0) Little endian versions proceed similarly: #define GETLE32(b) \ ((((b)[0] & 0xFFul) << 0) | \ (((b)[1] & 0xFFul) << 8) | \ (((b)[2] & 0xFFul) << 16) | \ (((b)[3] & 0xFFul) << 24)) #define PUTLE32(b, n)\ do{ \ (b)[0] = (n) >> 0; \ (b)[1] = (n) >> 8; \ (b)[2] = (n) >> 16; \ (b)[3] = (n) >> 24; \ } while(0) The 16-bit and 64-bit versions should be obvious. For porting I'd just use APE, or copy the bits and pieces you need. ------------------------------------------ 9fans: 9fans Permalink: https://9fans.topicbox.com/groups/9fans/Tbf58310b561cd180-M0b8f2ed4b88270bf7dd090ab Delivery options: https://9fans.topicbox.com/groups/9fans/subscription