From b82fbcfe34876b74bb577f7cee193dd2a5877e78 Mon Sep 17 00:00:00 2001 From: Peter Palfrader Date: Wed, 3 Jul 2002 00:29:02 +0000 Subject: Create dirs if they do not exist --- pingd | 52 +++++++++++++++++++++++++++++++++++++++++++++++----- 1 file changed, 47 insertions(+), 5 deletions(-) diff --git a/pingd b/pingd index 82351c2..7fc15a7 100755 --- a/pingd +++ b/pingd @@ -1,7 +1,7 @@ #!/usr/bin/perl -wT # (c) 2002 Peter Palfrader -# $Id: pingd,v 1.12 2002/07/02 23:54:20 weasel Exp $ +# $Id: pingd,v 1.13 2002/07/03 00:29:02 weasel Exp $ # =pod @@ -156,6 +156,7 @@ use XML::Parser; use XML::Dumper; use Getopt::Long; use English; +use Carp; use lib qw{ . lib }; use Echolot::Config; use Echolot::Globals; @@ -256,7 +257,7 @@ sub daemon_run() { die ("Pidfile '".Echolot::Config::get()->{'pidfile'}."' exists\n") if pid_exists(); open (PIDFILE, '>'.Echolot::Config::get()->{'pidfile'}) or - carp ("Cannot open pidfile '".Echolot::Config::get()->{'pidfile'}."': $!\n"); + croak ("Cannot open pidfile '".Echolot::Config::get()->{'pidfile'}."': $!\n"); print PIDFILE "$PROCESS_ID ".Echolot::Globals::get()->{'hostname'}." ".time()."\n"; close PIDFILE; @@ -290,15 +291,15 @@ sub send_sig($) { die ("Pidfile '".Echolot::Config::get()->{'pidfile'}."' does exist\n") unless pid_exists(); open (PIDFILE, '<'.Echolot::Config::get()->{'pidfile'}) or - carp ("Cannot open pidfile '".Echolot::Config::get()->{'pidfile'}."': $!\n"); + croak ("Cannot open pidfile '".Echolot::Config::get()->{'pidfile'}."': $!\n"); my $line = ; close PIDFILE; my ($pid, $host, $time) = $line =~ /^(\d+) \s+ (\S+) \s+ (\d+) \s* $/x or - carp ("Cannot parse pidfile '$line'\n"); + croak ("Cannot parse pidfile '$line'\n"); my $sent = kill $sig, $pid; ($sent == 1) or - carp ("Did not send signal $sig to exactly one process but $sent. (pidfile reads $line)\n"); + croak ("Did not send signal $sig to exactly one process but $sent. (pidfile reads $line)\n"); }; sub daemon_hup() { @@ -309,6 +310,46 @@ sub daemon_stop() { send_sig(15); }; +sub make_dirs() { + for my $dir ( + Echolot::Config::get()->{'resultdir'}, + Echolot::Config::get()->{'private_resultdir'}, + Echolot::Config::get()->{'gnupghome'}, + Echolot::Config::get()->{'tmpdir'}, + Echolot::Config::get()->{'storage'}->{'File'}->{'basedir'} + ) { + if ( ! -d $dir ) { + mkdir ($dir) or + croak ("Cannot create directory $dir: $!\n"); + }; + }; + for my $dir ( + Echolot::Config::get()->{'mailindir'}, + Echolot::Config::get()->{'mailindir'}.'/cur', + Echolot::Config::get()->{'mailindir'}.'/tmp', + Echolot::Config::get()->{'mailindir'}.'/new', + Echolot::Config::get()->{'mailerrordir'}, + Echolot::Config::get()->{'mailerrordir'}.'/cur', + Echolot::Config::get()->{'mailerrordir'}.'/tmp', + Echolot::Config::get()->{'mailerrordir'}.'/new' + ) { + if ( ! -d $dir ) { + mkdir ($dir, 0700) or + croak ("Cannot create directory $dir: $!\n"); + }; + }; +}; + + + + + + + + + + + my $params; Getopt::Long::config('bundling'); @@ -353,6 +394,7 @@ if ($COMMAND eq 'add') { } elsif ($COMMAND eq 'stop') { daemon_stop(); } elsif ($COMMAND eq 'start') { + make_dirs(); if ($params->{'detach'}) { print "Detaching.\n"; unless (fork()) { -- cgit v1.2.3