X-Git-Url: https://git.octo.it/?a=blobdiff_plain;f=src%2Frrd_update.c;h=5536c3c7e6b57928a4c5348d1f6b9f63cacefd10;hb=9fd92a932867262d4f3eb239f05473252f1e98b2;hp=d978822ee1198dba9da1a635b073a37e6181f4a4;hpb=281fbf789dc6655b8ba6c7e5726e8a39d0a7503a;p=rrdtool.git diff --git a/src/rrd_update.c b/src/rrd_update.c index d978822..5536c3c 100644 --- a/src/rrd_update.c +++ b/src/rrd_update.c @@ -318,42 +318,6 @@ static inline void initialize_time( } } -static int send_values_to_daemon (const char *addr, const char *file, - int values_num, const char * const *values, int silent) -{ - int status; - - status = rrdc_connect ((addr != NULL) ? addr : RRDD_SOCK_PATH); - if (status != 0) - { - if (!silent) - { - rrd_set_error("Unable to connect to daemon: %s", - (status < 0) - ? "Internal error" - : rrd_strerror (status)); - } - return (status); - } - - status = rrdc_update (file, values_num, values); - if (status != 0) - { - if (!silent) - { - rrd_set_error("Failed sending the values to the daemon: %s", - (status < 0) - ? "Internal error" - : rrd_strerror (status)); - } - rrdc_disconnect (); - return (status); - } - - rrdc_disconnect (); - return (0); -} /* int send_values_to_daemon */ - #define IFDNAN(X,Y) (isnan(X) ? (Y) : (X)); rrd_info_t *rrd_update_v( @@ -413,8 +377,6 @@ int rrd_update( { struct option long_options[] = { {"template", required_argument, 0, 't'}, - {"cache", optional_argument, 0, 'c'}, - {"nocache", no_argument , 0, 'n'}, {"daemon", required_argument, 0, 'd'}, {0, 0, 0, 0} }; @@ -422,15 +384,13 @@ int rrd_update( int opt; char *tmplt = NULL; int rc = -1; - /* force_cache: 0 = default; -1 = force no cache; 1 = force cache */ - int force_cache = 0; - char *daemon_address = NULL; + char *daemon = NULL; optind = 0; opterr = 0; /* initialize getopt */ while (1) { - opt = getopt_long(argc, argv, "t:cnd:", long_options, &option_index); + opt = getopt_long(argc, argv, "t:d:", long_options, &option_index); if (opt == EOF) break; @@ -440,33 +400,11 @@ int rrd_update( tmplt = strdup(optarg); break; - case 'c': - if (optarg != NULL) - { - if (strcmp ("no", optarg) == 0) - force_cache = -1; - else if (strcmp ("yes", optarg) == 0) - force_cache = 1; - else - { - rrd_set_error ("option 'cache' must be " - "either 'yes' or 'no'."); - goto out; - } - } - else - force_cache = 1; - break; - - case 'n': - force_cache = -1; - break; - case 'd': - if (daemon_address != NULL) - free (daemon_address); - daemon_address = strdup (optarg); - if (daemon_address == NULL) + if (daemon != NULL) + free (daemon); + daemon = strdup (optarg); + if (daemon == NULL) { rrd_set_error("strdup failed."); goto out; @@ -485,25 +423,57 @@ int rrd_update( goto out; } - if ((tmplt != NULL) && (force_cache > 0)) + if ((tmplt != NULL) && (daemon != NULL)) { rrd_set_error("The caching daemon cannot be used together with " "templates yet."); goto out; } - if ((tmplt == NULL) && (force_cache >= 0)) + if ((tmplt == NULL) && (daemon == NULL)) + { + char *temp; + + temp = getenv (ENV_RRDCACHED_ADDRESS); + if (temp != NULL) + { + daemon = strdup (temp); + if (daemon == NULL) + { + rrd_set_error("strdup failed."); + goto out; + } + } + } + + if (daemon != NULL) { int status; - status = send_values_to_daemon (daemon_address, - /* file = */ argv[optind], - /* values_num = */ argc - optind - 1, - /* values = */ (void *) (argv + optind + 1), - /* silent = */ (force_cache > 0) ? 0 : 1); - if ((status == 0) || (force_cache > 0)) + status = rrdc_connect (daemon); + if (status != 0) + { + rrd_set_error("Unable to connect to daemon: %s", + (status < 0) + ? "Internal error" + : rrd_strerror (status)); goto out; - } /* if ((tmplt != NULL) && (force_cache >= 0)) */ + } + + status = rrdc_update (/* file = */ argv[optind], + /* values_num = */ argc - optind - 1, + /* values = */ (void *) (argv + optind + 1)); + if (status != 0) + { + rrd_set_error("Failed sending the values to the daemon: %s", + (status < 0) + ? "Internal error" + : rrd_strerror (status)); + } + + rrdc_disconnect (); + goto out; + } /* if (daemon != NULL) */ rc = rrd_update_r(argv[optind], tmplt, argc - optind - 1, (const char **) (argv + optind + 1)); @@ -513,10 +483,10 @@ int rrd_update( free(tmplt); tmplt = NULL; } - if (daemon_address != NULL) + if (daemon != NULL) { - free (daemon_address); - daemon_address = NULL; + free (daemon); + daemon = NULL; } return rc; } @@ -609,6 +579,15 @@ int _rrd_update( rra_step_cnt, updvals, tmpl_idx, tmpl_cnt, &pcdp_summary, version, skip_update, &schedule_smooth) == -1) { + if (rrd_test_error()) { /* Should have error string always here */ + char *save_error; + + /* Prepend file name to error message */ + if ((save_error = strdup(rrd_get_error())) != NULL) { + rrd_set_error("%s: %s", filename, save_error); + free(save_error); + } + } free(arg_copy); break; }