It's hard to believe that somebody added the ability to deal with colons, but not upper case. On the other hand, maybe strtoul() is to blame for not understanding uppercase HEX digits. In which case, somebody ought to look into it. What do the standards say? Notes: Sat May 14 12:02:16 EDT 2005 rsc Please send a test program that demonstrates what you are trying to fix. Even better, also explain what real program this helps. I'm just confused. Thanks. Sat May 14 12:04:16 EDT 2005 rsc Actually, having read the 9fans conversation, I think this is just misguided. Ndb doesn't even use parseether. Reference: /n/sources/patch/sorry/upper_etheraddr Date: Sat May 14 08:35:54 CES 2005 Reviewed-by: rsc --- /sys/src/libip/parseether.c Sat May 14 08:32:16 2005 +++ /sys/src/libip/parseether.c Sat May 14 08:31:56 2005 @@ -4,7 +4,7 @@ int parseether(uchar *to, char *from) { - char nip[4]; + char nip[3]; char *p; int i; @@ -13,9 +13,13 @@ if(*p == 0) return -1; nip[0] = *p++; + if (nip[0] >= 'A' and nip[0] <= 'F') + nip[0] |= ' '; if(*p == 0) return -1; nip[1] = *p++; + if (nip[1] >= 'A' and nip[1] <= 'F') + nip[1] |= ' '; nip[2] = 0; to[i] = strtoul(nip, 0, 16); if(*p == ':')