html/upgradeinfo.pl


   1 # upgradeinfo - irssi 0.8.6.CVS 
   2 #
   3 #    $Id: upgradeinfo.pl,v 1.7 2003/02/04 02:29:57 peder Exp $
   4 #
   5 # Copyright (C) 2002, 2003 by Peder Stray <peder@ninja.no>
   6 #
   7 
   8 use strict;
   9 use Irssi 20021204.1123;
  10 use Irssi::TextUI;
  11 
  12 # ======[ Script Header ]===============================================
  13 
  14 use vars qw{$VERSION %IRSSI};
  15 ($VERSION) = '$Revision: 1.7 $' =~ / (\d+\.\d+) /;
  16 %IRSSI = (
  17           name        => 'upgradeinfo',
  18           authors     => 'Peder Stray',
  19           contact     => 'peder@ninja.no',
  20           url         => 'http://ninja.no/irssi/upgradeinfo.pl',
  21           license     => 'GPL',
  22           description => 'Statusbaritem notifying you about updated binary',
  23 	  sbitems     => 'upgradeinfo',
  24          );
  25 
  26 # ======[ Variables ]===================================================
  27 
  28 my($load_time) = 0;		# modification time of binary at load
  29 my($file_time) = 0;		# modification time of binary file
  30 my($timer) = 0;			# ID of current timer
  31 
  32 # ======[ Commands ]====================================================
  33 
  34 # --------[ UPGRADEINFO ]-----------------------------------------------
  35 
  36 sub cmd_upgradeinfo {
  37     my($param,$serv,$chan) = @_;
  38 
  39     print CLIENTCRAP sprintf ">> load: %s", scalar localtime $load_time;
  40     print CLIENTCRAP sprintf ">> file: %s", scalar localtime $file_time;
  41 
  42 }
  43 
  44 # ======[ Signal Hooks ]================================================
  45 
  46 # --------[ sig_setup_changed ]-----------------------------------------
  47 
  48 sub sig_setup_changed {
  49     my($interval) = Irssi::settings_get_int('upgrade_check_interval');
  50 
  51     Irssi::timeout_remove($timer);
  52 
  53     if ($interval < 1) {
  54 	$interval = 0;
  55     }
  56 
  57     return unless $interval;
  58 
  59     $interval *= 1000;
  60     $timer = Irssi::timeout_add($interval, 'ui_check' , undef);
  61 }
  62 
  63 # ======[ Statusbar Hooks ]=============================================
  64 
  65 # --------[ sb_upgradeinfo ]--------------------------------------------
  66 
  67 sub sb_upgradeinfo {
  68     my($item, $get_size_only) = @_;
  69     my $format = "";
  70     my($time);
  71     my($timefmt) = Irssi::settings_get_str('upgrade_time_format');
  72     
  73     $time = $file_time - $load_time;
  74     
  75     if ($time) {
  76 	$time = sprintf($timefmt, 
  77 			$time/60/60/24,
  78 			$time/60/60%24,
  79 			$time/60%60,
  80 			$time%60
  81 		       );
  82 	$time =~ s/^(0+\D+)+//;
  83 	$format = "{sb %r$time%n}";
  84     }
  85     
  86     $item->default_handler($get_size_only, $format, undef, 1);
  87 }
  88 
  89 # ======[ Timers ]======================================================
  90 
  91 # --------[ ui_check ]--------------------------------------------------
  92 
  93 sub ui_check {
  94     $file_time = (stat Irssi::get_irssi_binary)[9];
  95 
  96     Irssi::statusbar_items_redraw('upgradeinfo');
  97 }
  98 
  99 # ======[ Setup ]=======================================================
 100 
 101 # --------[ Register commands ]-----------------------------------------
 102 
 103 Irssi::command_bind('upgradeinfo', 'cmd_upgradeinfo');
 104 
 105 # --------[ Register formats ]------------------------------------------
 106 
 107 # --------[ Register settings ]-----------------------------------------
 108 
 109 Irssi::settings_add_int('upgrade', 'upgrade_check_interval', 300);
 110 Irssi::settings_add_str('upgrade', 'upgrade_time_format', '%d+%02d:%02d');
 111 
 112 # --------[ Register signals ]------------------------------------------
 113 
 114 Irssi::signal_add('setup changed', 'sig_setup_changed');
 115 
 116 # --------[ Register statusbar items ]----------------------------------
 117 
 118 Irssi::statusbar_item_register('upgradeinfo', undef, 'sb_upgradeinfo');
 119 
 120 # --------[ Other setup ]-----------------------------------------------
 121 
 122 $load_time = (stat Irssi::get_irssi_binary)[9];
 123 $file_time = $load_time;
 124 
 125 sig_setup_changed;
 126 
 127 # ======[ END ]=========================================================
 128 
 129 # Local Variables:
 130 # header-initial-hide: t
 131 # mode: header-minor
 132 # end: