>>>>> On Mon, 23 May 2005 13:15:27 -0400, Alex Burger <[EMAIL PROTECTED]> said:
Alex> How about using Perl's mkstemp() instead? It is part of File::Temp. Alex> http://perldoc.perl.org/File/Temp.html Proposal: Objections? Index: fixproc =================================================================== RCS file: /cvsroot/net-snmp/net-snmp/local/fixproc,v retrieving revision 5.0 diff -u -r5.0 fixproc --- fixproc 20 Apr 2002 07:30:13 -0000 5.0 +++ fixproc 23 May 2005 19:56:17 -0000 @@ -129,6 +129,8 @@ # # Timothy Kong 3/1995 +use File::Temp qw(tempfile); + $database_file = '/local/etc/fixproc.conf'; $debug = 0; # specify debug level using -dN @@ -191,20 +193,19 @@ sub create_sh_script { local ($file) = pop (@_); + local ($fh) = pop (@_); local ($i) = pop (@_); - printf (stderr "create_sh_script\n") if ($debug > 0); + printf (STDERR "create_sh_script\n") if ($debug > 0); $! = $fixproc_error; - open (file, ">"."$file") || die "$0: cannot open $file\n"; while ( $shell_lines[$i] ne $shell_end_marker ) { - printf (file "%s", $shell_lines[$i]); + printf ($fh "%s", $shell_lines[$i]); $i++; } - close (file); - system "chmod +x $file"; - return file; + close ($fh); + chmod 0755, $file; } @@ -212,7 +213,7 @@ { local ($proc) = pop(@_); - printf (stderr "do_fix\n") if ($debug > 0); + printf (STDERR "do_fix\n") if ($debug > 0); if ($fix{$proc} eq '') { @@ -230,14 +231,13 @@ else { # it must be "shell", so execute the shell script defined in database + local ($tmpfh, $tmpfile) = tempfile("fix_XXXXXXXX", DIR => "/tmp"); - local ($tmpfile) = "/tmp/fix_$$"; - - &create_sh_script ($fix{$proc}, $tmpfile); + &create_sh_script ($fix{$proc}, $tmpfh, $tmpfile); # return code is number divided by 256 $error_code = (system "$tmpfile") / 256; - system "rm $tmpfile"; + unlink($tmpfile); return ($fix_failed_error) if ($error_code != 0); # sleep needed here? return &do_exist ($proc); @@ -249,7 +249,7 @@ { local ($proc) = pop(@_); - printf (stderr "do_check\n") if ($debug > 0); + printf (STDERR "do_check\n") if ($debug > 0); if ($check{$proc} eq '') { @@ -262,13 +262,13 @@ # if not "exist", then it must be "shell", so execute the shell script # defined in database - local ($tmpfile) = "/tmp/check_$$"; + local ($tmpfh, $tmpfile) = tempfile("check_XXXXXXXX", DIR => "/tmp"); - &create_sh_script ($check{$proc}, $tmpfile); + &create_sh_script ($fix{$proc}, $tmpfh, $tmpfile); # return code is number divided by 256 $error_code = (system "$tmpfile") / 256; - system "rm $tmpfile"; + unlink($tmpfile); return ($check_failed_error) if ($error_code != 0); # check passed, continue @@ -281,13 +281,13 @@ { local ($proc) = pop(@_); - printf (stderr "do_exist\n") if ($debug > 0); + printf (STDERR "do_exist\n") if ($debug > 0); # do ps, check to see if min <= no. of processes <= max $! = $fixproc_error; - open (command, "/bin/ps -e | /bin/grep $proc | /bin/wc -l |") + open (COMMAND, "/bin/ps -e | /bin/grep $proc | /bin/wc -l |") || die "$0: can't run ps-grep-wc command\n"; - $proc_count = <command>; + $proc_count = <COMMAND>; if (($proc_count < $min{$proc}) || ($proc_count > $max{$proc})) { return $check_failed_error; @@ -301,13 +301,13 @@ local ($proc) = pop(@_); local ($second_kill_needed); - printf (stderr "do_kill\n") if ($debug > 0); + printf (STDERR "do_kill\n") if ($debug > 0); # first try kill $! = $fixproc_error; - open (command, "/bin/ps -e | /bin/grep $proc |") + open (COMMAND, "/bin/ps -e | /bin/grep $proc |") || die "$0: can't run ps-grep-awk command\n"; - while (<command>) + while (<COMMAND>) { # match the first field of ps -e $! = $fixproc_error; @@ -318,10 +318,10 @@ # if process still exist, try kill -9 sleep 2; $! = $fixproc_error; - open (command, "/bin/ps -e | /bin/grep $proc |") + open (COMMAND, "/bin/ps -e | /bin/grep $proc |") || die "$0: can't run ps-grep-awk command\n"; $second_kill_needed = 0; - while (<command>) + while (<COMMAND>) { # match the first field of ps -e $! = $fixproc_error; @@ -334,9 +334,9 @@ # see if kill -9 worked sleep 2; $! = $fixproc_error; - open (command, "/bin/ps -e | /bin/grep $proc |") + open (COMMAND, "/bin/ps -e | /bin/grep $proc |") || die "$0: can't run ps-grep-awk command\n"; - while (<command>) + while (<COMMAND>) { # a process still exist, return error return $cannot_kill_error; } @@ -349,7 +349,7 @@ local ($proc) = pop(@_); local ($error_code); - printf (stderr "do_restart\n") if ($debug > 0); + printf (STDERR "do_restart\n") if ($debug > 0); $error_code = &do_kill ($proc); return $error_code if ($error_code != $no_error); @@ -369,7 +369,7 @@ local ($proc) = pop(@_); local ($error_code); - printf (stderr "work_on_proc\n") if ($debug > 0); + printf (STDERR "work_on_proc\n") if ($debug > 0); if ($cmd_line_action eq '') { @@ -475,8 +475,8 @@ local ($str2); $! = $fixproc_error; - open (db, $database_file) || die 'cannot open database file $database_file\n'; - while (<db>) + open (DB, $database_file) || die 'cannot open database file $database_file\n'; + while (<DB>) { if ((! /\S/) || (/^[ \t]*#.*$/)) { -- Wes Hardaker Sparta, Inc. ------------------------------------------------------- This SF.Net email is sponsored by Oracle Space Sweepstakes Want to be the first software developer in space? Enter now for the Oracle Space Sweepstakes! http://ads.osdn.com/?ad_id=7412&alloc_id=16344&op=click _______________________________________________ Net-snmp-coders mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/net-snmp-coders
