Index: /trunk/tools/psstatus
===================================================================
--- /trunk/tools/psstatus	(revision 28939)
+++ /trunk/tools/psstatus	(revision 28940)
@@ -10,6 +10,7 @@
 use File::Temp qw(tempfile);
 
-my $limit = 20;
+my $limit = 0;
 my $running;
+my $finished;
 my $req_faulted;
 my $job_faulted;
@@ -23,4 +24,5 @@
 GetOptions(
     'running|r',     \$running,
+    'finished|f',    \$finished,
     'req_faulted',   \$req_faulted,
     'job_faulted',   \$job_faulted,
@@ -32,10 +34,14 @@
 pod2usage( -msg => "Unknown option: @ARGV", -exitval => 2 ) if @ARGV;
 
-my $no_args = ! (defined $running or defined $req_faulted or defined $job_faulted );
+my $no_args = ! (defined $running or defined $finished or defined $req_faulted or defined $job_faulted );
+
+die "cannot supply --running and --finished\n" if ($running and $finished);
+    
 
 my $ipprc =  PS::IPP::Config->new();
 my $dbh = getDBHandle();
 
-my $select = "SELECT req_id, name, label, reqType, pstampRequest.state, pstampRequest.fault, count(job_id) AS numJobs, timestamp";
+my $jobLabel = $running ? "Running jobs" : "Num Jobs";
+my $select = "SELECT req_id, name, label, reqType, pstampRequest.state, pstampRequest.fault, count(job_id) AS '$jobLabel', timestamp";
 
 $select .= ", outdir" if ($verbose);
@@ -45,8 +51,16 @@
 my $sql = $select . $from . $where;
 
-if ($no_args and $limit) {
+$limit = 20 if ($no_args);
+# if ($no_args and $limit) {
+if (0 and $limit) {
     # use mysql to get the last_req_id
     # this works but it prints out the @last_req_id value which is distracting. Use dbi for the query
-    my $stmt = $dbh->prepare("SELECT req_id FROM pstampRequest ORDER BY req_id DESC LIMIT 1");
+    my $where = "";
+    if ($running) {
+        $where = " WHERE pstampRequest.state = 'run' OR pstampRequest.state = 'new'";
+    } elsif ($finished) {
+        $where = " WHERE pstampRequest.state = 'stop'";
+    }
+    my $stmt = $dbh->prepare("SELECT req_id FROM pstampRequest $where ORDER BY req_id DESC LIMIT 1");
     $stmt->execute();
     my $row = $stmt->fetchrow_hashref();
@@ -59,5 +73,7 @@
 }
 if ($running) {
-    $sql .= " AND (pstampRequest.state = 'new' OR pstampRequest.state = 'run')"
+    $sql .= " AND (pstampRequest.state = 'new' OR pstampRequest.state = 'run') AND (pstampJob.state = 'run' OR pstampJob.state IS NULL)";
+} elsif ($finished) {
+    $sql .= " AND (pstampRequest.state = 'stop') AND date_add(timestamp, interval 1 day) >=utc_timestamp()"
 }
 if ($req_faulted) {
@@ -69,4 +85,7 @@
 $sql .= " GROUP BY req_id";
 
+if ($finished) {
+    $sql .= " ORDER BY timestamp DESC";
+}
 if ($limit and !$no_args) {
     $sql .= " LIMIT $limit";
