mirror of
https://github.com/9fans/plan9port.git
synced 2025-01-15 11:20:03 +00:00
41 lines
687 B
C
41 lines
687 B
C
|
#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;
|
||
|
*prefix = s;
|
||
|
}else
|
||
|
*prefix = nil;
|
||
|
return 0;
|
||
|
}
|