Annotation of 43BSDTahoe/new/news/misc/delay, revision 1.1

1.1     ! root        1: #
        !             2: #      Note, Date-Received knows abotu yout local timezone
        !             3: #
        !             4: ./grabheaders | awk '
        !             5: BEGIN{
        !             6:        t = "Jan 31 Feb 28 Mar 31 Apr 30 May 31 Jun 30 Jul 31 Aug 31 Sep 30 Oct 31 Nov 30 Dec 31"
        !             7:        split(t,x)
        !             8:        n = 0;
        !             9:        for(i=1;i<24;i+=2) {
        !            10:                month[x[i]] = month[(i+1)/2] = (i+1)/2
        !            11:                days[(i+1)/2] = n
        !            12:                n += x[i+1]
        !            13:        }
        !            14: }
        !            15: 
        !            16: /^Date: /{
        !            17:        if (NF == 7 ){
        !            18:                t = $6
        !            19:                x[1] = $3
        !            20:                x[2] = $4
        !            21:                x[3] = $5
        !            22:        } else if (NF == 5 && split($3,x,"-") == 3) {
        !            23:                t = $4
        !            24:        } else if (NF == 4 && split($2,x,"-") == 3) {
        !            25:                t = $3
        !            26:        }else if (NF == 6) {
        !            27:                t = $5
        !            28:                x[1] = $2
        !            29:                x[2] = $3
        !            30:                x[3] = $4
        !            31:        }else{
        !            32:                print "Bad date",messageid, $0
        !            33:                next
        !            34:        }
        !            35:        sent = x[1] + days[month[x[2]]] + (x[3]-80)*365
        !            36:        if (x[3]%4 == 0 && month[x[2]] > 2)
        !            37:                sent++
        !            38:        split(t,x,":")
        !            39:        sent *= 60*24
        !            40:        sent += x[1] * 60 + x[2]
        !            41: }
        !            42: /^Date-Received: /{
        !            43:        if (NF < 3){
        !            44:                print "Date-received", messageid ,$0
        !            45:                rec = 0
        !            46:                next
        !            47:        }
        !            48:        split($2,x,"/")
        !            49:        rec = x[2] + days[x[1]+0] +(x[3]-80)*365
        !            50:        if (x[3]%4 == 0 && x[1] > 2)
        !            51:                rec++
        !            52:        split($3,x,":")
        !            53:        rec *= 60*24
        !            54:        rec += x[1] * 60 + x[2] + 1.44
        !            55:        if ($4 != "GMT")
        !            56:                rec += 60*5
        !            57:        if (rec > today)
        !            58:                today = rec
        !            59: }
        !            60: /^Message-ID: /{messageid = $2}
        !            61: /^Path: /{
        !            62:        n = split($2,x,"!")
        !            63:        if( n > 2)
        !            64:                feed = x[2]
        !            65:        else
        !            66:                feed = x[1]
        !            67: }
        !            68: /^$/{
        !            69:        n = int((rec - sent)/(60*24)+0.999)
        !            70:        if( rec > 0 ) {
        !            71:                if ( n >= 0) {
        !            72:                        adelay[n]++
        !            73:                        if( n > amaxdelay)
        !            74:                                amaxdelay = n
        !            75:                } else {
        !            76:                        adelay[-1]++
        !            77:                        print "Time Warp", messageid
        !            78:                }
        !            79:                totdelay++
        !            80:                feedsite[feed]++
        !            81:        }
        !            82:        rec = sent = 0
        !            83: }
        !            84: END {
        !            85:        n = int((rec - sent)/(60*24)+0.999)
        !            86:        if( rec > 0 ) {
        !            87:                if ( n >= 0) {
        !            88:                        adelay[n]++
        !            89:                        if( n > amaxdelay)
        !            90:                                amaxdelay = n
        !            91:                } else {
        !            92:                        adelay[-1]++
        !            93:                        print "Time Warp", messageid
        !            94:                }
        !            95:                totdelay++
        !            96:                feedsite[feed]++
        !            97:        }
        !            98:        i = 0
        !            99:        count = 0
        !           100:        printf("\n\tPropagation Delay\n")
        !           101:        printf("\n\t     No. of   Cumulative\n")
        !           102:        printf("\tDays Articles Percent\n")
        !           103:        if (adelay[-1] > 0) {
        !           104:                printf("\t <0%8d%7d%% (Time Warp)\n",adelay[-1],0)
        !           105:                count += adelay[-1]
        !           106:        }
        !           107:        while (i <= amaxdelay) {
        !           108:                count += adelay[i]
        !           109:                if( adelay[i] != 0 )
        !           110:                        printf("\t%3d%8d%7d%%\n",i,adelay[i],(count*100)/totdelay)
        !           111:                i++
        !           112:        }
        !           113: 
        !           114:        n = 0
        !           115:        for (i in feedsite)
        !           116:                ptr[++n] = i
        !           117: 
        !           118:        j = 1
        !           119:        while (j < n){
        !           120:                if  (feedsite[ptr[j]] < feedsite[ptr[j+1]]){
        !           121:                        temp = ptr[j]
        !           122:                        ptr[j] = ptr[j+1]
        !           123:                        ptr[j+1] = temp
        !           124:                        if( j > 1) {
        !           125:                                j--
        !           126:                                continue
        !           127:                        }
        !           128:                }
        !           129:                j++
        !           130:        }
        !           131:        printf("\n\tDistribution of news feeds\n")
        !           132:        printf("\t   Count Percent   Site\n")
        !           133:        j = 0
        !           134:        while (++j <= n){
        !           135:                i =feedsite[ptr[j]]
        !           136:                printf("\t%8d%7d%%   %s\n",i,(i*100)/totdelay,ptr[j]);
        !           137:        }
        !           138: }'

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.