summaryrefslogtreecommitdiff
path: root/tools/greylist.c
diff options
context:
space:
mode:
authorJohn Denker <jsd@av8n.com>2012-07-20 17:02:38 -0700
committerJohn Denker <jsd@av8n.com>2012-07-20 17:02:38 -0700
commite6056a8ac7a8e843549e163a29d5545f6c97b8f7 (patch)
tree2e26153cb5670993224836367c46fe7dd3f3ee57 /tools/greylist.c
parentc4741c59ea5c65dde44a3ec7ac5464709fe42cae (diff)
more regularization of reporting
Diffstat (limited to 'tools/greylist.c')
-rw-r--r--tools/greylist.c41
1 files changed, 28 insertions, 13 deletions
diff --git a/tools/greylist.c b/tools/greylist.c
index d1ff1a4..465a78e 100644
--- a/tools/greylist.c
+++ b/tools/greylist.c
@@ -88,6 +88,8 @@ public:
string hostname;
int mod_age;
int ac_age;
+ string suffix;
+ string progid;
whatsit(const string name, const string _dirname)
: dirname(_dirname), progname(name), mypid(getpid()), mod_age(0), ac_age(0)
@@ -98,8 +100,16 @@ public:
// access comes after modification:
void update(const string msg, const timeval new_mod,
const timeval new_ac, const int penalty=0);
+ void bind();
};
+void whatsit::bind(){
+ stringstream foo;
+ foo << progname << suffix
+ << "[" << mypid << "]";
+ progid = foo.str();
+}
+
string time_out(const int _ttt){
int ttt(abs(_ttt));
int sec(ttt % 60);
@@ -120,7 +130,7 @@ string time_out(const int _ttt){
return foo.str();
}
-void scan(const string p, const int copies=1){
+void scan(const string progid, const string p, const int copies=1){
timeval now;
gettimeofday(&now, NULL);
using namespace boost::filesystem;
@@ -136,7 +146,7 @@ void scan(const string p, const int copies=1){
string fn = p + "/" + basename;
int rslt = stat(fn.c_str(), &mystat);
if (rslt != 0){
- cerr << progname << ": stat failed for '"
+ cerr << progid << ": stat failed for '"
<< fn << "' : ";
perror(0);
}
@@ -175,7 +185,7 @@ void scan(const string p, const int copies=1){
void whatsit::update(const string msg, const timeval new_mod,
const timeval new_ac, const int penalty){
- cerr << progname << ": "
+ cerr << progid << ": "
<< msg << ": " << ipbase;
if (hostname.length()) cerr << " " << hostname;
cerr << " mod_age: " << time_out(mod_age)
@@ -195,7 +205,6 @@ void whatsit::update(const string msg, const timeval new_mod,
}
int main(int _argc, char** _argv){
- progname = *_argv;
mypid = getpid();
int argc(_argc);
char** argv(_argv);
@@ -217,13 +226,21 @@ int main(int _argc, char** _argv){
exeunt(ex_syserr);
}
penalty = atoi(*argv++); argc--;
+ } else if (prefix(arg, "-suffix")) {
+ if (!argc){
+ cerr << "Option '" << arg << "' requires an argument" << endl;
+ exeunt(ex_syserr);
+ }
+ foo.suffix += *argv++; argc--;
} else {
cerr << "Unrecognized arg: " << arg << endl;
exeunt(ex_syserr);
}
}
+ foo.bind();
+
if (scanmode) {
- scan(dirname, copies);
+ scan(foo.progid, dirname, copies);
return 0;
}
@@ -233,8 +250,7 @@ int main(int _argc, char** _argv){
int whatsit::doit(const int penalty){
char* ipvar = getenv("TCPREMOTEIP");
if (!ipvar) {
- cerr << progname
- << "[" << mypid << "] "
+ cerr << progid
<< " TCPREMOTEIP not set???" << endl;
// should never happen
// although you can make it happen using a weird test-harness
@@ -243,8 +259,7 @@ int whatsit::doit(const int penalty){
ipbase = ipvar;
char* hostvar = getenv("TCPREMOTEHOST");
if (!hostvar) {
- cerr << progname
- << "[" << mypid << "] "
+ cerr << progid
<< " from " << ipbase
<< " ... TCPREMOTEHOST not set???" << endl;
exeunt(ex_spam);
@@ -257,13 +272,13 @@ int whatsit::doit(const int penalty){
int rslt = stat(dirname.c_str(), &dirstat);
if (rslt != 0){
if (errno != ENOENT) {
- cerr << progname << ": stat failed for '"
+ cerr << progid << ": stat failed for '"
<< dirname << "' : ";
perror(0);
}
rslt = mkdir(dirname.c_str(), 0755);
if (rslt != 0) {
- cerr << progname
+ cerr << progid
<< "uid " << getuid()
<< ": mkdir failed for '"
<< dirname << "' : ";
@@ -277,14 +292,14 @@ int whatsit::doit(const int penalty){
rslt = stat(ipname.c_str(), &ipstat);
if (rslt != 0){
if (errno != ENOENT) {
- cerr << progname << ": stat failed for '"
+ cerr << progid << ": stat failed for '"
<< ipname << "' : ";
perror(0);
}
ofstream foo;
int fd = creat(ipname.c_str(), 0644);
if (fd < 0){
- cerr << progname << ": create failed for '"
+ cerr << progid << ": create failed for '"
<< ipname << "' : ";
perror(0);
}