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