#include #include /* for gettimeofday(), timeval */ #include #include #define box_state_macro \ foo(unseen) \ foo(green) \ foo(ripe) \ foo(spoiled) \ foo(fail) // expand the codes to make some names: #define foo(name) name, typedef enum { box_state_macro } box_state; #undef foo class boxer{ public: std::string dir; std::string prefix; int min; int max; boxer(const std::string _dir, const std::string _prefix, const int _min, const int _max) : dir(_dir), prefix(_prefix), min(_min), max(_max) {} }; 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); // 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); int set_box(const boxer, const std::string mid, const int shift); box_state get_box(const boxer, const std::string mid, timeval times[2]); void scan_box(const boxer, const int copies); box_state get_40(const std::string mid); int set_40(const std::string mid, const int shift); box_state get_rep(const std::string mid); int set_rep(const std::string mid, const int shift); }; // beware: access illogically comes *before* modification // in the array passed to utimes: const int upd_ac(0); const int upd_mod(1); const int minute(60); const int hour(60*minute); const int day(24*hour); const boxer box_40 ("quarante", "mid_", 15*minute, 4*hour); const boxer box_rep("repute", "dom_", 0, 35*day);