#define DEBUG 0 #define UPDATE_BATCH_SIZE 100 #if DEBUG == 1 #define m2_dbg_1(M, ...) {char m2_log_buffer[10000] = ""; sprintf(m2_log_buffer, M, ##__VA_ARGS__); _m2_log(m2_log_buffer, 0); m2_log_buffer[0] = 0;} #define m2_dbg_2(M, ...) {} #elif DEBUG == 2 #define m2_dbg_2(M, ...) {char m2_log_buffer[10000] = ""; sprintf(m2_log_buffer, M, ##__VA_ARGS__); _m2_log(m2_log_buffer, 0); m2_log_buffer[0] = 0;} #define m2_dbg_1(M, ...) {char m2_log_buffer[10000] = ""; sprintf(m2_log_buffer, M, ##__VA_ARGS__); _m2_log(m2_log_buffer, 0); m2_log_buffer[0] = 0;} #else #define m2_dbg_1(M, ...) {} #define m2_dbg_2(M, ...) {} #endif // Data structures typedef struct rate_struct { long long int id; int active; struct rate_struct *next; char prefix[64]; } rate_t; typedef struct tariff_struct { int id; rate_t *rate; struct tariff_struct *next; } tariff_t; // Functions int _error_checker(int return_code, char const * caller_name); int set_current_time(); int get_current_effective_rates_by_tariff(tariff_t *tariff); int update_currently_effective_to_zero(); int update_current_effective_rates(tariff_t *tariff); int update_rates_by_tariff(); int get_tariffs(); int update_batch_of_ids(char *ids); tariff_t *initialize_tariff(int id); rate_t *initialize_rate(long long int id); int get_arguments_values(int argc, char *argv[]); int update_cache(); int update_tariffs_by_date(); int update_expired_rates(tariff_t *tariff); int update_batch_of_prefix(int id, char *prefixes); int get_active_rates_by_date(char *date); int check_arguments(int argc, char *argv[]); int get_active_rates_by_range(); int check_effective_from(char *from, char *till);