mldonkey-commits
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Mldonkey-commits] Changes to mldonkey/src/networks/donkey/donkeyStats.m


From: mldonkey-commits
Subject: [Mldonkey-commits] Changes to mldonkey/src/networks/donkey/donkeyStats.ml
Date: Mon, 07 Nov 2005 15:12:07 -0500

Index: mldonkey/src/networks/donkey/donkeyStats.ml
diff -u mldonkey/src/networks/donkey/donkeyStats.ml:1.22 
mldonkey/src/networks/donkey/donkeyStats.ml:1.23
--- mldonkey/src/networks/donkey/donkeyStats.ml:1.22    Sun Oct 16 20:42:54 2005
+++ mldonkey/src/networks/donkey/donkeyStats.ml Mon Nov  7 20:11:42 2005
@@ -18,1258 +18,199 @@
 *)
 
 open Int64ops
-open AnyEndian
-open LittleEndian
 open Printf2
 open Options
-open BasicSocket (* last_time *)
-open GuiTypes
-open CommonOptions
 open CommonTypes
+open CommonOptions
 open CommonGlobals
 open CommonNetwork
-open CommonMessages
 open CommonInteractive
+open CommonStats
 
 open DonkeyOptions
 open DonkeyTypes
 open DonkeyGlobals
 open DonkeyComplexOptions
 
+let start_session = ref (BasicSocket.last_time ())
 
-let brand_to_int b =
-  match b with
-    Brand_unknown -> 0
-  | Brand_edonkey -> 1
-  | Brand_mldonkey1 -> 2
-  | Brand_mldonkey2 -> 3
-  | Brand_overnet -> 4
-  | Brand_newemule -> 5
-  | Brand_server -> 6
-  | Brand_mldonkey3 -> 7
-  | Brand_cdonkey -> 8
-  | Brand_lmule -> 9
-  | Brand_shareaza -> 10
-  | Brand_amule -> 11
-  | Brand_lphant -> 12
-  | Brand_emuleplus -> 13
-  | Brand_hydranode -> 14
-
-let brand_of_int b =
-  match b with
-    0 -> Brand_unknown
-  | 1 -> Brand_edonkey
-  | 2 -> Brand_mldonkey1
-  | 3 -> Brand_mldonkey2
-  | 4 -> Brand_overnet
-  | 5 -> Brand_newemule
-  | 6 -> Brand_server
-  | 7 -> Brand_mldonkey3
-  | 8 -> Brand_cdonkey
-  | 9 -> Brand_lmule
-  | 10 -> Brand_shareaza
-  | 11 -> Brand_amule
-  | 12 -> Brand_lphant
-  | 13 -> Brand_emuleplus
-  | 14 -> Brand_hydranode
-  | _ -> raise Not_found
-
-let gbrand_to_string b =
-  match b with
-    Brand_unknown -> "unk"
-  | Brand_edonkey -> "eDK"
-  | Brand_cdonkey -> "cDK"
-  | Brand_mldonkey1 -> "oML"
-  | Brand_mldonkey2 -> "nML"
-  | Brand_mldonkey3 -> "tML"
-  | Brand_overnet -> "OVR"
-  | Brand_newemule -> "eMU"
-  | Brand_lmule -> "xMU"
-  | Brand_shareaza -> "sZA"
-  | Brand_server -> "SER"
-  | Brand_amule -> "aMU"
-  | Brand_lphant -> "lPH"
-  | Brand_emuleplus -> "eM+"
-  | Brand_hydranode -> "Hyd"
-
-let brand_mod_to_int b =
-  match b with
-    Brand_mod_unknown -> 0
-  | Brand_mod_extasy -> 1
-  | Brand_mod_hunter -> 2
-  | Brand_mod_sivka -> 3
-  | Brand_mod_ice -> 4
-  | Brand_mod_plus -> 5
-  | Brand_mod_lsd -> 6
-  | Brand_mod_maella -> 7
-  | Brand_mod_pille -> 8
-  | Brand_mod_morphkad -> 9
-  | Brand_mod_efmod -> 10
-  | Brand_mod_xtreme -> 11
-  | Brand_mod_bionic -> 12
-  | Brand_mod_pawcio -> 13
-  | Brand_mod_zzul -> 14
-  | Brand_mod_blackhand -> 15
-  | Brand_mod_lovelace -> 16
-  | Brand_mod_morphnext -> 17
-  | Brand_mod_fincan -> 18
-  | Brand_mod_ewombat -> 19
-  | Brand_mod_morph -> 20
-  | Brand_mod_mortillo -> 21
-  | Brand_mod_lh -> 22
-  | Brand_mod_emulespana -> 23
-  | Brand_mod_blackrat -> 24
-  | Brand_mod_enkeydev -> 25
-  | Brand_mod_gnaddelwarz -> 26
-  | Brand_mod_phoenixkad -> 27
-  | Brand_mod_koizo -> 28
-  | Brand_mod_ed2kfiles -> 29
-  | Brand_mod_athlazan -> 30
-  | Brand_mod_cryptum -> 31
-  | Brand_mod_lamerzchoice -> 32
-  | Brand_mod_notdead -> 33
-  | Brand_mod_peace -> 34
-  | Brand_mod_goldicryptum -> 35
-  | Brand_mod_eastshare -> 36
-  | Brand_mod_mfck -> 37
-  | Brand_mod_echanblard -> 38
-  | Brand_mod_sp4rk -> 39
-  | Brand_mod_powermule -> 40
-  | Brand_mod_bloodymad -> 41
-  | Brand_mod_roman2k -> 42
-  | Brand_mod_gammaoh -> 43
-  | Brand_mod_elfenwombat -> 44
-  | Brand_mod_o2 -> 45
-  | Brand_mod_dm -> 46
-  | Brand_mod_sfiom -> 47
-  | Brand_mod_magic_elseve -> 48
-  | Brand_mod_schlumpmule -> 49
-  | Brand_mod_lc -> 50
-  | Brand_mod_noamson -> 51
-  | Brand_mod_stormit -> 52
-  | Brand_mod_omax -> 53
-  | Brand_mod_mison -> 54
-  | Brand_mod_phoenix -> 55
-  | Brand_mod_spiders -> 56
-  | Brand_mod_iberica -> 57
-  | Brand_mod_mortimer -> 58
-  | Brand_mod_stonehenge -> 59
-  | Brand_mod_xlillo -> 60
-  | Brand_mod_imperator -> 61
-  | Brand_mod_raziboom -> 62
-  | Brand_mod_khaos -> 63
-  | Brand_mod_hardmule -> 64
-  | Brand_mod_sc -> 65
-  | Brand_mod_cy4n1d -> 66
-  | Brand_mod_dmx -> 67
-  | Brand_mod_ketamine -> 68
-  | Brand_mod_blackmule -> 69
-  | Brand_mod_morphxt -> 70
-  | Brand_mod_ngdonkey -> 71
-  | Brand_mod_hawkstar -> 72
-  | Brand_mod_neomule -> 73
-  | Brand_mod_cyrex -> 74
-  | Brand_mod_aldo -> 75
-  | Brand_mod_emulede -> 76
-  | Brand_mod_zx -> 77
-  | Brand_mod_ibericaxt -> 78
-  | Brand_mod_candymule -> 79
-  | Brand_mod_ackronic -> 80
-  | Brand_mod_rappis -> 81
-  | Brand_mod_overdose -> 82
-  | Brand_mod_hebmule -> 83
-  | Brand_mod_senfei -> 84
-  | Brand_mod_spoofmod -> 85
-  | Brand_mod_fusspilz -> 86
-  | Brand_mod_rocket -> 87
-  | Brand_mod_warezfaw -> 88
-  | Brand_mod_emusicmule -> 89
-  | Brand_mod_aideadsl -> 90
-  | Brand_mod_epo -> 91
-  | Brand_mod_kalitsch -> 92
-  | Brand_mod_raynz -> 93
-  | Brand_mod_serverclient -> 94
-  | Brand_mod_bl4ckbird -> 95
-  | Brand_mod_bl4ckf0x -> 96
-  | Brand_mod_rt -> 97
-  | Brand_mod_airionix -> 98
-  | Brand_mod_ionix -> 99
-  | Brand_mod_tornado -> 100
-  | Brand_mod_antifaker -> 101
-  | Brand_mod_netf -> 102
-  | Brand_mod_nextemf -> 103
-  | Brand_mod_proemule -> 104
-  | Brand_mod_szemule -> 105
-  | Brand_mod_darkmule -> 106
-  | Brand_mod_miragemod -> 107
-  | Brand_mod_nextevolution -> 108
-  | Brand_mod_pootzgrila -> 109
-  | Brand_mod_freeangel -> 110
-  | Brand_mod_enos -> 111
-  | Brand_mod_webys -> 112
-
-let brand_mod_of_int b =
-  match b with
-    0 -> Brand_mod_unknown
-  | 1 -> Brand_mod_extasy
-  | 2 -> Brand_mod_hunter
-  | 3 -> Brand_mod_sivka
-  | 4 -> Brand_mod_ice
-  | 5 -> Brand_mod_plus
-  | 6 -> Brand_mod_lsd
-  | 7 -> Brand_mod_maella
-  | 8 -> Brand_mod_pille
-  | 9 -> Brand_mod_morphkad
-  | 10 -> Brand_mod_efmod
-  | 11 -> Brand_mod_xtreme
-  | 12 -> Brand_mod_bionic
-  | 13 -> Brand_mod_pawcio
-  | 14 -> Brand_mod_zzul
-  | 15 -> Brand_mod_blackhand
-  | 16 -> Brand_mod_lovelace
-  | 17 -> Brand_mod_morphnext
-  | 18 -> Brand_mod_fincan
-  | 19 -> Brand_mod_ewombat
-  | 20 -> Brand_mod_morph
-  | 21 -> Brand_mod_mortillo
-  | 22 -> Brand_mod_lh
-  | 23 -> Brand_mod_emulespana
-  | 24 -> Brand_mod_blackrat
-  | 25 -> Brand_mod_enkeydev
-  | 26 -> Brand_mod_gnaddelwarz
-  | 27 -> Brand_mod_phoenixkad
-  | 28 -> Brand_mod_koizo
-  | 29 -> Brand_mod_ed2kfiles
-  | 30 -> Brand_mod_athlazan
-  | 31 -> Brand_mod_cryptum
-  | 32 -> Brand_mod_lamerzchoice
-  | 33 -> Brand_mod_notdead
-  | 34 -> Brand_mod_peace
-  | 35 -> Brand_mod_goldicryptum
-  | 36 -> Brand_mod_eastshare
-  | 37 -> Brand_mod_mfck
-  | 38 -> Brand_mod_echanblard
-  | 39 -> Brand_mod_sp4rk
-  | 40 -> Brand_mod_powermule
-  | 41 -> Brand_mod_bloodymad
-  | 42 -> Brand_mod_roman2k
-  | 43 -> Brand_mod_gammaoh
-  | 44 -> Brand_mod_elfenwombat
-  | 45 -> Brand_mod_o2
-  | 46 -> Brand_mod_dm
-  | 47 -> Brand_mod_sfiom
-  | 48 -> Brand_mod_magic_elseve
-  | 49 -> Brand_mod_schlumpmule
-  | 50 -> Brand_mod_lc
-  | 51 -> Brand_mod_noamson
-  | 52 -> Brand_mod_stormit
-  | 53 -> Brand_mod_omax
-  | 54 -> Brand_mod_mison
-  | 55 -> Brand_mod_phoenix
-  | 56 -> Brand_mod_spiders
-  | 57 -> Brand_mod_iberica
-  | 58 -> Brand_mod_mortimer
-  | 59 -> Brand_mod_stonehenge
-  | 60 -> Brand_mod_xlillo
-  | 61 -> Brand_mod_imperator
-  | 62 -> Brand_mod_raziboom
-  | 63 -> Brand_mod_khaos
-  | 64 -> Brand_mod_hardmule
-  | 65 -> Brand_mod_sc
-  | 66 -> Brand_mod_cy4n1d
-  | 67 -> Brand_mod_dmx
-  | 68 -> Brand_mod_ketamine
-  | 69 -> Brand_mod_blackmule
-  | 70 -> Brand_mod_morphxt
-  | 71 -> Brand_mod_ngdonkey
-  | 72 -> Brand_mod_hawkstar
-  | 73 -> Brand_mod_neomule
-  | 74 -> Brand_mod_cyrex
-  | 75 -> Brand_mod_aldo
-  | 76 -> Brand_mod_emulede
-  | 77 -> Brand_mod_zx
-  | 78 -> Brand_mod_ibericaxt
-  | 79 -> Brand_mod_candymule
-  | 80 -> Brand_mod_ackronic
-  | 81 -> Brand_mod_rappis
-  | 82 -> Brand_mod_overdose
-  | 83 -> Brand_mod_hebmule
-  | 84 -> Brand_mod_senfei
-  | 85 -> Brand_mod_spoofmod
-  | 86 -> Brand_mod_fusspilz
-  | 87 -> Brand_mod_rocket
-  | 88 -> Brand_mod_warezfaw
-  | 89 -> Brand_mod_emusicmule
-  | 90 -> Brand_mod_aideadsl
-  | 91 -> Brand_mod_epo
-  | 92 -> Brand_mod_kalitsch
-  | 93 -> Brand_mod_raynz
-  | 94 -> Brand_mod_serverclient
-  | 95 -> Brand_mod_bl4ckbird
-  | 96 -> Brand_mod_bl4ckf0x
-  | 97 -> Brand_mod_rt
-  | 98 -> Brand_mod_airionix
-  | 99 -> Brand_mod_ionix
-  | 100 -> Brand_mod_tornado
-  | 101 -> Brand_mod_antifaker
-  | 102 -> Brand_mod_netf
-  | 103 -> Brand_mod_nextemf
-  | 104 -> Brand_mod_proemule
-  | 105 -> Brand_mod_szemule
-  | 106 -> Brand_mod_darkmule
-  | 107 -> Brand_mod_miragemod
-  | 108 -> Brand_mod_nextevolution
-  | 109 -> Brand_mod_pootzgrila
-  | 110 -> Brand_mod_freeangel
-  | 111 -> Brand_mod_enos
-  | 112 -> Brand_mod_webys
-  | _ -> raise Not_found
-
-let gbrand_mod_to_string b =
-  match b with
-    Brand_mod_unknown -> ""
-  | Brand_mod_extasy -> "ext"
-  | Brand_mod_hunter -> "hun"
-  | Brand_mod_sivka -> "siv"
-  | Brand_mod_ice -> "ice"
-  | Brand_mod_plus -> "plu"
-  | Brand_mod_lsd -> "lsd"
-  | Brand_mod_maella -> "mae"
-  | Brand_mod_pille -> "pil"
-  | Brand_mod_morphkad -> "mo1"
-  | Brand_mod_efmod -> "efm"
-  | Brand_mod_xtreme -> "xtr"
-  | Brand_mod_bionic -> "bio"
-  | Brand_mod_pawcio -> "paw"
-  | Brand_mod_zzul -> "zzu"
-  | Brand_mod_blackhand -> "bla"
-  | Brand_mod_lovelace -> "lov"
-  | Brand_mod_morphnext -> "mo2"
-  | Brand_mod_fincan -> "fin"
-  | Brand_mod_ewombat -> "ewo"
-  | Brand_mod_morph -> "mo3"
-  | Brand_mod_mortillo -> "mot"
-  | Brand_mod_lh -> "lh"
-  | Brand_mod_emulespana -> "esp"
-  | Brand_mod_blackrat -> "blr"
-  | Brand_mod_enkeydev -> "ekd"
-  | Brand_mod_gnaddelwarz -> "gna"
-  | Brand_mod_phoenixkad -> "pkd"
-  | Brand_mod_koizo -> "koi"
-  | Brand_mod_ed2kfiles -> "edf"
-  | Brand_mod_athlazan -> "ath"
-  | Brand_mod_cryptum -> "cry"
-  | Brand_mod_lamerzchoice -> "lam"
-  | Brand_mod_notdead -> "nod"
-  | Brand_mod_peace -> "pea"
-  | Brand_mod_goldicryptum -> "gcr"
-  | Brand_mod_eastshare -> "eas"
-  | Brand_mod_mfck -> "mfc"
-  | Brand_mod_echanblard -> "ech"
-  | Brand_mod_sp4rk -> "sp4"
-  | Brand_mod_powermule -> "pow"
-  | Brand_mod_bloodymad -> "blo"
-  | Brand_mod_roman2k -> "rom"
-  | Brand_mod_gammaoh -> "gam"
-  | Brand_mod_elfenwombat -> "elf"
-  | Brand_mod_o2 -> "o2"
-  | Brand_mod_dm -> "DM"
-  | Brand_mod_sfiom -> "SFI"
-  | Brand_mod_magic_elseve -> "MEl"
-  | Brand_mod_schlumpmule -> "sch"
-  | Brand_mod_lc -> "LC"
-  | Brand_mod_noamson -> "NoS"
-  | Brand_mod_stormit -> "Sto"
-  | Brand_mod_omax -> "OMX"
-  | Brand_mod_mison -> "Mis"
-  | Brand_mod_phoenix -> "pPho"
-  | Brand_mod_spiders -> "spi"
-  | Brand_mod_iberica -> "Ib"
-  | Brand_mod_mortimer -> "mor"
-  | Brand_mod_stonehenge -> "sto"
-  | Brand_mod_xlillo -> "Xli"
-  | Brand_mod_imperator -> "Imp"
-  | Brand_mod_raziboom -> "Raz"
-  | Brand_mod_khaos -> "Kha"
-  | Brand_mod_hardmule -> "Har"
-  | Brand_mod_sc -> "SC"
-  | Brand_mod_cy4n1d -> "Cy4"
-  | Brand_mod_dmx -> "DMX"
-  | Brand_mod_ketamine -> "Ket"
-  | Brand_mod_blackmule -> "blm"
-  | Brand_mod_morphxt -> "Mxt"
-  | Brand_mod_ngdonkey -> "ngd"
-  | Brand_mod_hawkstar -> "haw"
-  | Brand_mod_neomule -> "neo"
-  | Brand_mod_cyrex -> "cyr"
-  | Brand_mod_aldo -> "ald"
-  | Brand_mod_emulede -> "ede"
-  | Brand_mod_zx -> "zx"
-  | Brand_mod_ibericaxt -> "iBx"
-  | Brand_mod_candymule -> "can"
-  | Brand_mod_ackronic -> "ack"
-  | Brand_mod_rappis -> "rap"
-  | Brand_mod_overdose -> "ove"
-  | Brand_mod_hebmule -> "heb"
-  | Brand_mod_senfei -> "sen"
-  | Brand_mod_spoofmod -> "spo"
-  | Brand_mod_fusspilz -> "fus"
-  | Brand_mod_rocket -> "roc"
-  | Brand_mod_warezfaw -> "war"
-  | Brand_mod_emusicmule -> "emm"
-  | Brand_mod_aideadsl -> "aid"
-  | Brand_mod_epo -> "epo"
-  | Brand_mod_kalitsch -> "kal"
-  | Brand_mod_raynz -> "ray"
-  | Brand_mod_serverclient -> "sc"
-  | Brand_mod_bl4ckbird -> "b4b"
-  | Brand_mod_bl4ckf0x -> "b4f"
-  | Brand_mod_rt -> "rt"
-  | Brand_mod_airionix -> "aio"
-  | Brand_mod_ionix -> "ion"
-  | Brand_mod_tornado -> "tor"
-  | Brand_mod_antifaker -> "anf"
-  | Brand_mod_netf -> "nef"
-  | Brand_mod_nextemf -> "nxf"
-  | Brand_mod_proemule -> "pem"
-  | Brand_mod_szemule -> "sze"
-  | Brand_mod_darkmule -> "dar"
-  | Brand_mod_miragemod -> "mir"
-  | Brand_mod_nextevolution -> "nxe"
-  | Brand_mod_pootzgrila -> "poo"
-  | Brand_mod_freeangel -> "fre"
-  | Brand_mod_enos -> "eno"
-  | Brand_mod_webys -> "wys"
-
-let stats_all = dummy_stats
-let mod_stats_all = dummy_mod_stats
-let stats_by_brand = Array.init brand_count (fun _ ->
-  { dummy_stats with brand_seen = 0 }
+let stats_array = Array.init brand_count (fun _ ->
+    { dummy_stats with brand_seen = 0 }
   )
-
-let stats_by_brand_mod = Array.init brand_mod_count (fun _ ->
-  { dummy_mod_stats with brand_mod_seen = 0 }
+let stats_mod_array = Array.init brand_mod_count (fun _ ->
+    { dummy_stats with brand_seen = 0 }
   )
 
-let start_session = ref start_time
-
 let count_seen c =
-  stats_all.brand_seen <- stats_all.brand_seen + 1;
-  if !!emule_mods_count && c.client_mod_brand <> Brand_mod_unknown then 
mod_stats_all.brand_mod_seen <- mod_stats_all.brand_mod_seen + 1;
-  (match c.client_brand with
-      Brand_unknown -> () (* be careful, raising an exception here will
-abort all other operations after that point for this client...*)
-    | b ->
-      stats_by_brand.(brand_to_int b).brand_seen <-
-        stats_by_brand.(brand_to_int b).brand_seen + 1;
-      !!gstats_by_brand.(brand_to_int b).brand_seen <-
-        !!gstats_by_brand.(brand_to_int b).brand_seen + 1);
+  let i = brand_to_int c.client_brand in
+  stats_array.(i).brand_seen <- stats_array.(i).brand_seen + 1;
+  !!gstats_array.(i).brand_seen <- !!gstats_array.(i).brand_seen + 1;
+  
   if !!emule_mods_count then begin
-  (match c.client_mod_brand with
-      Brand_mod_unknown -> () (* be careful, raising an exception here will
-abort all other operations after that point for this client...*)
-    | b ->
-      stats_by_brand_mod.(brand_mod_to_int b).brand_mod_seen <-
-        stats_by_brand_mod.(brand_mod_to_int b).brand_mod_seen + 1;
-      !!gstats_by_brand_mod.(brand_mod_to_int b).brand_mod_seen <-
-        !!gstats_by_brand_mod.(brand_mod_to_int b).brand_mod_seen + 1)
+    let i = brand_mod_to_int c.client_brand_mod in
+    stats_mod_array.(i).brand_seen <- stats_mod_array.(i).brand_seen + 1;
+    !!gstats_mod_array.(i).brand_seen <- !!gstats_mod_array.(i).brand_seen + 1
   end
 
 let count_banned c =
-  stats_all.brand_banned <- stats_all.brand_banned + 1;
-  if !!emule_mods_count && c.client_mod_brand <> Brand_mod_unknown then 
mod_stats_all.brand_mod_banned <- mod_stats_all.brand_mod_banned + 1;
-  (match c.client_brand with
-      Brand_unknown -> ()
-    | b ->
-      stats_by_brand.(brand_to_int b).brand_banned <-
-        stats_by_brand.(brand_to_int b).brand_banned + 1;
-      !!gstats_by_brand.(brand_to_int b).brand_banned <-
-        !!gstats_by_brand.(brand_to_int b).brand_banned + 1);
+  let i = brand_to_int c.client_brand in
+  stats_array.(i).brand_banned <- stats_array.(i).brand_banned + 1;
+  !!gstats_array.(i).brand_banned <- !!gstats_array.(i).brand_banned + 1;
+
   if !!emule_mods_count then begin
-  (match c.client_mod_brand with
-      Brand_mod_unknown -> ()
-    | b ->
-      stats_by_brand_mod.(brand_mod_to_int b).brand_mod_banned <-
-        stats_by_brand_mod.(brand_mod_to_int b).brand_mod_banned + 1;
-      !!gstats_by_brand_mod.(brand_mod_to_int b).brand_mod_banned <-
-        !!gstats_by_brand_mod.(brand_mod_to_int b).brand_mod_banned + 1)
+    let i = brand_mod_to_int c.client_brand_mod in
+    stats_mod_array.(i).brand_banned <- stats_mod_array.(i).brand_banned + 1;
+    !!gstats_mod_array.(i).brand_banned <- !!gstats_mod_array.(i).brand_banned 
+ 1
   end
 
 let count_filerequest c =
-  stats_all.brand_filerequest <- stats_all.brand_filerequest + 1;
-  if !!emule_mods_count && c.client_mod_brand <> Brand_mod_unknown then 
mod_stats_all.brand_mod_filerequest <- mod_stats_all.brand_mod_filerequest + 1;
-  (match c.client_brand with
-      Brand_unknown -> ()
-    | b ->
-      stats_by_brand.(brand_to_int b).brand_filerequest <-
-        stats_by_brand.(brand_to_int b).brand_filerequest + 1;
-      !!gstats_by_brand.(brand_to_int b).brand_filerequest <-
-       !!gstats_by_brand.(brand_to_int b).brand_filerequest + 1);
-  if !!emule_mods_count then begin
-  (match c.client_mod_brand with
-      Brand_mod_unknown -> ()
-    | b ->
-      stats_by_brand_mod.(brand_mod_to_int b).brand_mod_filerequest <-
-        stats_by_brand_mod.(brand_mod_to_int b).brand_mod_filerequest + 1;
-      !!gstats_by_brand_mod.(brand_mod_to_int b).brand_mod_filerequest <-
-       !!gstats_by_brand_mod.(brand_mod_to_int b).brand_mod_filerequest + 1)
-  end
+  let i = brand_to_int c.client_brand in
+  stats_array.(i).brand_filerequest <- stats_array.(i).brand_filerequest + 1;
+  !!gstats_array.(i).brand_filerequest <- !!gstats_array.(i).brand_filerequest 
+ 1;
 
-let count_download c f v =
-  download_counter := !download_counter ++ v;
-  c.client_downloaded <- c.client_downloaded ++ v;
-  stats_all.brand_download <- stats_all.brand_download ++ v;
-  donkey_download_counter := !donkey_download_counter ++ v;
-  if !!emule_mods_count && c.client_mod_brand <> Brand_mod_unknown then 
-    mod_stats_all.brand_mod_download <- mod_stats_all.brand_mod_download ++ v;
-  (match c.client_brand with
-      Brand_unknown -> ()
-    | b ->
-      stats_by_brand.(brand_to_int b).brand_download <-
-        stats_by_brand.(brand_to_int b).brand_download ++ v;
-      !!gstats_by_brand.(brand_to_int b).brand_download <-
-        !!gstats_by_brand.(brand_to_int b).brand_download ++ v);
   if !!emule_mods_count then begin
-  (match c.client_mod_brand with
-      Brand_mod_unknown -> ()
-    | b ->
-      stats_by_brand_mod.(brand_mod_to_int b).brand_mod_download <-
-        stats_by_brand_mod.(brand_mod_to_int b).brand_mod_download ++ v;
-      !!gstats_by_brand_mod.(brand_mod_to_int b).brand_mod_download <-
-        !!gstats_by_brand_mod.(brand_mod_to_int b).brand_mod_download ++ v)
+    let i = brand_mod_to_int c.client_brand_mod in
+    stats_mod_array.(i).brand_filerequest <- 
stats_mod_array.(i).brand_filerequest + 1;
+    !!gstats_mod_array.(i).brand_filerequest <- 
!!gstats_mod_array.(i).brand_filerequest + 1
   end
 
-let count_upload c f v =
-  upload_counter := !upload_counter ++ v;
-  c.client_uploaded <- c.client_uploaded ++ v;
-  stats_all.brand_upload <- stats_all.brand_upload ++ v;
-  donkey_upload_counter := !donkey_upload_counter ++ v;
-  if !!emule_mods_count && c.client_mod_brand <> Brand_mod_unknown then 
-       mod_stats_all.brand_mod_upload <- mod_stats_all.brand_mod_upload ++ v;
-  (match c.client_brand with
-      Brand_unknown -> ()
-    | b ->
-      stats_by_brand.(brand_to_int b).brand_upload <-
-        stats_by_brand.(brand_to_int b).brand_upload ++ v;
-      !!gstats_by_brand.(brand_to_int b).brand_upload <-
-        !!gstats_by_brand.(brand_to_int b).brand_upload ++ v);
-  if !!emule_mods_count then begin
-  (match c.client_mod_brand with
-      Brand_mod_unknown -> ()
-    | b ->
-      stats_by_brand_mod.(brand_mod_to_int b).brand_mod_upload <-
-        stats_by_brand_mod.(brand_mod_to_int b).brand_mod_upload ++ v;
-      !!gstats_by_brand_mod.(brand_mod_to_int b).brand_mod_upload <-
-        !!gstats_by_brand_mod.(brand_mod_to_int b).brand_mod_upload ++ v)
-  end
+let count_download c v =
+  let i = brand_to_int c.client_brand in
+  stats_array.(i).brand_download <- stats_array.(i).brand_download ++ v;
+  !!gstats_array.(i).brand_download <- !!gstats_array.(i).brand_download ++ v;
 
-let percent_of_ints x y =
-  if y <> 0 then 100. *. (float_of_int x /. float_of_int y)
-  else 0.
-
-let percent_of_int64s x y =
-  if y <> Int64.zero then 100. *. (Int64.to_float x /. Int64.to_float y)
-  else 0.
-
-let print_stats buf =
-  let one_minute = 60 in
-  let one_hour = 3600 in
-  let one_day = 86400 in
-  let session_time = last_time () - !start_session in
-  let days = session_time / one_day in
-  let rem = session_time - days * one_day in
-  let hours = rem / one_hour in
-  let rem = rem - hours * one_hour in
-  let mins = rem / one_minute in
-    Printf.bprintf buf "Uptime: %d days, %02dh:%02dm (= %d seconds)\n"
-        days hours mins session_time;
-
-
-  if stats_all.brand_seen = 0 then
-    Printf.bprintf buf "You haven't connected to any client yet\n"
-  else begin
-    Printf.bprintf buf "\n     Successful Connections: %18d\n" 
stats_all.brand_seen;
-    for i=1 to brand_count-1 do
-      Printf.bprintf buf "%27s: %18d (%5.1f %%)\n"
-       (brand_to_string (brand_of_int i))
-       stats_by_brand.(i).brand_seen
-       (percent_of_ints stats_by_brand.(i).brand_seen stats_all.brand_seen)
-    done
+  if !!emule_mods_count then begin
+    let i = brand_mod_to_int c.client_brand_mod in
+    stats_mod_array.(i).brand_download <- stats_mod_array.(i).brand_download 
++ v;
+    !!gstats_mod_array.(i).brand_download <- 
!!gstats_mod_array.(i).brand_download ++ v;
   end;
 
-  if stats_all.brand_filerequest = 0 then
-    Printf.bprintf buf "You weren't asked for any file yet\n"
-  else begin
-    Printf.bprintf buf "\nTotal filerequests received: %18d\n" 
stats_all.brand_filerequest;
-    for i=1 to brand_count-1 do
-      Printf.bprintf buf "%27s: %18d (%5.1f %%)\n"
-       (brand_to_string (brand_of_int i))
-       stats_by_brand.(i).brand_filerequest
-       (percent_of_ints stats_by_brand.(i).brand_filerequest 
stats_all.brand_filerequest)
-    done
-  end;
+  c.client_downloaded <- c.client_downloaded ++ v;
+  donkey_download_counter := !donkey_download_counter ++ v;
+  global_count_download network v
 
-  if stats_all.brand_download = Int64.zero then
-    Printf.bprintf buf "You didn't download anything yet\n"
-  else begin
-      Printf.bprintf buf "\n            Total downloads: %18s (%5.1f KB/s)\n"
-      (Int64.to_string stats_all.brand_download)
-      ((Int64.to_float stats_all.brand_download) /. (float_of_int 
session_time) /. 1024.0);
-    for i=1 to brand_count-1 do
-      Printf.bprintf buf "%27s: %18s (%5.1f %%)\n"
-       (brand_to_string (brand_of_int i))
-       (Int64.to_string stats_by_brand.(i).brand_download)
-       (percent_of_int64s stats_by_brand.(i).brand_download 
stats_all.brand_download)
-    done
-  end;
+let count_upload c v =
+  let i = brand_to_int c.client_brand in
+  stats_array.(i).brand_upload <- stats_array.(i).brand_upload ++ v;
+  !!gstats_array.(i).brand_upload <- !!gstats_array.(i).brand_upload ++ v;
 
-  if stats_all.brand_upload = Int64.zero then
-    Printf.bprintf buf "You didn't upload anything yet\n"
-  else begin
-      Printf.bprintf buf "\n              Total uploads: %18s (%5.1f KB/s)\n"
-      (Int64.to_string stats_all.brand_upload)
-      ((Int64.to_float stats_all.brand_upload) /. (float_of_int session_time) 
/. 1024.0);
-    for i=1 to brand_count-1 do
-      Printf.bprintf buf "%27s: %18s (%5.1f %%)\n"
-       (brand_to_string (brand_of_int i))
-       (Int64.to_string stats_by_brand.(i).brand_upload)
-       (percent_of_int64s stats_by_brand.(i).brand_upload 
stats_all.brand_upload)
-    done
+  if !!emule_mods_count then begin
+    let i = brand_mod_to_int c.client_brand_mod in
+    stats_mod_array.(i).brand_upload <- stats_mod_array.(i).brand_upload ++ v;
+    !!gstats_mod_array.(i).brand_upload <- !!gstats_mod_array.(i).brand_upload 
++ v;
   end;
 
-  if stats_all.brand_banned = 0 then
-    Printf.bprintf buf "You didn't ban any client yet\n"
-  else begin
-      Printf.bprintf buf "\n                 Total bans: %18d\n" 
stats_all.brand_banned;
-    for i=1 to brand_count-1 do
-      Printf.bprintf buf "%27s: %18d (%5.1f %%)\n"
-       (brand_to_string (brand_of_int i))
-       stats_by_brand.(i).brand_banned
-       (percent_of_ints stats_by_brand.(i).brand_banned stats_all.brand_banned)
-    done
-  end
-
-
-let stats_html_header buf =
-  html_mods_table_header buf "csTable" "cs" [
-   ( "0", "srh", "Client brand", "Brand" ) ;
-   ( "0", "srh", "Separator", ":" ) ;
-   ( "1", "srh ar", "Successful connections", "Seen" ) ;
-   ( "1", "srh", "Successful connections percent", "%" ) ;
-   ( "0", "srh", "Separator", "|" ) ;
-   ( "1", "srh ar", "File requests received", "Reqs" ) ;
-   ( "1", "srh", "File requests received percent", "%" ) ;
-   ( "0", "srh", "Separator", "|" ) ;
-   ( "1", "srh ar", "Total bans", "B" ) ;
-   ( "1", "srh", "Total bans percent", "%" ) ;
-   ( "0", "srh", "Separator", "|" ) ;
-   ( "1", "srh ar", "Total uploads", "UL" ) ;
-   ( "1", "srh", "Total uploads percent", "%" ) ;
-   ( "1", "srh ar", "Total uploads average KB/s", "KB/s" ) ;
-   ( "0", "srh", "Separator", "|" ) ;
-   ( "1", "srh ar", "Total downloads", "DL" ) ;
-   ( "1", "srh", "Total downloads percent", "%" ) ;
-   ( "1", "srh ar", "Total downloads average KB/s", "KB/s" ) ;
-   ( "0", "srh", "Separator", "|" ) ;
-   ( "1", "srh", "Total uploads:downloads ratio", "U:DL" ) ]
-
-let new_print_stats buf o =
-  let one_minute = 60 in
-  let one_hour = 3600 in
-  let one_day = 86400 in
-  let session_time = last_time () - !start_session in
-  let uptime = last_time () - start_time in
-  let days = session_time / one_day in
-  let rem = maxi 1 (session_time - days * one_day) in
-
-  let hours = rem / one_hour in
-  let rem = rem - hours * one_hour in
-  let mins = rem / one_minute in
-
-  let sstats_all =
-    let stat = {
-        brand_seen = 0;
-        brand_banned = 0;
-        brand_filerequest = 0;
-        brand_download = Int64.zero;
-        brand_upload = Int64.zero
-      }
-    in stat in
-
-  for i=0 to brand_count-1 do
-    if ( brand_of_int i != Brand_server ) then begin
-        sstats_all.brand_seen <- sstats_all.brand_seen + 
stats_by_brand.(i).brand_seen;
-        sstats_all.brand_filerequest <- sstats_all.brand_filerequest + 
stats_by_brand.(i).brand_filerequest;
-        sstats_all.brand_download <- sstats_all.brand_download ++ 
stats_by_brand.(i).brand_download ;
-        sstats_all.brand_upload <- sstats_all.brand_upload ++ 
stats_by_brand.(i).brand_upload;
-        sstats_all.brand_banned <- sstats_all.brand_banned + 
stats_by_brand.(i).brand_banned;
-    end;
-  done;
-
-  let gstats_all =
-    let stat = {
-        brand_seen = 0;
-        brand_banned = 0;
-        brand_filerequest = 0;
-        brand_download = Int64.zero;
-        brand_upload = Int64.zero
-      }
-    in stat in
-
-  for i=0 to brand_count-1 do
-    gstats_all.brand_seen <- gstats_all.brand_seen + 
!!gstats_by_brand.(i).brand_seen;
-    gstats_all.brand_filerequest <- gstats_all.brand_filerequest + 
!!gstats_by_brand.(i).brand_filerequest;
-    gstats_all.brand_download <- gstats_all.brand_download ++ 
!!gstats_by_brand.(i).brand_download ;
-    gstats_all.brand_upload <- gstats_all.brand_upload ++ 
!!gstats_by_brand.(i).brand_upload;
-    gstats_all.brand_banned <- gstats_all.brand_banned + 
!!gstats_by_brand.(i).brand_banned;
-  done;
-
-  if use_html_mods o then
-    begin
-      Buffer.add_string buf "\\<div class=\\\"cs\\\"\\>\n";
-      html_mods_table_one_row buf "csTable" "cs" [
-        ("", "srh",
-          Printf.sprintf "eDonkey - Session Uptime: %d days, %02dh:%02dm (= %d 
seconds)"
-            days hours mins session_time); ];
-      Buffer.add_string buf "\\</div\\>\n";
-
-      stats_html_header buf;
-
-      let counter = ref 0 in
-      let showTotal = ref false in
-
-      for i=1 to brand_count do
-        if i=brand_count then showTotal := true;
-        if !showTotal || ( brand_of_int i != Brand_server && 
stats_by_brand.(i).brand_seen > 0 ) then begin
-          incr counter;
-          Printf.bprintf buf "\\<tr class=\\\"%s\\\"\\>" (if (!counter mod 2 
== 0) then "dl-1" else "dl-2");
-          Printf.bprintf buf "
-\\<td class=\\\"sr\\\"\\>%s\\</td\\>
-\\<td class=\\\"sr \\\"\\>:\\</td\\>
-\\<td class=\\\"sr ar\\\"\\>%d\\</td\\>
-\\<td class=\\\"srp \\\"\\>(%.f%%)\\</td\\>
-\\<td class=\\\"sr \\\"\\>|\\</td\\>
-
-\\<td class=\\\"sr ar\\\"\\>%d\\</td\\>
-\\<td class=\\\"srp \\\"\\>(%.f%%)\\</td\\>
-\\<td class=\\\"sr \\\"\\>|\\</td\\>
-
-\\<td class=\\\"sr ar\\\"\\>%d\\</td\\>
-\\<td class=\\\"srp\\\"\\>(%.0f%%)\\</td\\>
-\\<td class=\\\"sr \\\"\\>|\\</td\\>
-
-\\<td class=\\\"sr ar\\\"\\>%s\\</td\\>
-\\<td class=\\\"srp \\\"\\>(%.0f%%)\\</td\\>
-\\<td class=\\\"sr ar\\\"\\>%.1f\\</td\\>
-\\<td class=\\\"sr \\\"\\>|\\</td\\>
-
-\\<td class=\\\"sr ar\\\"\\>%s\\</td\\>
-\\<td class=\\\"srp \\\"\\>(%.0f%%)\\</td\\>
-\\<td class=\\\"sr ar \\\"\\>%.1f\\</td\\>
-\\<td class=\\\"sr \\\"\\>|\\</td\\>
-
-\\<td class=\\\"sr \\\"\\>1:%.2f\\</td\\>
-\\</tr\\>\n"
-
-            (if !showTotal then "Total" else (brand_to_string (brand_of_int 
i)))
-
-            (if !showTotal then sstats_all.brand_seen else
-                    stats_by_brand.(i).brand_seen)
-
-            (if !showTotal then 100.0 else (percent_of_ints
-            stats_by_brand.(i).brand_seen stats_all.brand_seen))
-
-            (if !showTotal then sstats_all.brand_filerequest else 
stats_by_brand.(i).brand_filerequest)
-
-            (if !showTotal then 100.0 else (percent_of_ints 
stats_by_brand.(i).brand_filerequest stats_all.brand_filerequest))
-
-            (if !showTotal then sstats_all.brand_banned else
-                    stats_by_brand.(i).brand_banned)
-
-            (max 0.0 (if !showTotal then (percent_of_ints 
sstats_all.brand_banned sstats_all.brand_seen)
-             else (percent_of_ints stats_by_brand.(i).brand_banned 
stats_all.brand_banned)))
-
-            (size_of_int64 (if !showTotal then sstats_all.brand_upload else
-                    stats_by_brand.(i).brand_upload))
-
-            (max 0.0 (if !showTotal then 100.0 else (percent_of_int64s
-            stats_by_brand.(i).brand_upload stats_all.brand_upload)))
-
-            (if !showTotal then ((Int64.to_float sstats_all.brand_upload) /. 
(float_of_int session_time) /. 1024.0)
-            else ((Int64.to_float stats_by_brand.(i).brand_upload) /.  
(float_of_int session_time) /. 1024.0))
-
-            (size_of_int64 (if !showTotal then sstats_all.brand_download else
-                    stats_by_brand.(i).brand_download))
-
-            (max 0.0 (if !showTotal then 100.0 else (percent_of_int64s
-            stats_by_brand.(i).brand_download stats_all.brand_download)))
-
-            (if !showTotal then ((Int64.to_float sstats_all.brand_download) /. 
(float_of_int session_time) /. 1024.0)
-            else ((Int64.to_float stats_by_brand.(i).brand_download) /.  
(float_of_int session_time) /. 1024.0))
-
-            (if !showTotal then
-             (if sstats_all.brand_upload = Int64.zero then 0.0 else
-                 ( (Int64.to_float sstats_all.brand_download) /.  
(Int64.to_float sstats_all.brand_upload) ))
-            else
-             (if stats_by_brand.(i).brand_upload = Int64.zero then 0.0 else
-                        ( (Int64.to_float stats_by_brand.(i).brand_download) /.
-             (Int64.to_float stats_by_brand.(i).brand_upload) )));
-        end
-      done;
-      Buffer.add_string buf "\\</table\\>\\</div\\>\n";
-
-      let gdays = (guptime () + uptime) / one_day in
-      let grem = maxi 1 ((guptime () + uptime) - gdays * one_day) in
-
-      let ghours = grem / one_hour in
-      let grem = grem - ghours * one_hour in
-      let gmins = grem / one_minute in
-
-      Buffer.add_string buf "\\<div class=\\\"cs\\\"\\>\n";
-      html_mods_table_one_row buf "csTable" "cs" [
-        ("", "srh",
-          Printf.sprintf "eDonkey - Total Uptime: %d days, %02dh:%02dm (= %d 
seconds)"
-            gdays ghours gmins (guptime() + uptime)); ];
-      Buffer.add_string buf "\\</div\\>\n";
-
-      stats_html_header buf;
-
-      showTotal := false;
-      for i=1 to brand_count do
-       if i=brand_count then showTotal := true;
-       if !showTotal || ( brand_of_int i != Brand_server && 
!!gstats_by_brand.(i).brand_seen > 0 ) then begin
-          incr counter;
-          Printf.bprintf buf "\\<tr class=\\\"%s\\\"\\>" (if (!counter mod 2 
== 0) then "dl-1" else "dl-2");
-          Printf.bprintf buf "
-\\<td class=\\\"sr\\\"\\>%s\\</td\\>
-\\<td class=\\\"sr \\\"\\>:\\</td\\>
-\\<td class=\\\"sr ar\\\"\\>%d\\</td\\>
-\\<td class=\\\"srp \\\"\\>(%.f%%)\\</td\\>
-\\<td class=\\\"sr \\\"\\>|\\</td\\>
-
-\\<td class=\\\"sr ar\\\"\\>%d\\</td\\>
-\\<td class=\\\"srp \\\"\\>(%.f%%)\\</td\\>
-\\<td class=\\\"sr \\\"\\>|\\</td\\>
-
-\\<td class=\\\"sr ar\\\"\\>%d\\</td\\>
-\\<td class=\\\"srp\\\"\\>(%.0f%%)\\</td\\>
-\\<td class=\\\"sr \\\"\\>|\\</td\\>
-
-\\<td class=\\\"sr ar\\\"\\>%s\\</td\\>
-\\<td class=\\\"srp \\\"\\>(%.0f%%)\\</td\\>
-\\<td class=\\\"sr ar\\\"\\>%.1f\\</td\\>
-\\<td class=\\\"sr \\\"\\>|\\</td\\>
-
-\\<td class=\\\"sr ar\\\"\\>%s\\</td\\>
-\\<td class=\\\"srp \\\"\\>(%.0f%%)\\</td\\>
-\\<td class=\\\"sr ar \\\"\\>%.1f\\</td\\>
-\\<td class=\\\"sr \\\"\\>|\\</td\\>
-
-\\<td class=\\\"sr \\\"\\>1:%.2f\\</td\\>
-
-\\</tr\\>\n"
-
-          (if !showTotal then "Total" else (brand_to_string (brand_of_int i)) )
-
-          (if !showTotal then gstats_all.brand_seen else 
!!gstats_by_brand.(i).brand_seen)
-
-          (if !showTotal then 100. else (percent_of_ints 
(!!gstats_by_brand.(i).brand_seen) gstats_all.brand_seen))
-
-          (if !showTotal then gstats_all.brand_filerequest else 
!!gstats_by_brand.(i).brand_filerequest)
-
-          (if !showTotal then 100. else (percent_of_ints 
(!!gstats_by_brand.(i).brand_filerequest) gstats_all.brand_filerequest))
-
-          (if !showTotal then gstats_all.brand_banned else 
!!gstats_by_brand.(i).brand_banned)
-
-          (max 0.0 (if !showTotal then (percent_of_ints gstats_all.brand_banned
-          gstats_all.brand_seen) else (percent_of_ints 
(!!gstats_by_brand.(i).brand_banned) gstats_all.brand_banned)))
-
-          (size_of_int64 (if !showTotal then gstats_all.brand_upload else 
!!gstats_by_brand.(i).brand_upload))
-
-          (if !showTotal then 100. else (max 0.0 (percent_of_int64s
-          (!!gstats_by_brand.(i).brand_upload) gstats_all.brand_upload)))
-
-          (if !showTotal then ((Int64.to_float gstats_all.brand_upload) /. 
(float_of_int (guptime() + uptime)) /. 1024.0)
-          else ((Int64.to_float (!!gstats_by_brand.(i).brand_upload)) /.  
(float_of_int (guptime() + uptime)) /. 1024.0))
-
-          (size_of_int64 (if !showTotal then gstats_all.brand_download else 
!!gstats_by_brand.(i).brand_download))
+  c.client_uploaded <- c.client_uploaded ++ v;
+  donkey_upload_counter := !donkey_upload_counter ++ v;
+  global_count_upload network v
 
-          (if !showTotal then 100. else (max 0.0 (percent_of_int64s
-          (!!gstats_by_brand.(i).brand_download) gstats_all.brand_download)))
+let print_stats_mods o style =
+  let buf = o.conn_buf in
 
-          (if !showTotal then ((Int64.to_float gstats_all.brand_download) /. 
(float_of_int (guptime() + uptime)) /. 1024.0)
-          else ((Int64.to_float (!!gstats_by_brand.(i).brand_download)) /.  
(float_of_int (guptime() + uptime)) /. 1024.0))
+  let u1 = BasicSocket.last_time () - !start_session in
+  let u2 = (guptime() + u1) in
 
-         (if !showTotal then (if gstats_all.brand_upload = Int64.zero then 0.0 
else
-                 ((Int64.to_float gstats_all.brand_download) /.  
(Int64.to_float gstats_all.brand_upload) )) else
-          (if !!gstats_by_brand.(i).brand_upload = Int64.zero then 0.0 else
-                       ( (Int64.to_float !!gstats_by_brand.(i).brand_download) 
/.
-            (Int64.to_float !!gstats_by_brand.(i).brand_upload) )))
+  let t1 = build_title "eMule Mods" "Session" u1 in
+  let t2 = build_title "eMule Mods" "Total" u2 in
+
+  let l = brand_mod_list in
+
+  match style with
+    | Old -> print_stats_old buf stats_mod_array l t1 u1
+    | _ ->
+      if !!emule_mods_count then begin
+
+        if use_html_mods o then begin
+          print_stats_html_mods buf stats_mod_array l t1 u1;
+          print_stats_html_mods buf !!gstats_mod_array l t2 u2
+        end else begin
+          print_stats_ascii buf stats_mod_array l t1 u1;
+          print_stats_ascii buf !!gstats_mod_array l t2 u2
         end
-      done;
-      Buffer.add_string buf "\\</table\\>\\</div\\>\n";
-    end
-  else
-    begin
-      Printf.bprintf buf "eDonkey - Session Uptime: %d days, %02dh:%02dm (= %d 
seconds)\n"
-        days hours mins session_time;
-      Printf.bprintf buf "Client Brand|    seen      |     Downloads      |    
  Uploads       |   Banned   |  Requests\n";
-      Printf.bprintf buf 
"------------+--------------+--------------------+--------------------+------------+--------------\n";
-
-      for i=1 to brand_count-1 do
-        if brand_of_int i != Brand_server && stats_by_brand.(i).brand_seen > 0 
then (* dont print server stats *)
-          let brandstr =
-            if brand_of_int i = Brand_mldonkey3 then
-              "trusted mld"
-            else
-              brand_to_string (brand_of_int i) in
-
-          Printf.bprintf buf "%-12s|%9d %3.f%%|%9.1f %5.1f %3.0f%%|%9.1f %5.1f 
%3.0f%%|%7d %3.0f%%|%9d %3.0f%%\n"
-            (brandstr)
-            stats_by_brand.(i).brand_seen
-              (percent_of_ints stats_by_brand.(i).brand_seen 
stats_all.brand_seen)
-            ((Int64.to_float stats_by_brand.(i).brand_download) /. 1024.0 /. 
1024.0)
-              ((Int64.to_float stats_by_brand.(i).brand_download) /. 
(float_of_int session_time) /. 1024.0)
-              (percent_of_int64s stats_by_brand.(i).brand_download 
stats_all.brand_download)
-            ((Int64.to_float stats_by_brand.(i).brand_upload) /. 1024.0 /. 
1024.0)
-              ((Int64.to_float stats_by_brand.(i).brand_upload) /. 
(float_of_int session_time) /. 1024.0)
-              (percent_of_int64s stats_by_brand.(i).brand_upload 
stats_all.brand_upload)
-            stats_by_brand.(i).brand_banned
-              (percent_of_ints stats_by_brand.(i).brand_banned 
stats_all.brand_banned)
-            stats_by_brand.(i).brand_filerequest
-              (percent_of_ints stats_by_brand.(i).brand_filerequest 
stats_all.brand_filerequest)
-      done;
-
-      Printf.bprintf buf 
"------------+--------------+--------------------+--------------------+------------+--------------\n";
-      Printf.bprintf buf "%-12s|%9d     |%9.1f %5.1f     |%9.1f %5.1f     |%7d 
    |%9d\n"
-        "Total"
-        sstats_all.brand_seen
-        ((Int64.to_float sstats_all.brand_download) /. 1024.0 /. 1024.0)
-          ((Int64.to_float sstats_all.brand_download) /. (float_of_int 
session_time) /. 1024.0)
-        ((Int64.to_float sstats_all.brand_upload) /. 1024.0 /. 1024.0)
-          ((Int64.to_float sstats_all.brand_upload) /. (float_of_int 
session_time) /. 1024.0)
-        sstats_all.brand_banned
-        sstats_all.brand_filerequest;
-
-      let gdays = (guptime () + uptime) / one_day in
-      let grem = maxi 1 ((guptime () + uptime) - gdays * one_day) in
-      let ghours = grem / one_hour in
-      let grem = grem - ghours * one_hour in
-      let gmins = grem / one_minute in
-      Printf.bprintf buf "\neDonkey - Total Uptime: %d days, %02dh:%02dm (= %d 
seconds)\n"
-        gdays ghours gmins (guptime() + uptime);
-      Printf.bprintf buf "Client Brand|    seen      |     Downloads      |    
  Uploads       |   Banned   |  Requests\n";
-      Printf.bprintf buf 
"------------+--------------+--------------------+--------------------+------------+--------------\n";
-
-      for i=1 to brand_count-1 do
-        if brand_of_int i != Brand_server && !!gstats_by_brand.(i).brand_seen 
> 0 then (* dont print server stats *)
-          let brandstr =
-            if brand_of_int i = Brand_mldonkey3 then
-              "trusted mld"
-            else
-              brand_to_string (brand_of_int i) in
-
-          Printf.bprintf buf "%-12s|%9d %3.f%%|%9.1f %5.1f %3.0f%%|%9.1f %5.1f 
%3.0f%%|%7d %3.0f%%|%9d %3.0f%%\n"
-            (brandstr)
-            !!gstats_by_brand.(i).brand_seen
-              (percent_of_ints !!gstats_by_brand.(i).brand_seen 
gstats_all.brand_seen)
-            ((Int64.to_float !!gstats_by_brand.(i).brand_download) /. 1024.0 
/. 1024.0)
-              ((Int64.to_float !!gstats_by_brand.(i).brand_download) /. 
(float_of_int (guptime() + uptime)) /. 1024.0)
-              (percent_of_int64s !!gstats_by_brand.(i).brand_download 
gstats_all.brand_download)
-            ((Int64.to_float !!gstats_by_brand.(i).brand_upload) /. 1024.0 /. 
1024.0)
-              ((Int64.to_float !!gstats_by_brand.(i).brand_upload) /. 
(float_of_int (guptime() + uptime)) /. 1024.0)
-              (percent_of_int64s !!gstats_by_brand.(i).brand_upload 
gstats_all.brand_upload)
-            !!gstats_by_brand.(i).brand_banned
-              (percent_of_ints !!gstats_by_brand.(i).brand_banned 
gstats_all.brand_banned)
-            !!gstats_by_brand.(i).brand_filerequest
-              (percent_of_ints !!gstats_by_brand.(i).brand_filerequest 
gstats_all.brand_filerequest)
-      done;
-
-      Printf.bprintf buf 
"------------+--------------+--------------------+--------------------+------------+--------------\n";
-      Printf.bprintf buf "%-12s|%9d     |%9.1f %5.1f     |%9.1f %5.1f     |%7d 
    |%9d\n"
-      "Total"
-      gstats_all.brand_seen
-      ((Int64.to_float gstats_all.brand_download) /. 1024.0 /. 1024.0)
-        ((Int64.to_float gstats_all.brand_download) /. (float_of_int 
(guptime() + uptime)) /. 1024.0)
-      ((Int64.to_float gstats_all.brand_upload) /. 1024.0 /. 1024.0)
-        ((Int64.to_float gstats_all.brand_upload) /. (float_of_int (guptime() 
+ uptime)) /. 1024.0)
-      gstats_all.brand_banned
-      gstats_all.brand_filerequest;
-
-    end
-
-let new_print_mod_stats buf o =
-  let one_minute = 60 in
-  let one_hour = 3600 in
-  let one_day = 86400 in
-  let session_time = last_time () - !start_session in
-  let uptime = last_time () - start_time in
-  let days = session_time / one_day in
-  let rem = maxi 1 (session_time - days * one_day) in
-
-  let hours = rem / one_hour in
-  let rem = rem - hours * one_hour in
-  let mins = rem / one_minute in
-
-  if !!emule_mods_count then
-
-  if use_html_mods o then
-    begin
-      Buffer.add_string buf "\\<div class=\\\"cs\\\"\\>\n";
-      html_mods_table_one_row buf "csTable" "cs" [
-        ("", "srh",
-          Printf.sprintf "eMule Mods - Session Uptime: %d days, %02dh:%02dm (= 
%d seconds)"
-            days hours mins session_time); ];
-      Buffer.add_string buf "\\</div\\>\n";
-      stats_html_header buf;
-
-      let counter = ref 0 in
-      let showTotal = ref false in
-
-      for i=1 to brand_mod_count do
-        if i=brand_mod_count then showTotal := true;
-        if !showTotal || ( !!emule_mods_showall || 
stats_by_brand_mod.(i).brand_mod_seen > 0 ) then begin
-          incr counter;
-          Printf.bprintf buf "\\<tr class=\\\"%s\\\"\\>" (if (!counter mod 2 
== 0) then "dl-1" else "dl-2");
-          Printf.bprintf buf "
-\\<td class=\\\"sr\\\"\\>%s\\</td\\>
-\\<td class=\\\"sr \\\"\\>:\\</td\\>
-\\<td class=\\\"sr ar\\\"\\>%d\\</td\\>
-\\<td class=\\\"srp \\\"\\>(%.f%%)\\</td\\>
-\\<td class=\\\"sr \\\"\\>|\\</td\\>
-
-\\<td class=\\\"sr ar\\\"\\>%d\\</td\\>
-\\<td class=\\\"srp \\\"\\>(%.f%%)\\</td\\>
-\\<td class=\\\"sr \\\"\\>|\\</td\\>
-
-\\<td class=\\\"sr ar\\\"\\>%d\\</td\\>
-\\<td class=\\\"srp\\\"\\>(%.0f%%)\\</td\\>
-\\<td class=\\\"sr \\\"\\>|\\</td\\>
-
-\\<td class=\\\"sr ar\\\"\\>%s\\</td\\>
-\\<td class=\\\"srp \\\"\\>(%.0f%%)\\</td\\>
-\\<td class=\\\"sr ar\\\"\\>%.1f\\</td\\>
-\\<td class=\\\"sr \\\"\\>|\\</td\\>
-
-\\<td class=\\\"sr ar\\\"\\>%s\\</td\\>
-\\<td class=\\\"srp \\\"\\>(%.0f%%)\\</td\\>
-\\<td class=\\\"sr ar \\\"\\>%.1f\\</td\\>
-\\<td class=\\\"sr \\\"\\>|\\</td\\>
-
-\\<td class=\\\"sr \\\"\\>1:%.2f\\</td\\>
-\\</tr\\>\n"
-
-            (if !showTotal then "Total" else (brand_mod_to_string 
(brand_mod_of_int i)))
-
-            (if !showTotal then mod_stats_all.brand_mod_seen else
-                    stats_by_brand_mod.(i).brand_mod_seen)
-
-            (if !showTotal then 100.0 else (percent_of_ints
-            stats_by_brand_mod.(i).brand_mod_seen 
mod_stats_all.brand_mod_seen))
-
-            (if !showTotal then mod_stats_all.brand_mod_filerequest else 
stats_by_brand_mod.(i).brand_mod_filerequest)
-
-            (if !showTotal then 100.0 else (percent_of_ints 
stats_by_brand_mod.(i).brand_mod_filerequest 
mod_stats_all.brand_mod_filerequest))
-
-            (if !showTotal then mod_stats_all.brand_mod_banned else
-                    stats_by_brand_mod.(i).brand_mod_banned)
-
-            (max 0.0 (if !showTotal then (percent_of_ints 
mod_stats_all.brand_mod_banned mod_stats_all.brand_mod_seen)
-             else (percent_of_ints stats_by_brand_mod.(i).brand_mod_banned 
mod_stats_all.brand_mod_banned)))
-
-            (size_of_int64 (if !showTotal then mod_stats_all.brand_mod_upload 
else
-                    stats_by_brand_mod.(i).brand_mod_upload))
-
-            (max 0.0 (if !showTotal then 100.0 else (percent_of_int64s
-            stats_by_brand_mod.(i).brand_mod_upload 
mod_stats_all.brand_mod_upload)))
-
-            (if !showTotal then ((Int64.to_float 
mod_stats_all.brand_mod_upload) /. (float_of_int session_time) /. 1024.0)
-            else ((Int64.to_float stats_by_brand_mod.(i).brand_mod_upload) /.  
(float_of_int session_time) /. 1024.0))
-
-            (size_of_int64 (if !showTotal then 
mod_stats_all.brand_mod_download else
-                    stats_by_brand_mod.(i).brand_mod_download))
-
-            (max 0.0 (if !showTotal then 100.0 else (percent_of_int64s
-            stats_by_brand_mod.(i).brand_mod_download 
mod_stats_all.brand_mod_download)))
-
-            (if !showTotal then ((Int64.to_float 
mod_stats_all.brand_mod_download) /. (float_of_int session_time) /. 1024.0)
-            else ((Int64.to_float stats_by_brand_mod.(i).brand_mod_download) 
/.  (float_of_int session_time) /. 1024.0))
-
-            (if !showTotal then
-             (if mod_stats_all.brand_mod_upload = Int64.zero then 0.0 else
-                 ( (Int64.to_float mod_stats_all.brand_mod_download) /.  
(Int64.to_float mod_stats_all.brand_mod_upload) ))
-            else
-             (if stats_by_brand_mod.(i).brand_mod_upload = Int64.zero then 0.0 
else
-                        ( (Int64.to_float 
stats_by_brand_mod.(i).brand_mod_download) /.
-             (Int64.to_float stats_by_brand_mod.(i).brand_mod_upload) )));
-        end
-      done;
-      Buffer.add_string buf "\\</table\\>\\</div\\>\n";
-
-      let gstats_all =
-        let stat = {
-            brand_mod_seen = 0;
-            brand_mod_banned = 0;
-            brand_mod_filerequest = 0;
-            brand_mod_download = Int64.zero;
-            brand_mod_upload = Int64.zero
-          }
-        in stat in
-
-      for i=0 to brand_mod_count-1 do
-
-        gstats_all.brand_mod_seen <- gstats_all.brand_mod_seen + 
!!gstats_by_brand_mod.(i).brand_mod_seen;
-        gstats_all.brand_mod_filerequest <- gstats_all.brand_mod_filerequest + 
!!gstats_by_brand_mod.(i).brand_mod_filerequest;
-        gstats_all.brand_mod_download <- gstats_all.brand_mod_download ++ 
!!gstats_by_brand_mod.(i).brand_mod_download ;
-        gstats_all.brand_mod_upload <- gstats_all.brand_mod_upload ++ 
!!gstats_by_brand_mod.(i).brand_mod_upload;
-        gstats_all.brand_mod_banned <- gstats_all.brand_mod_banned + 
!!gstats_by_brand_mod.(i).brand_mod_banned;
-
-      done;
-      let gdays = (guptime () + uptime) / one_day in
-      let grem = maxi 1 ((guptime () + uptime) - gdays * one_day) in
-
-      let ghours = grem / one_hour in
-      let grem = grem - ghours * one_hour in
-      let gmins = grem / one_minute in
-
-      Buffer.add_string buf "\\<div class=\\\"cs\\\"\\>\n";
-      html_mods_table_one_row buf "csTable" "cs" [
-        ("", "srh",
-          Printf.sprintf "eMule Mods - Total Uptime: %d days, %02dh:%02dm (= 
%d seconds)"
-            gdays ghours gmins (guptime() + uptime)); ];
-      Buffer.add_string buf "\\</div\\>\n";
+      
+      end else 
+      begin
 
-      stats_html_header buf;
-
-      showTotal := false;
-      for i=1 to brand_mod_count do
-       if i=brand_mod_count then showTotal := true;
-       if !showTotal || ( !!emule_mods_showall || 
!!gstats_by_brand_mod.(i).brand_mod_seen > 0 ) then begin
-          incr counter;
-          Printf.bprintf buf "\\<tr class=\\\"%s\\\"\\>" (if (!counter mod 2 
== 0) then "dl-1" else "dl-2");
-          Printf.bprintf buf "
-\\<td class=\\\"sr\\\"\\>%s\\</td\\>
-\\<td class=\\\"sr \\\"\\>:\\</td\\>
-\\<td class=\\\"sr ar\\\"\\>%d\\</td\\>
-\\<td class=\\\"srp \\\"\\>(%.f%%)\\</td\\>
-\\<td class=\\\"sr \\\"\\>|\\</td\\>
-
-\\<td class=\\\"sr ar\\\"\\>%d\\</td\\>
-\\<td class=\\\"srp \\\"\\>(%.f%%)\\</td\\>
-\\<td class=\\\"sr \\\"\\>|\\</td\\>
-
-\\<td class=\\\"sr ar\\\"\\>%d\\</td\\>
-\\<td class=\\\"srp\\\"\\>(%.0f%%)\\</td\\>
-\\<td class=\\\"sr \\\"\\>|\\</td\\>
-
-\\<td class=\\\"sr ar\\\"\\>%s\\</td\\>
-\\<td class=\\\"srp \\\"\\>(%.0f%%)\\</td\\>
-\\<td class=\\\"sr ar\\\"\\>%.1f\\</td\\>
-\\<td class=\\\"sr \\\"\\>|\\</td\\>
-
-\\<td class=\\\"sr ar\\\"\\>%s\\</td\\>
-\\<td class=\\\"srp \\\"\\>(%.0f%%)\\</td\\>
-\\<td class=\\\"sr ar \\\"\\>%.1f\\</td\\>
-\\<td class=\\\"sr \\\"\\>|\\</td\\>
-
-\\<td class=\\\"sr \\\"\\>1:%.2f\\</td\\>
-
-\\</tr\\>\n"
-
-          (if !showTotal then "Total" else (brand_mod_to_string 
(brand_mod_of_int i)) )
-
-          (if !showTotal then gstats_all.brand_mod_seen else 
!!gstats_by_brand_mod.(i).brand_mod_seen)
-
-          (if !showTotal then 100. else (percent_of_ints 
(!!gstats_by_brand_mod.(i).brand_mod_seen) gstats_all.brand_mod_seen))
-
-          (if !showTotal then gstats_all.brand_mod_filerequest else 
!!gstats_by_brand_mod.(i).brand_mod_filerequest)
-
-          (if !showTotal then 100. else (percent_of_ints 
(!!gstats_by_brand_mod.(i).brand_mod_filerequest) 
gstats_all.brand_mod_filerequest))
-
-          (if !showTotal then gstats_all.brand_mod_banned else 
!!gstats_by_brand_mod.(i).brand_mod_banned)
-
-          (max 0.0 (if !showTotal then (percent_of_ints 
gstats_all.brand_mod_banned
-          gstats_all.brand_mod_seen) else (percent_of_ints 
(!!gstats_by_brand_mod.(i).brand_mod_banned) gstats_all.brand_mod_banned)))
+        if use_html_mods o then begin
+          Printf.bprintf buf "\\<div class=\\\"cs\\\"\\>";
+          html_mods_table_header buf "emodsTable" "cs" [];
+          Printf.bprintf buf "\\<tr class=\\\"dl-1\\\"\\>";
+          html_mods_td buf [
+              ("", "sr", "eMule mods statistics are disabled, to activate set 
emule_mods_count true in the \\<a href=\\\"/submit?q=voo+8\\\"\\>misc 
options\\</a\\> tab." ); 
+          ];
+          Printf.bprintf buf "\\</tr\\>\\</table\\>\\</div\\>\\</div\\>\n"
+        end else
+          Printf.bprintf buf "eMule mods statistics are disabled, to activate 
set emule_mods_count true \n"
+
+      end
+
+let print_stats o style mods =
+  let buf = o.conn_buf in
+
+  let u1 = BasicSocket.last_time () - !start_session in
+  let u2 = (guptime() + u1) in
+
+  let t1 = build_title "eDonkey" "Session" u1 in
+  let t2 = build_title "eDonkey" "Total" u2 in
+
+  let l = brand_list in
+
+  if mods then print_stats_mods o style else
+    match style with
+    | Old -> print_stats_old buf stats_array l t1 u1
+    | _ ->
+          if use_html_mods o then begin
+            print_stats_html_mods buf stats_array l t1 u1;
+            print_stats_html_mods buf !!gstats_array l t2 u2
+          end else begin
+            print_stats_ascii buf stats_array l t1 u1;
+            print_stats_ascii buf !!gstats_array l t2 u2
+          end
 
-          (size_of_int64 (if !showTotal then gstats_all.brand_mod_upload else 
!!gstats_by_brand_mod.(i).brand_mod_upload))
+let _ =
+  network.op_network_display_stats <- (fun buf o -> print_stats o New false);
 
-          (if !showTotal then 100. else (max 0.0 (percent_of_int64s
-          (!!gstats_by_brand_mod.(i).brand_mod_upload) 
gstats_all.brand_mod_upload)))
+  register_commands
+    [
+    "client_stats", "Network/Donkey",Arg_none (fun o ->
+        print_stats o Old false;
+        ""
+    ), ":\t\t\t\tshow breakdown of download/upload by clients brand";
 
-          (if !showTotal then ((Int64.to_float gstats_all.brand_mod_upload) /. 
(float_of_int (guptime() + uptime)) /. 1024.0)
-          else ((Int64.to_float (!!gstats_by_brand_mod.(i).brand_mod_upload)) 
/.  (float_of_int (guptime() + uptime)) /. 1024.0))
+    "cs", "Network/Donkey",Arg_none (fun o ->
+        print_stats o New false;
+        ""
+    ), ":\t\t\t\t\tshow table of download/upload by ED2K clients brand";
 
-          (size_of_int64 (if !showTotal then gstats_all.brand_mod_download 
else !!gstats_by_brand_mod.(i).brand_mod_download))
+    "csm", "Network/Donkey",Arg_none (fun o ->
+        print_stats o New true;
+        ""
+    ), ":\t\t\t\t\tshow table of download/upload by eMule MODs";
+    "reset_stats", "Network/Donkey",Arg_none (fun o ->
 
-          (if !showTotal then 100. else (max 0.0 (percent_of_int64s
-          (!!gstats_by_brand_mod.(i).brand_mod_download) 
gstats_all.brand_mod_download)))
+       Array.iteri  (fun x _ ->
+         stats_array.(x).brand_seen <- 0;
+         stats_array.(x).brand_banned <- 0;
+         stats_array.(x).brand_filerequest <- 0;
+         stats_array.(x).brand_download <- 0L;
+         stats_array.(x).brand_upload <- 0L;
+       ) stats_array;
+
+       Array.iteri (fun x _ ->
+         stats_mod_array.(x).brand_seen <- 0;
+         stats_mod_array.(x).brand_banned <- 0;
+         stats_mod_array.(x).brand_filerequest <- 0;
+         stats_mod_array.(x).brand_download <- Int64.zero;
+         stats_mod_array.(x).brand_upload <- Int64.zero
+       ) stats_mod_array;
 
-          (if !showTotal then ((Int64.to_float gstats_all.brand_mod_download) 
/. (float_of_int (guptime() + uptime)) /. 1024.0)
-          else ((Int64.to_float 
(!!gstats_by_brand_mod.(i).brand_mod_download)) /.  (float_of_int (guptime() + 
uptime)) /. 1024.0))
-
-         (if !showTotal then (if gstats_all.brand_mod_upload = Int64.zero then 
0.0 else
-                 ((Int64.to_float gstats_all.brand_mod_download) /.  
(Int64.to_float gstats_all.brand_mod_upload) )) else
-          (if !!gstats_by_brand_mod.(i).brand_mod_upload = Int64.zero then 0.0 
else
-                       ( (Int64.to_float 
!!gstats_by_brand_mod.(i).brand_mod_download) /.
-            (Int64.to_float !!gstats_by_brand_mod.(i).brand_mod_upload) )))
-        end
-      done;
-      Buffer.add_string buf "\\</table\\>\\</div\\>\n";
-    end
-  else
-    begin
-      Printf.bprintf buf "eMule Mods - Uptime: %d days, %02dh:%02dm (= %d 
seconds)\n"
-        days hours mins session_time;
-      Printf.bprintf buf "         MOD| seen      |  Downloads       |  
Uploads         |  Banned\n";
-      Printf.bprintf buf 
"------------+-----------+------------------+------------------+----------\n";
-      Printf.bprintf buf "%-12s|%6d     |%7.1f %5.1f     |%7.1f %5.1f     |%5d 
%3.0f%%\n"
-
-        "Total"
-        mod_stats_all.brand_mod_seen
-        ((Int64.to_float mod_stats_all.brand_mod_download) /. 1024.0 /. 1024.0)
-      ((Int64.to_float mod_stats_all.brand_mod_download) /. (float_of_int 
session_time) /. 1024.0)
-      ((Int64.to_float mod_stats_all.brand_mod_upload) /. 1024.0 /. 1024.0)
-      ((Int64.to_float mod_stats_all.brand_mod_upload) /. (float_of_int 
session_time) /. 1024.0)
-      mod_stats_all.brand_mod_banned
-        (percent_of_ints mod_stats_all.brand_mod_banned 
mod_stats_all.brand_mod_seen);
-
-      for i=1 to brand_mod_count-1 do
-          let brandstr =
-              brand_mod_to_string (brand_mod_of_int i) in
-
-          Printf.bprintf buf "%-12s|%6d %3.f%%|%7.1f %5.1f %3.0f%%|%7.1f %5.1f 
%3.0f%%|%5d %3.0f%%\n"
-            (brandstr)
-          stats_by_brand_mod.(i).brand_mod_seen
-            (percent_of_ints stats_by_brand_mod.(i).brand_mod_seen 
mod_stats_all.brand_mod_seen)
-          ((Int64.to_float stats_by_brand_mod.(i).brand_mod_download) /. 
1024.0 /. 1024.0)
-          ((Int64.to_float stats_by_brand_mod.(i).brand_mod_download) /. 
(float_of_int session_time) /. 1024.0)
-          (percent_of_int64s stats_by_brand_mod.(i).brand_mod_download 
mod_stats_all.brand_mod_download)
-          ((Int64.to_float stats_by_brand_mod.(i).brand_mod_upload) /. 1024.0 
/. 1024.0)
-          ((Int64.to_float stats_by_brand_mod.(i).brand_mod_upload) /. 
(float_of_int session_time) /. 1024.0)
-          (percent_of_int64s stats_by_brand_mod.(i).brand_mod_upload 
mod_stats_all.brand_mod_upload)
-          stats_by_brand_mod.(i).brand_mod_banned
-            (percent_of_ints stats_by_brand_mod.(i).brand_mod_banned 
mod_stats_all.brand_mod_banned)
-      done
-    end
-  else
-      if o.conn_output = HTML then
-        begin
-          Printf.bprintf buf "\\<div class=\\\"cs\\\"\\>";
-            html_mods_table_header buf "emodsTable" "cs" [];
-            Printf.bprintf buf "\\<tr class=\\\"dl-1\\\"\\>";
-            html_mods_td buf [
-              ("", "sr",
-                "eMule mods statistics are disabled, to activate set 
emule_mods_count true in the \\<a href=\\\"/submit?q=voo+8\\\"\\>misc 
options\\</a\\> tab." ); ];
-            Printf.bprintf buf "\\</tr\\>\\</table\\>\\</div\\>\\</div\\>\n"
-        end
-      else
-        Printf.bprintf buf "eMule mods statistics are disabled, to activate 
set emule_mods_count true \n"
-
-let append_out name =
-  open_out_gen [Open_wronly; Open_creat; Open_append; Open_text] 0o666 name
+       start_session := BasicSocket.last_time ();
 
+       "done"
+    ), ":\t\t\t\t\treset session statistics";
+  ]
 
-  (*
+(* 
 let save_download_history file =
 
   let buf = Buffer.create 100 in
@@ -1333,64 +274,3 @@
   output_string oc (Buffer.contents buf);
   close_out oc
 *)
-
-let _ =
-  network.op_network_display_stats <- (fun buf o -> new_print_stats buf o);
-
-  register_commands
-    [
-    "client_stats", "Network/Donkey",Arg_none (fun o ->
-        let buf = o.conn_buf in
-        print_stats buf;
-        ""
-    ), ":\t\t\t\tshow breakdown of download/upload by clients brand";
-
-    "cs", "Network/Donkey",Arg_none (fun o ->
-        let buf = o.conn_buf in
-        new_print_stats buf o;
-        ""
-    ), ":\t\t\t\t\tshow table of download/upload by ED2K clients brand";
-
-    "csm", "Network/Donkey",Arg_none (fun o ->
-        let buf = o.conn_buf in
-        new_print_mod_stats buf o;
-        ""
-    ), ":\t\t\t\t\tshow table of download/upload by eMule MODs";
-    "reset_stats", "Network/Donkey",Arg_none (
-      fun o ->
-
-       Array.iteri  (
-        fun x _ ->
-          stats_by_brand.(x).brand_seen <- 0;
-          stats_by_brand.(x).brand_banned <- 0;
-          stats_by_brand.(x).brand_filerequest <- 0;
-          stats_by_brand.(x).brand_download <- 0L;
-          stats_by_brand.(x).brand_upload <- 0L;
-       ) stats_by_brand;
-
-       Array.iteri (
-        fun x _ ->
-          stats_by_brand_mod.(x).brand_mod_seen <- 0;
-          stats_by_brand_mod.(x).brand_mod_banned <- 0;
-          stats_by_brand_mod.(x).brand_mod_filerequest <- 0;
-          stats_by_brand_mod.(x).brand_mod_download <- Int64.zero;
-          stats_by_brand_mod.(x).brand_mod_upload <- Int64.zero
-       ) stats_by_brand_mod;
-
-       stats_all.brand_seen <- 0;
-       stats_all.brand_banned <- 0;
-       stats_all.brand_filerequest <- 0;
-       stats_all.brand_download <- 0L;
-       stats_all.brand_upload <- 0L;
-
-       mod_stats_all.brand_mod_seen <- 0;
-       mod_stats_all.brand_mod_banned <- 0;
-       mod_stats_all.brand_mod_filerequest <- 0;
-       mod_stats_all.brand_mod_download <- Int64.zero;
-       mod_stats_all.brand_mod_upload <- Int64.zero;
-
-       start_session := last_time ();
-
-       "done"
-    ), ":\t\t\t\t\treset session statistics";
-  ]




reply via email to

[Prev in Thread] Current Thread [Next in Thread]