head	1.1;
branch	1.1.1;
access;
symbols
	netbsd-11-0-RC4:1.1.1.1
	netbsd-11-0-RC3:1.1.1.1
	netbsd-11-0-RC2:1.1.1.1
	netbsd-11-0-RC1:1.1.1.1
	perseant-exfatfs-base-20250801:1.1.1.1
	netbsd-11:1.1.1.1.0.50
	netbsd-11-base:1.1.1.1
	netbsd-10-1-RELEASE:1.1.1.1
	perseant-exfatfs-base-20240630:1.1.1.1
	perseant-exfatfs:1.1.1.1.0.48
	perseant-exfatfs-base:1.1.1.1
	netbsd-8-3-RELEASE:1.1.1.1
	netbsd-9-4-RELEASE:1.1.1.1
	netbsd-10-0-RELEASE:1.1.1.1
	netbsd-10-0-RC6:1.1.1.1
	netbsd-10-0-RC5:1.1.1.1
	netbsd-10-0-RC4:1.1.1.1
	netbsd-10-0-RC3:1.1.1.1
	netbsd-10-0-RC2:1.1.1.1
	netbsd-10-0-RC1:1.1.1.1
	netbsd-10:1.1.1.1.0.46
	netbsd-10-base:1.1.1.1
	netbsd-9-3-RELEASE:1.1.1.1
	cjep_sun2x-base1:1.1.1.1
	cjep_sun2x:1.1.1.1.0.44
	cjep_sun2x-base:1.1.1.1
	cjep_staticlib_x-base1:1.1.1.1
	netbsd-9-2-RELEASE:1.1.1.1
	cjep_staticlib_x:1.1.1.1.0.42
	cjep_staticlib_x-base:1.1.1.1
	netbsd-9-1-RELEASE:1.1.1.1
	phil-wifi-20200421:1.1.1.1
	phil-wifi-20200411:1.1.1.1
	is-mlppp:1.1.1.1.0.40
	is-mlppp-base:1.1.1.1
	phil-wifi-20200406:1.1.1.1
	netbsd-8-2-RELEASE:1.1.1.1
	netbsd-9-0-RELEASE:1.1.1.1
	netbsd-9-0-RC2:1.1.1.1
	netbsd-9-0-RC1:1.1.1.1
	phil-wifi-20191119:1.1.1.1
	netbsd-9:1.1.1.1.0.38
	netbsd-9-base:1.1.1.1
	phil-wifi-20190609:1.1.1.1
	netbsd-8-1-RELEASE:1.1.1.1
	netbsd-8-1-RC1:1.1.1.1
	pgoyette-compat-merge-20190127:1.1.1.1
	pgoyette-compat-20190127:1.1.1.1
	pgoyette-compat-20190118:1.1.1.1
	pgoyette-compat-1226:1.1.1.1
	pgoyette-compat-1126:1.1.1.1
	pgoyette-compat-1020:1.1.1.1
	pgoyette-compat-0930:1.1.1.1
	pgoyette-compat-0906:1.1.1.1
	netbsd-7-2-RELEASE:1.1.1.1
	pgoyette-compat-0728:1.1.1.1
	netbsd-8-0-RELEASE:1.1.1.1
	phil-wifi:1.1.1.1.0.36
	phil-wifi-base:1.1.1.1
	pgoyette-compat-0625:1.1.1.1
	netbsd-8-0-RC2:1.1.1.1
	pgoyette-compat-0521:1.1.1.1
	pgoyette-compat-0502:1.1.1.1
	pgoyette-compat-0422:1.1.1.1
	netbsd-8-0-RC1:1.1.1.1
	pgoyette-compat-0415:1.1.1.1
	pgoyette-compat-0407:1.1.1.1
	pgoyette-compat-0330:1.1.1.1
	pgoyette-compat-0322:1.1.1.1
	pgoyette-compat-0315:1.1.1.1
	netbsd-7-1-2-RELEASE:1.1.1.1
	pgoyette-compat:1.1.1.1.0.34
	pgoyette-compat-base:1.1.1.1
	netbsd-7-1-1-RELEASE:1.1.1.1
	matt-nb8-mediatek:1.1.1.1.0.32
	matt-nb8-mediatek-base:1.1.1.1
	perseant-stdc-iso10646:1.1.1.1.0.30
	perseant-stdc-iso10646-base:1.1.1.1
	netbsd-8:1.1.1.1.0.28
	netbsd-8-base:1.1.1.1
	prg-localcount2-base3:1.1.1.1
	prg-localcount2-base2:1.1.1.1
	prg-localcount2-base1:1.1.1.1
	prg-localcount2:1.1.1.1.0.26
	prg-localcount2-base:1.1.1.1
	pgoyette-localcount-20170426:1.1.1.1
	bouyer-socketcan-base1:1.1.1.1
	pgoyette-localcount-20170320:1.1.1.1
	netbsd-7-1:1.1.1.1.0.24
	netbsd-7-1-RELEASE:1.1.1.1
	netbsd-7-1-RC2:1.1.1.1
	netbsd-7-nhusb-base-20170116:1.1.1.1
	bouyer-socketcan:1.1.1.1.0.22
	bouyer-socketcan-base:1.1.1.1
	pgoyette-localcount-20170107:1.1.1.1
	netbsd-7-1-RC1:1.1.1.1
	pgoyette-localcount-20161104:1.1.1.1
	netbsd-7-0-2-RELEASE:1.1.1.1
	localcount-20160914:1.1.1.1
	netbsd-7-nhusb:1.1.1.1.0.20
	netbsd-7-nhusb-base:1.1.1.1
	pgoyette-localcount-20160806:1.1.1.1
	pgoyette-localcount-20160726:1.1.1.1
	pgoyette-localcount:1.1.1.1.0.18
	pgoyette-localcount-base:1.1.1.1
	netbsd-7-0-1-RELEASE:1.1.1.1
	netbsd-7-0:1.1.1.1.0.16
	netbsd-7-0-RELEASE:1.1.1.1
	netbsd-7-0-RC3:1.1.1.1
	netbsd-7-0-RC2:1.1.1.1
	netbsd-7-0-RC1:1.1.1.1
	netbsd-7:1.1.1.1.0.14
	netbsd-7-base:1.1.1.1
	yamt-pagecache-base9:1.1.1.1
	yamt-pagecache-tag8:1.1.1.1.2.2
	tls-earlyentropy:1.1.1.1.0.12
	tls-earlyentropy-base:1.1.1.1
	riastradh-xf86-video-intel-2-7-1-pre-2-21-15:1.1.1.1
	riastradh-drm2-base3:1.1.1.1
	riastradh-drm2-base2:1.1.1.1
	riastradh-drm2-base1:1.1.1.1
	riastradh-drm2:1.1.1.1.0.6
	riastradh-drm2-base:1.1.1.1
	khorben-n900:1.1.1.1.0.10
	agc-symver:1.1.1.1.0.8
	agc-symver-base:1.1.1.1
	yamt-pagecache-base8:1.1.1.1
	yamt-pagecache-base7:1.1.1.1
	yamt-pagecache-base6:1.1.1.1
	tls-maxphys:1.1.1.1.0.4
	tls-maxphys-base:1.1.1.1
	v5-1-2:1.1.1.1
	yamt-pagecache-base5:1.1.1.1
	yamt-pagecache:1.1.1.1.0.2
	yamt-pagecache-base4:1.1.1.1
	v5-1-1:1.1.1.1
	DARRENR:1.1.1;
locks; strict;
comment	@# @;


1.1
date	2012.03.23.21.20.12;	author christos;	state Exp;
branches
	1.1.1.1;
next	;

1.1.1.1
date	2012.03.23.21.20.12;	author christos;	state Exp;
branches
	1.1.1.1.2.1;
next	;

1.1.1.1.2.1
date	2012.03.23.21.20.12;	author yamt;	state dead;
branches;
next	1.1.1.1.2.2;

1.1.1.1.2.2
date	2012.04.17.00.03.23;	author yamt;	state Exp;
branches;
next	;


desc
@@


1.1
log
@Initial revision
@
text
@#!/usr/local/bin/perl

# isbgraph
# an example in not so hot perl programming....
# based around GraphMaker from Fabrizio Pivari
# A graph maker perl script

use GD;
use Getopt::Long;
$hr=0;

sub main{

$opt_conf="./graphmaker.cnf";

@@elem=("NUMBERYCELLGRIDSIZE","MAXYVALUE","MINYVALUE","XCELLGRIDSIZE","XMAX",
       "Data","Graph","Bar","Average","Graphnum","Title","Transparent","Rbgcolour",
       "Gbgcolour","Bbgcolour","Rfgcolour","Gfgcolour","Bfgcolour","Rcolour",
       "Gcolour","Bcolour","Racolour","Gacolour","Bacolour");

%option=(
      NUMBERYCELLGRIDSIZE => '8',
      MAXYVALUE => '7748',
      MINYVALUE => '6500',
      XCELLGRIDSIZE => '18',
      XMAX => '1000',
      Data => './graphmaker.dat',
      Graph => './graphmaker.gif',
      Bar => '1',
      Average => '1',
      Graphnum => '1',
      Title => 'GraphMaker 2.1',
      Transparent => 'yes',
      Rbgcolour => '255',
      Gbgcolour => '255',
      Bbgcolour => '255',
      Rfgcolour => '0',
      Gfgcolour => '0',
      Bfgcolour => '0',
      Rcolour => '0',
      Gcolour => '0',
      Bcolour => '255',
      Racolour => '255',
      Gacolour => '255',
      Bacolour => '0');

&GetOptions("conf=s","help") || &printusage ;


if ($opt_help) {&printusage};

open (CNF, $opt_conf) || die;
while (<CNF>) {
s/\t/ /g;  #replace tabs by space
next if /^\s*\#/; #ignore comment lines
next if /^\s*$/;  #ignore empty lines
foreach $elem (@@elem)
   {
   if (/\s*$elem\s*:\s*(.*)/) { $option{$elem}=$1; }
   }
}
close(CNF);
#########################################
#
#
#
#       number datapoints/24 hours is 1440 (minutes)
#
#       Split into N graphs where each graph has max of 240 datapoints (4 hours)
#

$barset=0;
$m=0;
$YGRIDSIZE = 400;
$YCELLGRIDSIZE = $YGRIDSIZE/$option{'NUMBERYCELLGRIDSIZE'};
$XINIT = 30;
$XEND = 8;
$YINIT =20;
$YEND = 20;
#$XGRIDSIZE = ($option{'XMAX'}*$option{'XCELLGRIDSIZE'});
#$XGRIDSIZE = (240*$option{'XCELLGRIDSIZE'});
$XGRIDSIZE = 620;
$XGIF = $XGRIDSIZE + $XINIT + $XEND;
$XGRAPH = $XGRIDSIZE + $XINIT;
$YGIF = $YGRIDSIZE + $YEND + $YINIT;
$YGRAPH = $YGRIDSIZE + $YINIT;
$RANGE=$option{'MAXYVALUE'}-$option{'MINYVALUE'};
$SCALE=$YGRIDSIZE/$RANGE;

# NEW IMAGE
   $im=new GD::Image($XGIF,$YGIF);

$white=$im->colorAllocate(255,255,255);
$black=$im->colorAllocate(0,0,0);
$pink=$im->colorAllocate(255,153,153);
$red=$im->colorAllocate(255,0,0);
$blue=$im->colorAllocate(0,0,255);
$green=$im->colorAllocate(0,192,51);
$orange=$im->colorAllocate(255,102,0);
$pink=$im->colorAllocate(255,153,153);
$teal=$im->colorAllocate(51,153,153);
# gif background is $bg
   $bg=$white;
   $fg=$blue;
# LINE COLOUR HELP BY VAR $colour
   $colour=$red;
   $acolour=$yellow;
   # GRID
   if ($option{'Transparent'} eq "yes") {$im->transparent($bg)};
   $im->filledRectangle(0,0,$XGIF,$YGIF,$bg);

# Dot style
# vertical markers on Y axis grid
   $im->setStyle($fg,$bg,$bg,$bg);
   for $i (0..$option{'XMAX'})
      {
      $xspace= $XINIT+$option{'XCELLGRIDSIZE'}*$i +$i;
     # $im->line($xspace,$YINIT,$xspace,$YGRAPH,gdStyled);
      $num = $i+1;

      use integer;
     {
      $posis=$num - ($num/60)*60;
    }
      if ($posis eq 0)
         {
	   $outhr=0;
           $hr=($hr + 1) ;
	   $outhr=$hr+$option{'Graphnum'}*4;
#          shift minutes coords to correct stat hour!
           $im->string(gdMediumBoldFont,$xspace-3,$YGRAPH,"$outhr",$fg);
         }

      } # end of scan over X values (minutes)

   $YCELLVALUE=($option{'MAXYVALUE'}-$option{'MINYVALUE'})/$option{'NUMBERYCELLGRIDSIZE'};
   for $i (0..$option{'NUMBERYCELLGRIDSIZE'})
      {
      $num=$option{'MINYVALUE'}+$YCELLVALUE*($option{'NUMBERYCELLGRIDSIZE'}-$i);
      $im->string(gdMediumBoldFont,0,$YINIT+$YCELLGRIDSIZE*$i -6,"$num",$fg);
      }
   $im->string(gdSmallFont,$XGRIDSIZE/2-80,0,$option{'Title'},$fg);

   $odd_even = $option{'XCELLGRIDSIZE'}%2;
   #odd
   if ($odd_even eq 1) {$middle = $option{'XCELLGRIDSIZE'}/2 +0.5;}
   else {$middle = $option{'XCELLGRIDSIZE'}/2 +0.5;}

# start reading data
#   open (DATA,$option{'Data'}) || die "cant open $option{'Data'}";
# nextdata becomes Y on reading of second data set....
$nextdata="N";
@@datafiles=("./in.dat" , "./out.dat" );
   foreach  ( @@datafiles )
{
   $m=0;
   $count=0;
   $i=0;
   $fname=$_;

  print "fname $fname\n";
#  change entry for red in colour table to green for packets LEAVING target host

   open (DATA,$_) || die "cant open $_";
   print "$nextdata nextdata\n";
   while (<DATA>)
      {
      /(.*):(.*)/;
      if ($option{'Average'} eq 1) {$m+=$2;$i++;}
      if ($count eq 0){$XOLD=$1;$YOLD=$2;$count=1;next}
      $X=$1; $Y=$2;
# +($X-1) are the pixel of the line
      $xspace= $XINIT+$option{'XCELLGRIDSIZE'}*($X-1) +($X-1);
      $xspaceold= $XINIT+$option{'XCELLGRIDSIZE'}*($XOLD-1) +($XOLD-1);
      $yspace= $YGRAPH-($Y-$option{'MINYVALUE'})*$SCALE;
      $yspaceold= $YGRAPH-($YOLD-$option{'MINYVALUE'})*$SCALE;
      $barset=$option{'Bar'};
      if ($barset eq  0)
   {

     if($nextdata eq "Y")
     {

         #$im->line($XINIT,$YGRAPH,$X,$Y,$orange);
         $im->line($xspaceold,$yspaceold,$xspace,$yspace,$green);
     }
     else
     {
         $im->line($xspaceold,$yspaceold,$xspace,$yspace,$red);
     }
    }
      else
         {
         if ($1 eq 2)
            {
            $im->filledRectangle($xspaceold,$yspaceold,
                                 $xspaceold+$middle,$YGRAPH,$colour);
            $im->rectangle($xspaceold,$yspaceold,
                           $xspaceold+$middle,$YGRAPH,$fg);
            }
         else
            {
            $im->filledRectangle($xspaceold-$middle,$yspaceold,
                                 $xspaceold+$middle,$YGRAPH,$colour);
            $im->rectangle($xspaceold-$middle,$yspaceold,
                           $xspaceold+$middle,$YGRAPH,$fg);
            }
         }
      $XOLD=$X; $YOLD=$Y;

      }  # end of while DATA loop

     $im->line(500,40,530,40,$red);
     $im->line(500,60,530,60,$green);
     $im->string(gdSmallFont,535,35,"Packets IN",$fg);
     $im->string(gdSmallFont,535,55,"Packets OUT",$fg);

   if ($option{'Bar'} ne 0)
      {
      if ($X eq $option{'XMAX'})
         {
         $im->filledRectangle($xspace-$middle,$yspace,
                              $xspace,$YGRAPH,$colour);
         $im->rectangle($xspace-$middle,$yspace,
                        $xspace,$YGRAPH,$fg);
         }
      else
         {
         $im->filledRectangle($xspace-$middle,$yspace,
                              $xspace+$middle,$YGRAPH,$colour);
         $im->rectangle($xspace-$middle,$yspace,
                        $xspace+$middle,$YGRAPH,$fg);
         }
      }
   close (DATA);


     $nextdata="Y";
# TOP LEFT is 0,0 on GIF (image)
# origin of plot is xinit,yinit
 # print "little line\n";
     $im->line($xspace,$yspace,$xspace,$YGRAPH,$blue);
     $im->line($xspace,$YGRAPH,$XINIT,$YGRAPH,$blue);
#    (0,0) in cartesian space time=0 minutes, rate 0 packets/s
     $im->line($XINIT,$YGRAPH,$XINIT,$YGRAPH,$blue);
     $im->line($XINIT,$YGRAPH,$XINIT,$YGRAPH,$green);

} # close foreach loop on data file names




   if ($option{'Average'} eq 1)
      {
      # Line style
      $im->setStyle($acolour,$acolour,$acolour,$acolour,$bg,$bg,$bg,$bg);
      $m=$m/$i;
      $ym=$YGRAPH-($m-$option{'MINYVALUE'})*$SCALE;
      $im->line($XINIT,$ym,$XGRAPH,$ym,gdStyled)
      }
   $im->line($XINIT,$YINIT,$XINIT,$YGRAPH,$fg);
   $im->line($XINIT,$YINIT,$XGRAPH,$YINIT,$fg);
   $im->line($XGRAPH,$YINIT,$XGRAPH,$YGRAPH,$fg);
   $im->line($XINIT,$YGRAPH,$XGRAPH,$YGRAPH,$fg);

   $im->string(gdSmallFont,$XGIF-335,$YGIF - 12,"Time of Day (hours)",$fg);
   open (GRAPH,">$option{'Graph'}") || die "Error: Grafico.gif - $!\n";
   print GRAPH $im -> gif;
   close (GRAPH);




} # end of subroutine main

main;
exit(0);

sub printusage {
    print <<USAGEDESC;

usage:
        graphmaker [-options ...]

where options include:
    -help                        print out this message
    -conf  file                  the configuration file (default graphmaker.cnf)

If you want to know more about this tool, you might want
to read the docs. They came together with graphmaker!

Home: http://www.geocities.com/CapeCanaveral/Lab/3469/graphmaker.html

USAGEDESC
    exit(1);
}

@


1.1.1.1
log
@import 5.1.1
@
text
@@


1.1.1.1.2.1
log
@file Isbgraph was added on branch yamt-pagecache on 2012-04-17 00:03:23 +0000
@
text
@d1 297
@


1.1.1.1.2.2
log
@sync with head
@
text
@a0 297
#!/usr/local/bin/perl

# isbgraph
# an example in not so hot perl programming....
# based around GraphMaker from Fabrizio Pivari
# A graph maker perl script

use GD;
use Getopt::Long;
$hr=0;

sub main{

$opt_conf="./graphmaker.cnf";

@@elem=("NUMBERYCELLGRIDSIZE","MAXYVALUE","MINYVALUE","XCELLGRIDSIZE","XMAX",
       "Data","Graph","Bar","Average","Graphnum","Title","Transparent","Rbgcolour",
       "Gbgcolour","Bbgcolour","Rfgcolour","Gfgcolour","Bfgcolour","Rcolour",
       "Gcolour","Bcolour","Racolour","Gacolour","Bacolour");

%option=(
      NUMBERYCELLGRIDSIZE => '8',
      MAXYVALUE => '7748',
      MINYVALUE => '6500',
      XCELLGRIDSIZE => '18',
      XMAX => '1000',
      Data => './graphmaker.dat',
      Graph => './graphmaker.gif',
      Bar => '1',
      Average => '1',
      Graphnum => '1',
      Title => 'GraphMaker 2.1',
      Transparent => 'yes',
      Rbgcolour => '255',
      Gbgcolour => '255',
      Bbgcolour => '255',
      Rfgcolour => '0',
      Gfgcolour => '0',
      Bfgcolour => '0',
      Rcolour => '0',
      Gcolour => '0',
      Bcolour => '255',
      Racolour => '255',
      Gacolour => '255',
      Bacolour => '0');

&GetOptions("conf=s","help") || &printusage ;


if ($opt_help) {&printusage};

open (CNF, $opt_conf) || die;
while (<CNF>) {
s/\t/ /g;  #replace tabs by space
next if /^\s*\#/; #ignore comment lines
next if /^\s*$/;  #ignore empty lines
foreach $elem (@@elem)
   {
   if (/\s*$elem\s*:\s*(.*)/) { $option{$elem}=$1; }
   }
}
close(CNF);
#########################################
#
#
#
#       number datapoints/24 hours is 1440 (minutes)
#
#       Split into N graphs where each graph has max of 240 datapoints (4 hours)
#

$barset=0;
$m=0;
$YGRIDSIZE = 400;
$YCELLGRIDSIZE = $YGRIDSIZE/$option{'NUMBERYCELLGRIDSIZE'};
$XINIT = 30;
$XEND = 8;
$YINIT =20;
$YEND = 20;
#$XGRIDSIZE = ($option{'XMAX'}*$option{'XCELLGRIDSIZE'});
#$XGRIDSIZE = (240*$option{'XCELLGRIDSIZE'});
$XGRIDSIZE = 620;
$XGIF = $XGRIDSIZE + $XINIT + $XEND;
$XGRAPH = $XGRIDSIZE + $XINIT;
$YGIF = $YGRIDSIZE + $YEND + $YINIT;
$YGRAPH = $YGRIDSIZE + $YINIT;
$RANGE=$option{'MAXYVALUE'}-$option{'MINYVALUE'};
$SCALE=$YGRIDSIZE/$RANGE;

# NEW IMAGE
   $im=new GD::Image($XGIF,$YGIF);

$white=$im->colorAllocate(255,255,255);
$black=$im->colorAllocate(0,0,0);
$pink=$im->colorAllocate(255,153,153);
$red=$im->colorAllocate(255,0,0);
$blue=$im->colorAllocate(0,0,255);
$green=$im->colorAllocate(0,192,51);
$orange=$im->colorAllocate(255,102,0);
$pink=$im->colorAllocate(255,153,153);
$teal=$im->colorAllocate(51,153,153);
# gif background is $bg
   $bg=$white;
   $fg=$blue;
# LINE COLOUR HELP BY VAR $colour
   $colour=$red;
   $acolour=$yellow;
   # GRID
   if ($option{'Transparent'} eq "yes") {$im->transparent($bg)};
   $im->filledRectangle(0,0,$XGIF,$YGIF,$bg);

# Dot style
# vertical markers on Y axis grid
   $im->setStyle($fg,$bg,$bg,$bg);
   for $i (0..$option{'XMAX'})
      {
      $xspace= $XINIT+$option{'XCELLGRIDSIZE'}*$i +$i;
     # $im->line($xspace,$YINIT,$xspace,$YGRAPH,gdStyled);
      $num = $i+1;

      use integer;
     {
      $posis=$num - ($num/60)*60;
    }
      if ($posis eq 0)
         {
	   $outhr=0;
           $hr=($hr + 1) ;
	   $outhr=$hr+$option{'Graphnum'}*4;
#          shift minutes coords to correct stat hour!
           $im->string(gdMediumBoldFont,$xspace-3,$YGRAPH,"$outhr",$fg);
         }

      } # end of scan over X values (minutes)

   $YCELLVALUE=($option{'MAXYVALUE'}-$option{'MINYVALUE'})/$option{'NUMBERYCELLGRIDSIZE'};
   for $i (0..$option{'NUMBERYCELLGRIDSIZE'})
      {
      $num=$option{'MINYVALUE'}+$YCELLVALUE*($option{'NUMBERYCELLGRIDSIZE'}-$i);
      $im->string(gdMediumBoldFont,0,$YINIT+$YCELLGRIDSIZE*$i -6,"$num",$fg);
      }
   $im->string(gdSmallFont,$XGRIDSIZE/2-80,0,$option{'Title'},$fg);

   $odd_even = $option{'XCELLGRIDSIZE'}%2;
   #odd
   if ($odd_even eq 1) {$middle = $option{'XCELLGRIDSIZE'}/2 +0.5;}
   else {$middle = $option{'XCELLGRIDSIZE'}/2 +0.5;}

# start reading data
#   open (DATA,$option{'Data'}) || die "cant open $option{'Data'}";
# nextdata becomes Y on reading of second data set....
$nextdata="N";
@@datafiles=("./in.dat" , "./out.dat" );
   foreach  ( @@datafiles )
{
   $m=0;
   $count=0;
   $i=0;
   $fname=$_;

  print "fname $fname\n";
#  change entry for red in colour table to green for packets LEAVING target host

   open (DATA,$_) || die "cant open $_";
   print "$nextdata nextdata\n";
   while (<DATA>)
      {
      /(.*):(.*)/;
      if ($option{'Average'} eq 1) {$m+=$2;$i++;}
      if ($count eq 0){$XOLD=$1;$YOLD=$2;$count=1;next}
      $X=$1; $Y=$2;
# +($X-1) are the pixel of the line
      $xspace= $XINIT+$option{'XCELLGRIDSIZE'}*($X-1) +($X-1);
      $xspaceold= $XINIT+$option{'XCELLGRIDSIZE'}*($XOLD-1) +($XOLD-1);
      $yspace= $YGRAPH-($Y-$option{'MINYVALUE'})*$SCALE;
      $yspaceold= $YGRAPH-($YOLD-$option{'MINYVALUE'})*$SCALE;
      $barset=$option{'Bar'};
      if ($barset eq  0)
   {

     if($nextdata eq "Y")
     {

         #$im->line($XINIT,$YGRAPH,$X,$Y,$orange);
         $im->line($xspaceold,$yspaceold,$xspace,$yspace,$green);
     }
     else
     {
         $im->line($xspaceold,$yspaceold,$xspace,$yspace,$red);
     }
    }
      else
         {
         if ($1 eq 2)
            {
            $im->filledRectangle($xspaceold,$yspaceold,
                                 $xspaceold+$middle,$YGRAPH,$colour);
            $im->rectangle($xspaceold,$yspaceold,
                           $xspaceold+$middle,$YGRAPH,$fg);
            }
         else
            {
            $im->filledRectangle($xspaceold-$middle,$yspaceold,
                                 $xspaceold+$middle,$YGRAPH,$colour);
            $im->rectangle($xspaceold-$middle,$yspaceold,
                           $xspaceold+$middle,$YGRAPH,$fg);
            }
         }
      $XOLD=$X; $YOLD=$Y;

      }  # end of while DATA loop

     $im->line(500,40,530,40,$red);
     $im->line(500,60,530,60,$green);
     $im->string(gdSmallFont,535,35,"Packets IN",$fg);
     $im->string(gdSmallFont,535,55,"Packets OUT",$fg);

   if ($option{'Bar'} ne 0)
      {
      if ($X eq $option{'XMAX'})
         {
         $im->filledRectangle($xspace-$middle,$yspace,
                              $xspace,$YGRAPH,$colour);
         $im->rectangle($xspace-$middle,$yspace,
                        $xspace,$YGRAPH,$fg);
         }
      else
         {
         $im->filledRectangle($xspace-$middle,$yspace,
                              $xspace+$middle,$YGRAPH,$colour);
         $im->rectangle($xspace-$middle,$yspace,
                        $xspace+$middle,$YGRAPH,$fg);
         }
      }
   close (DATA);


     $nextdata="Y";
# TOP LEFT is 0,0 on GIF (image)
# origin of plot is xinit,yinit
 # print "little line\n";
     $im->line($xspace,$yspace,$xspace,$YGRAPH,$blue);
     $im->line($xspace,$YGRAPH,$XINIT,$YGRAPH,$blue);
#    (0,0) in cartesian space time=0 minutes, rate 0 packets/s
     $im->line($XINIT,$YGRAPH,$XINIT,$YGRAPH,$blue);
     $im->line($XINIT,$YGRAPH,$XINIT,$YGRAPH,$green);

} # close foreach loop on data file names




   if ($option{'Average'} eq 1)
      {
      # Line style
      $im->setStyle($acolour,$acolour,$acolour,$acolour,$bg,$bg,$bg,$bg);
      $m=$m/$i;
      $ym=$YGRAPH-($m-$option{'MINYVALUE'})*$SCALE;
      $im->line($XINIT,$ym,$XGRAPH,$ym,gdStyled)
      }
   $im->line($XINIT,$YINIT,$XINIT,$YGRAPH,$fg);
   $im->line($XINIT,$YINIT,$XGRAPH,$YINIT,$fg);
   $im->line($XGRAPH,$YINIT,$XGRAPH,$YGRAPH,$fg);
   $im->line($XINIT,$YGRAPH,$XGRAPH,$YGRAPH,$fg);

   $im->string(gdSmallFont,$XGIF-335,$YGIF - 12,"Time of Day (hours)",$fg);
   open (GRAPH,">$option{'Graph'}") || die "Error: Grafico.gif - $!\n";
   print GRAPH $im -> gif;
   close (GRAPH);




} # end of subroutine main

main;
exit(0);

sub printusage {
    print <<USAGEDESC;

usage:
        graphmaker [-options ...]

where options include:
    -help                        print out this message
    -conf  file                  the configuration file (default graphmaker.cnf)

If you want to know more about this tool, you might want
to read the docs. They came together with graphmaker!

Home: http://www.geocities.com/CapeCanaveral/Lab/3469/graphmaker.html

USAGEDESC
    exit(1);
}

@


