13 #include "built_in_parsers.h"
15 #include "plugin_manager.h"
22 int read_args(int argc, char *argv[], struct user_options *opts)
24 int option_index = 0, c;
25 static struct option long_options[] = {
26 { .val = 'j', .has_arg = 1, .name = "jobs", },
27 { .val = 'c', .has_arg = 1, .name = "config", },
28 { .val = 'l', .has_arg = 1, .name = "log-file", },
29 { .val = 'v', .name = "verbose", },
30 { .val = 'q', .name = "quiet", },
33 char short_options[] = "j:c:l:vq";
36 c = getopt_long(argc, argv, short_options, long_options,
44 opts->max_jobs = atoi(optarg);
48 opts->config_file = optarg;
52 open_log_file(optarg);
68 while (optind < argc) {
69 opts->config_file = argv[optind];
76 int main(int argc, char *argv[])
78 struct user_options opts;
79 struct rrd_database *db, **db_list = NULL;
83 pr_info("%s Version %s starting\n", argv[0], RRDD_VERSION);
85 bzero(&opts, sizeof(opts));
87 if (read_args(argc, argv, &opts) < 0)
90 init_plugin_manager(argv[0]);
91 register_built_in_parsers();
93 if (!opts.config_file) {
94 pr_err("No database config file given. Nothing to do\n");
98 db_list = populate_database(opts.config_file);
103 if (rrdtool_create_missing_databases(db_list))
106 if (init_jobcontrol(opts.max_jobs))
115 * Update all databases parallel in one shot
117 while ((db = get_outdated_db(db_list)))
118 rrdtool_update_data(db);
120 sleeptime = get_next_update(db_list, &db_name);
122 t = time(0) + sleeptime;
123 strftime(timestr, sizeof(timestr), "%T", localtime(&t));
124 pr_info("Next scheduled event \"%s\" at %s, in %d seconds\n",
125 db_name, timestr, sleeptime);
127 poll_job_requests(sleeptime);