Blame


1 70bcc780 2004-03-25 devnull #include <u.h>
2 70bcc780 2004-03-25 devnull #include <libc.h>
3 70bcc780 2004-03-25 devnull #include <venti.h>
4 70bcc780 2004-03-25 devnull
5 70bcc780 2004-03-25 devnull int
6 70bcc780 2004-03-25 devnull vtparsescore(char *s, char **prefix, uchar score[VtScoreSize])
7 70bcc780 2004-03-25 devnull {
8 70bcc780 2004-03-25 devnull int i, c;
9 70bcc780 2004-03-25 devnull char *buf, *colon;
10 70bcc780 2004-03-25 devnull
11 70bcc780 2004-03-25 devnull if((colon = strchr(s, ':')) != nil)
12 70bcc780 2004-03-25 devnull buf = colon+1;
13 70bcc780 2004-03-25 devnull else
14 70bcc780 2004-03-25 devnull buf = s;
15 70bcc780 2004-03-25 devnull
16 70bcc780 2004-03-25 devnull if(strlen(buf) != 2*VtScoreSize)
17 70bcc780 2004-03-25 devnull return -1;
18 70bcc780 2004-03-25 devnull
19 70bcc780 2004-03-25 devnull memset(score, 0, VtScoreSize);
20 70bcc780 2004-03-25 devnull for(i=0; i<2*VtScoreSize; i++){
21 70bcc780 2004-03-25 devnull if(buf[i] >= '0' && buf[i] <= '9')
22 70bcc780 2004-03-25 devnull c = buf[i] - '0';
23 70bcc780 2004-03-25 devnull else if(buf[i] >= 'a' && buf[i] <= 'z')
24 70bcc780 2004-03-25 devnull c = buf[i] - 'a' + 10;
25 70bcc780 2004-03-25 devnull else if(buf[i] >= 'A' && buf[i] <= 'Z')
26 70bcc780 2004-03-25 devnull c = buf[i] - 'A' + 10;
27 70bcc780 2004-03-25 devnull else
28 70bcc780 2004-03-25 devnull return -1;
29 70bcc780 2004-03-25 devnull
30 70bcc780 2004-03-25 devnull if((i & 1) == 0)
31 70bcc780 2004-03-25 devnull c <<= 4;
32 70bcc780 2004-03-25 devnull score[i>>1] |= c;
33 70bcc780 2004-03-25 devnull }
34 70bcc780 2004-03-25 devnull if(colon){
35 70bcc780 2004-03-25 devnull *colon = 0;
36 361e279c 2005-01-18 devnull if(prefix)
37 361e279c 2005-01-18 devnull *prefix = s;
38 361e279c 2005-01-18 devnull }else{
39 361e279c 2005-01-18 devnull if(prefix)
40 361e279c 2005-01-18 devnull *prefix = nil;
41 361e279c 2005-01-18 devnull }
42 70bcc780 2004-03-25 devnull return 0;
43 70bcc780 2004-03-25 devnull }