]> git.donarmstrong.com Git - infobot.git/blobdiff - src/Shm.pl
- forgot to set forked{}{PID} in addForked
[infobot.git] / src / Shm.pl
index 40d9f38fe2e2f0e6827760259b2fb4723b7903d1..8d6e5a3882564f546d96305ae0dd80e2bc9827a9 100644 (file)
@@ -60,7 +60,14 @@ sub shmWrite {
     if ($str !~ /^$/) {
        my $read = &shmRead($key);
        $read =~ s/\0+//g;
-       $str = $read ."||". $str if ($read ne "");
+
+       if ($str eq "") {
+           $str = time().": ";         # time stamping, null.
+       } elsif ($read eq "") {
+           $str = time().": ";         # timestamping.
+       } else {
+           $str = $read ."||". $str;
+       }
     }
 
     if (!shmwrite($key,$str,$position,$size)) {
@@ -110,12 +117,20 @@ sub addForked {
        $count++;
     }
 
-    if (exists $forked{$name}) {
+    if (exists $forked{$name} and !scalar keys %{ $forked{$name} }) {
+       &WARN("addF: forked{$name} exists but is empty; deleting.");
+       undef $forked{$name};
+    }
+
+    if (exists $forked{$name} and scalar keys %{ $forked{$name} }) {
        my $time        = $forked{$name}{Time};
        my $continue    = 0;
 
-       if (-d "/proc/$forked{$name}{PID}") {
+       &DEBUG("PID => $forked{$name}{PID}");
+
+       if ( -d "/proc/$forked{$name}{PID}") {
            &status("fork: still running; good. BAIL OUT.");
+           return 0;
        } else {
            &WARN("Found dead fork; removing and resetting.");
            $continue = 1;
@@ -132,6 +147,7 @@ sub addForked {
     }
 
     $forked{$name}{Time}       = time();
+    $forked{$name}{PID}                = $$;
     $forkedtime                        = time();
     $count{'Fork'}++;
     return 1;
@@ -147,6 +163,10 @@ sub delForked {
        POSIX::_exit(0);
     }
 
+    if ($name =~ /\.pl/) {
+       &WARN("dF: name is name of source file ($name). FIX IT!");
+    }
+
     &showProc();       # just for informational purposes.
 
     if (exists $forked{$name}) {