|
|
1.1 ! root 1: startdir=/usr/spool/news/net ! 2: history=/usr/lib/news/history ! 3: rm=rm ! 4: sed -e " ! 5: 1i\\ ! 6: cd $startdir ! 7: s/.* // ! 8: s/ .*// ! 9: s/net\.// ! 10: s!\.!/!g ! 11: s!^!sed '/^\$/q' ! ! 12: " $history | sh | ! 13: awk ' ! 14: BEGIN{ ! 15: 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" ! 16: split(t,x) ! 17: n = 0; ! 18: for(i=1;i<24;i+=2) { ! 19: month[x[i]] = (i+1)/2 ! 20: days[(i+1)/2] = n ! 21: n += x[i+1] ! 22: } ! 23: } ! 24: ! 25: /^Date: /{ ! 26: if (NF == 7 ){ ! 27: t = $6 ! 28: x[1] = $3 ! 29: x[2] = $4 ! 30: x[3] = $5 ! 31: } else if (NF == 5 && split($3,x,"-") == 3) { ! 32: t = $4 ! 33: } else if (NF == 4 && split($2,x,"-") == 3) { ! 34: t = $3 ! 35: }else if (NF == 6) { ! 36: t = $5 ! 37: x[1] = $2 ! 38: x[2] = $3 ! 39: x[3] = $4 ! 40: }else{ ! 41: print "Bad date",messageid, $0 ! 42: next ! 43: } ! 44: sent = x[1] + days[month[x[2]]] + (x[3]-80)*365 ! 45: if (x[3]%4 == 0 && month[x[2]] > 2) ! 46: sent++ ! 47: split(t,x,":") ! 48: sent *= 60*24 ! 49: sent += x[1] * 60 + x[2] ! 50: } ! 51: /^Date-Received: /{ ! 52: if (NF == 7 ){ ! 53: t = $6 ! 54: x[1] = $3 ! 55: x[2] = $4 ! 56: x[3] = $5 ! 57: } else if (NF == 5 && split($3,x,"-") == 3) { ! 58: t = $4 ! 59: } else if (NF == 4 && split($2,x,"-") == 3) { ! 60: t = $3 ! 61: }else if (NF == 6) { ! 62: t = $5 ! 63: x[1] = $2 ! 64: x[2] = $3 ! 65: x[3] = $4 ! 66: }else{ ! 67: print "Bad date",messageid, $0 ! 68: continue ! 69: } ! 70: rec = x[3]*10000 + month[x[2]]* 100 + x[1] ! 71: if (rec > today) ! 72: today = rec ! 73: rec = x[1] + days[month[x[2]]] + (x[3]-80)*365 ! 74: if (x[3]%4 == 0 && month[x[2]] > 2) ! 75: rec++ ! 76: split(t,x,":") ! 77: rec *= 60*24 ! 78: rec += x[1] * 60 + x[2] +1.44 ! 79: } ! 80: /^Message-ID: /{messageid = $2} ! 81: /^Path: /{ ! 82: n = split($2,x,"!") ! 83: if( n > 2) ! 84: feed = x[2] ! 85: else ! 86: feed = x[1] ! 87: } ! 88: /^Relay-Version: /{ ! 89: n = int((rec - sent)/(60*24)+0.999) ! 90: if( rec > 0 ) { ! 91: if ( n >= 0) { ! 92: adelay[n]++ ! 93: if( n > amaxdelay) ! 94: amaxdelay = n ! 95: } else { ! 96: adelay[-1]++ ! 97: print "Time Warp", messageid ! 98: } ! 99: totdelay++ ! 100: feedsite[feed]++ ! 101: } ! 102: rec = sent = 0 ! 103: } ! 104: END { ! 105: n = int((rec - sent)/(60*24)+0.999) ! 106: if( rec > 0 ) { ! 107: if ( n >= 0) { ! 108: adelay[n]++ ! 109: if( n > amaxdelay) ! 110: amaxdelay = n ! 111: } else { ! 112: adelay[-1]++ ! 113: print "Time Warp", messageid ! 114: } ! 115: totdelay++ ! 116: feedsite[feed]++ ! 117: } ! 118: i = 0 ! 119: count = 0 ! 120: printf("\n\tPropagation Delay\n") ! 121: printf("\n\t No. of Cumulative\n") ! 122: printf("\tDays Articles Percent\n") ! 123: if (adelay[-1] > 0) { ! 124: printf("\t <0%8d%7d%% (Time Warp)\n",adelay[-1],0) ! 125: count += adelay[-1] ! 126: } ! 127: while (i <= amaxdelay) { ! 128: count += adelay[i] ! 129: if( adelay[i] != 0 ) ! 130: printf("\t%3d%8d%7d%%\n",i,adelay[i],(count*100)/totdelay) ! 131: i++ ! 132: } ! 133: ! 134: n = 0 ! 135: for (i in feedsite) ! 136: ptr[++n] = i ! 137: ! 138: j = 1 ! 139: while (j < n){ ! 140: if (feedsite[ptr[j]] < feedsite[ptr[j+1]]){ ! 141: temp = ptr[j] ! 142: ptr[j] = ptr[j+1] ! 143: ptr[j+1] = temp ! 144: if( j > 1) { ! 145: j-- ! 146: continue ! 147: } ! 148: } ! 149: j++ ! 150: } ! 151: printf("\n\tDistribution of news feeds\n") ! 152: printf("\t Count Percent Site\n") ! 153: j = 0 ! 154: while (++j <= n){ ! 155: i =feedsite[ptr[j]] ! 156: printf("\t%8d%7d%% %s\n",i,(i*100)/totdelay,ptr[j]); ! 157: } ! 158: }'
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.