Yepp, filter might be the best sollution. Its btw much faster than loop every line.
Give this a try:
Code:
alias info.mirc {
  ; ----- REMOTE STATS STUFF -----
  ; count remotes (incl. events, aliases, menus, dialogs)
  var %r.nr = 1, %r.size = 0, %r.lines = 0, %r.aliases.glob = 0, %r.aliases.loc = 0
  var %events = 0, %menus = 0, %dialogs = 0
  while ($script(%r.nr)) {
    var %file = $+(",$shortfn($ifmatch),")
    inc %r.size $file(%file).size | inc %r.lines $lines(%file)
    filter -gff %file nul ^(?i)alias (?!-l) | inc %r.aliases.glob $filtered
    filter -gff %file nul ^(?i)alias -l\s | inc %r.aliases.loc $filtered
    filter -gff %file nul ^(?i)(on|ctcp|raw) .+:.+ | inc %events $filtered
    filter -gff %file nul ^(?i)menu .+{ | inc %menus $filtered
    filter -gff %file nul ^(?i)dialog .+{ | inc %dialogs $filtered
    inc %r.nr
  }
  var %r.aliases.tot = $calc(%r.aliases.glob  + %r.aliases.loc), %r.av.lines = $round($calc(%r.lines / $script(0)),0)

  ; ----- BELOW: SOME OTHER STATS STUFF :) -----
  ; count aliases
  var %a.nr = 1, %a.size = 0, %a.lines = 0
  while ($alias(%a.nr)) {
    var %file = $+(",$shortfn($ifmatch),")
    inc %a.size $file(%file).size
    inc %a.lines $lines(%file)
    inc %a.nr
  }
  var %a.av.lines = $round($calc(%a.lines / $alias(0)),0)

  ; count timers
  var %t.nr = 1, %loops
  while ($timer(%t.nr)) {
    if ($timer($ifmatch).reps == 0) { inc %loops }
    inc %t.nr
  }

  ; count groups
  var %g.nr = 1, %actgroups
  while ($group(%g.nr).status) {
    if ($ifmatch == on) { inc %actgroups }
    inc %g.nr
  }

  ; count hashtables
  var %h.nr = 1, %tables = 0, %items = 0
  while ($hget(%h.nr)) { inc %tables | inc %items $hget($v1,0).item | inc %h.nr }
  var %h.av.items = $round($calc(%items / %tables),0)

  ; ----- example output -----
  ECHO -a Remote-Files: $script(0) Lines: %r.lines $chr(91) $+ av.: %r.av.lines $+ $chr(93) Size: $bytes(%r.size).suf $&
    Aliases(Remote): %r.aliases.tot $iif((%r.aliases.tot > 0),$chr(91) $+ global: %r.aliases.glob $+ $chr(44) local: %r.aliases.loc $+ $chr(93))
  ECHO -a Alias-Files: $alias(0) Lines: %a.lines $chr(91) $+ av.: %a.av.lines $+ $chr(93) Size: $bytes(%a.size).suf
  ECHO -a Menus: %menus ### Dialogs: %dialogs ### Events: %events ### Timer: $timer(0) $iif(($timer(1)),$chr(91) $+ Loops: %loops $+ $chr(93)) 
  ECHO -a Groups: $group(0) $iif(($group(1)),$chr(91) $+ active: %actgroups $+ $chr(93)) $&
    ### Hashtables: %tables $iif((%tables > 0),$chr(91) $+ Items: %items $+ $chr(44) av.: %h.av.items $+ $chr(93))
}


EDIT: arf, qwerty had been faster than me regarding "nul", 'think he filtered his exlanatory code directly into the forum wink

Last edited by Horstl; 13/05/07 02:57 PM.