#! /usr/bin/octave -qf
#      OTGPlot

# Check the octave version
ver=version;
octave3 = str2num(ver(1))>=3;
octave32 = str2num(ver(3))>=2;

graphicformat="epsc2";
extension="eps";

arg_list = argv ();
if nargin>0
   inputf=arg_list{1};
else
   printf("%s\n","Input file name missing, exiting...");
   return;
endif

if (f=fopen(inputf,"r"))<0
   printf("%s%s%s\n","File ",inputf," does not exist, exiting...");
   return;
endif

if size(s=getenv("TITLE"))
   title(s);
endif

# read labels
labels=blanks(0);
fscanf(f,"%s",1);    # we do not need the first string (Time)
while !strcmp(s=fscanf(f,"%s",1),"Aggregated")
labels=[labels; strcat("-@;",s,";") ];
endwhile
labels=[labels; strcat("-@;",s,";") ];    # add the last string (Aggregate-Flow)

if nargin>1
   mask=intersection(str2num(arg_list{2}),1:size(labels,1));
else
   mask=1:size(labels,1);
endif

if !size(mask)
   printf("%s\n","No flow selected to be plotted");
   return;
endif

# read data 
data=fscanf(f,"%f",[size(labels,1)+1,Inf])';

temp=split(strrep(inputf,"\\","/"),"/");
outputf=split(deblank(temp(size(temp,1),:)),".");
ylbl=outputf(1,:);

ylbl(1,1)=toupper(ylbl(1,1));
ylabel(ylbl);
xlabel("Time (ms)");


plot(data(:,1), data(:,mask+1), labels(mask,:));

# Only for Octave 3.0
if octave3

if size(s=getenv("TITLE"))
   title(s);
endif

   nlabels=blanks(0);
   for i=1:size(labels,1)
      nlabels=[nlabels; labels(i,:)(strfind(labels(i,:),";")(1)+1:strfind(labels(i,:),";")(2)-1)];
   endfor
   legend(nlabels(mask,:));
   legend("boxon");
   ylabel(ylbl);
   xlabel("Time (ms)");
endif

if octave32
	eval(cstrcat("print -d",graphicformat," ",ylbl,".",extension));
else

	eval(strcat("print -d",graphicformat," ",ylbl,".",extension));
endif

printf("%s\n","Done!");
