#include #include /* for gettimeofday(), timeval */ #include #include // beware: access illogically comes *before* modification // in the array passed to utimes: const int upd_ac(0); const int upd_mod(1); #define state_40_macro \ foo(unseen) \ foo(green) \ foo(ripe) \ foo(spoiled) \ foo(fail) // expand the codes to make some names: #define foo(name) name, typedef enum { state_40_macro } state_40; #undef foo class whatsit{ public: std::string parent_dir; std::string progname; pid_t mypid; std::string suffix; std::string progid; int verbosity; std::map decode_40; whatsit(const std::string name, const std::string _parent_dir); int doit(const int penalty, const int stain); // access comes after modification: void update(const std::string msg, const timeval new_mod, const timeval new_ac, const int penalty, const int stain); int setup(); int check_dns(const char* ipvar, const char* namevar); int check_dns_sub(const char* ipvar, const char* namevar, std::string &addr, std::string &host, std::vector &checked); void dump(const std::string var); int maybe_mkdir(const std::string somedir, const std::string msg); state_40 get40(const std::string mid); state_40 get40(const std::string mid, timeval times[2]); int set40(const std::string mid, const int shift); void scan40(const int copies); };