Blob
1 #include <u.h>2 #include <libc.h>3 #include <venti.h>5 int6 vtparsescore(char *s, char **prefix, uchar score[VtScoreSize])7 {8 int i, c;9 char *buf, *colon;11 if((colon = strchr(s, ':')) != nil)12 buf = colon+1;13 else14 buf = s;16 if(strlen(buf) != 2*VtScoreSize)17 return -1;19 memset(score, 0, VtScoreSize);20 for(i=0; i<2*VtScoreSize; i++){21 if(buf[i] >= '0' && buf[i] <= '9')22 c = buf[i] - '0';23 else if(buf[i] >= 'a' && buf[i] <= 'z')24 c = buf[i] - 'a' + 10;25 else if(buf[i] >= 'A' && buf[i] <= 'Z')26 c = buf[i] - 'A' + 10;27 else28 return -1;30 if((i & 1) == 0)31 c <<= 4;32 score[i>>1] |= c;33 }34 if(colon){35 *colon = 0;36 *prefix = s;37 }else38 *prefix = nil;39 return 0;40 }