#include <u.h> | |
#include <libc.h> | |
#include <venti.h> | |
int | |
vtparsescore(char *s, char **prefix, uchar score[VtScoreSize]) | |
{ | |
int i, c; | |
char *buf, *colon; | |
if((colon = strchr(s, ':')) != nil) | |
buf = colon+1; | |
else | |
buf = s; | |
if(strlen(buf) != 2*VtScoreSize) | |
return -1; | |
memset(score, 0, VtScoreSize); | |
for(i=0; i<2*VtScoreSize; i++){ | |
if(buf[i] >= '0' && buf[i] <= '9') | |
c = buf[i] - '0'; | |
else if(buf[i] >= 'a' && buf[i] <= 'z') | |
c = buf[i] - 'a' + 10; | |
else if(buf[i] >= 'A' && buf[i] <= 'Z') | |
c = buf[i] - 'A' + 10; | |
else | |
return -1; | |
if((i & 1) == 0) | |
c <<= 4; | |
score[i>>1] |= c; | |
} | |
if(colon){ | |
*colon = 0; | |
if(prefix) | |
*prefix = s; | |
}else{ | |
if(prefix) | |
*prefix = nil; | |
} | |
return 0; | |
} |