1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
|
*** matchup.c-orig Fri Jul 1 12:28:28 2005
--- matchup.c Fri Jul 1 14:06:04 2005
***************
*** 417,422 ****
--- 417,463 ----
stralloc outline = {0};
+ void fix_taia()
+ {
+ stralloc tai = {0};
+ stralloc tmp = {0};
+ char *p = line.s+field[0]+1;
+ unsigned long secs;
+ unsigned long nanosecs;
+ unsigned long u;
+ char ch;
+
+ secs = 0;
+ nanosecs = 0;
+ for (;;) {
+ ch = *p++;
+ u = ch - '0';
+ if (u >= 10) {
+ u = ch - 'a';
+ if (u >= 6) break;
+ u += 10;
+ }
+ secs <<= 4;
+ secs += nanosecs >> 28;
+ nanosecs &= 0xfffffff;
+ nanosecs <<= 4;
+ nanosecs += u;
+ }
+ secs -= 4611686018427387914ULL;
+
+ if (!stralloc_copyb(&tai, strnum,fmt_ulong(strnum,secs))) nomem();
+ if (!stralloc_cats(&tai,".")) nomem();
+ if (!stralloc_catb(&tai, strnum,fmt_ulong(strnum,nanosecs))) nomem();
+ if (!stralloc_0(&tai)) nomem();
+
+ if (!stralloc_copy(&tmp,&tai)) nomem();
+ while (tmp.len < field[1])
+ if (!stralloc_cats(&tmp," ")) nomem();
+ if (!stralloc_cats(&tmp,line.s + field[1])) nomem();
+ if (!stralloc_copy(&line,&tmp)) nomem();
+ if (!stralloc_0(&line)) nomem();
+ }
+
void main()
{
int i;
***************
*** 452,457 ****
--- 493,500 ----
while (j < line.len) if (!line.s[j]) break; else ++j;
}
if (!stralloc_0(&line)) nomem();
+
+ if ((line.s[field[0]]) == '@') fix_taia();
if (str_equal(line.s + field[1],"status:")) ;
else if (str_equal(line.s + field[1],"starting")) starting();
|