#!/usr/bin/awk -f BEGIN { TMP="/tmp/view.sizes" SAVED_FS = FS FS = ":" CONTROL="size.data" while ( ( res = getline < CONTROL ) > 0 ) { SIZE_CACHE[ $1 ] = $2 } close( CONTROL ) FS = SAVED_FS } function makesize( VAL ) { NBYTES = 0 + VAL if ( NBYTES < 1000 ) { return sprintf( "%3db", NBYTES ) } NBYTES = ( NBYTES + 512 ) / 1024 if ( NBYTES < 1000 ) { return sprintf( "%3dk", NBYTES ) } NBYTES = ( NBYTES + 512 ) / 1024 if ( DEBUG != "" ) { return sprintf( "% dM", NBYTES ) } if ( NBYTES < 1000 ) { return sprintf( "%3dM", NBYTES ) } if ( NBYTES < 10000 ) { return sprintf( "%3.1fG", NBYTES / 1024 ) } NBYTES = ( NBYTES + 512 ) / 1024 if ( NBYTES < 1000 ) { return sprintf( "%3dG", NBYTES ) } NBYTES = ( NBYTES + 512 ) / 1024 if ( NBYTES < 1000 ) { return sprintf( "%3dT", NBYTES ) } return sprintf( "%3dE", NBYTES ) } function ausgabe() { PACK ++ ALL_PACK ++ printf( "%3s %3dx [%4s] %s\n", \ "#" PACK, XG, SIZE, XD ) } function ausgabetotal() { SUM_SIZE = makesize( SUM_BYTES ) TRANSFER_SIZE = makesize( TRANSFER_BYTES ) PARTIAL_BYTES = TRANSFER_BYTES - SUM_XG_BYTES if ( PARTIAL_BYTES >= 0 ) PARTIAL_SIZE = makesize( PARTIAL_BYTES ) else PARTIAL_SIZE = "-" makesize( 0 - PARTIAL_BYTES ) TOTAL = sprintf( "total in files, [%4s] total downloaded, [%4s] partial", TRANSFER_SIZE, PARTIAL_SIZE ) printf( "%3s %3dx [%4s] %s\n", \ "#" PACK, SUM_XG, SUM_SIZE, TOTAL ) } END { ausgabe() ausgabetotal() if ( SUM_BYTES != ALL_BYTES ) { print "" PACK = ALL_PACK SUM_XG = ALL_XG SUM_BYTES = ALL_BYTES SUM_XG_BYTES = ALL_XG_BYTES TRANSFER_BYTES = ALL_TRANSFER_BYTES ausgabetotal() } } /Do Not Edit This File/ { # Do Not Edit This File: 50.08 50.43 15173264677 1638743 if ( LAST_KEY != "" ) { ausgabe() if ( LAST_KEY != "-" ) { ausgabetotal() SUM_BYTES = 0 SUM_XG = 0 SUM_XG_BYTES = 0 TRANSFER_BYTES = 0 } XF = "" print "" } TRANSFER_BYTES += $8 ALL_TRANSFER_BYTES += $8 LAST_KEY = $9 PACK = 0 SIZE = 0 if ( DEBUG != "" ) ausgabetotal() next } /^$/ { if ( XF == "" ) next ausgabe() if ( DEBUG != "" ) ausgabetotal() } /^xx_file/ { XF = substr( $0, 9 ) if ( SIZE_CACHE[ XF ] > 0 ) { BYTES = SIZE_CACHE[ XF ] } else { LINE = "eval `stat -s \"" XF "\"` ; echo $st_size > " TMP system( LINE ) getline < TMP close( TMP ) BYTES = 0 + $1 } SUM_BYTES += BYTES ALL_BYTES += BYTES SIZE = makesize( BYTES ) next } /^xx_desc/ { XD = substr( $0, 9 ) next } /^xx_gets/ { XG = 0 + substr( $0, 9 ) SUM_XG += XG ALL_XG += XG XG_BYTES = XG * BYTES SUM_XG_BYTES += XG_BYTES ALL_XG_BYTES += XG_BYTES } #