X-Git-Url: https://git.octo.it/?p=collectd.git;a=blobdiff_plain;f=src%2Fcsv.c;h=be59ede03ef27a12373a3a07b1ea73d2f12f4e5b;hp=c1759f5a364f09063b4a35b9cf3f58849404b6f1;hb=ec51ddee94fa2ba1e01fe0e336ccc9c190a198ff;hpb=2079ee1517e34de372f58e7e2267ad5c71a8a41f diff --git a/src/csv.c b/src/csv.c index c1759f5a..be59ede0 100644 --- a/src/csv.c +++ b/src/csv.c @@ -33,9 +33,9 @@ static const char *config_keys[] = {"DataDir", "StoreRates"}; static int config_keys_num = STATIC_ARRAY_SIZE(config_keys); -static char *datadir = NULL; -static int store_rates = 0; -static int use_stdio = 0; +static char *datadir; +static int store_rates; +static int use_stdio; static int value_list_to_string(char *buffer, int buffer_len, const data_set_t *ds, const value_list_t *vl) { @@ -47,9 +47,9 @@ static int value_list_to_string(char *buffer, int buffer_len, memset(buffer, '\0', buffer_len); - status = ssnprintf(buffer, buffer_len, "%.3f", CDTIME_T_TO_DOUBLE(vl->time)); + status = snprintf(buffer, buffer_len, "%.3f", CDTIME_T_TO_DOUBLE(vl->time)); if ((status < 1) || (status >= buffer_len)) - return (-1); + return -1; offset = status; for (size_t i = 0; i < ds->ds_num; i++) { @@ -58,43 +58,42 @@ static int value_list_to_string(char *buffer, int buffer_len, (ds->ds[i].type != DS_TYPE_DERIVE) && (ds->ds[i].type != DS_TYPE_ABSOLUTE)) { sfree(rates); - return (-1); + return -1; } if (ds->ds[i].type == DS_TYPE_GAUGE) { - status = ssnprintf(buffer + offset, buffer_len - offset, ",%lf", - vl->values[i].gauge); + status = snprintf(buffer + offset, buffer_len - offset, ",%lf", + vl->values[i].gauge); } else if (store_rates != 0) { if (rates == NULL) rates = uc_get_rate(ds, vl); if (rates == NULL) { WARNING("csv plugin: " "uc_get_rate failed."); - return (-1); + return -1; } - status = - ssnprintf(buffer + offset, buffer_len - offset, ",%lf", rates[i]); + status = snprintf(buffer + offset, buffer_len - offset, ",%lf", rates[i]); } else if (ds->ds[i].type == DS_TYPE_COUNTER) { - status = ssnprintf(buffer + offset, buffer_len - offset, ",%llu", - vl->values[i].counter); + status = snprintf(buffer + offset, buffer_len - offset, ",%" PRIu64, + (uint64_t)vl->values[i].counter); } else if (ds->ds[i].type == DS_TYPE_DERIVE) { - status = ssnprintf(buffer + offset, buffer_len - offset, ",%" PRIi64, - vl->values[i].derive); + status = snprintf(buffer + offset, buffer_len - offset, ",%" PRIi64, + vl->values[i].derive); } else if (ds->ds[i].type == DS_TYPE_ABSOLUTE) { - status = ssnprintf(buffer + offset, buffer_len - offset, ",%" PRIu64, - vl->values[i].absolute); + status = snprintf(buffer + offset, buffer_len - offset, ",%" PRIu64, + vl->values[i].absolute); } if ((status < 1) || (status >= (buffer_len - offset))) { sfree(rates); - return (-1); + return -1; } offset += status; } /* for ds->ds_num */ sfree(rates); - return (0); + return 0; } /* int value_list_to_string */ static int value_list_to_filename(char *buffer, size_t buffer_size, @@ -110,7 +109,7 @@ static int value_list_to_filename(char *buffer, size_t buffer_size, size_t len = strlen(datadir) + 1; if (len >= ptr_size) - return (ENOBUFS); + return ENOBUFS; memcpy(ptr, datadir, len); ptr[len - 1] = '/'; @@ -120,12 +119,12 @@ static int value_list_to_filename(char *buffer, size_t buffer_size, status = FORMAT_VL(ptr, ptr_size, vl); if (status != 0) - return (status); + return status; /* Skip all the time formatting stuff when printing to STDOUT or * STDERR. */ if (use_stdio) - return (0); + return 0; ptr_size -= strlen(ptr); ptr += strlen(ptr); @@ -133,7 +132,7 @@ static int value_list_to_filename(char *buffer, size_t buffer_size, /* "-2013-07-12" => 11 bytes */ if (ptr_size < 12) { ERROR("csv plugin: Buffer too small."); - return (ENOMEM); + return ENOMEM; } /* TODO: Find a way to minimize the calls to `localtime_r', @@ -141,31 +140,29 @@ static int value_list_to_filename(char *buffer, size_t buffer_size, now = time(NULL); if (localtime_r(&now, &struct_tm) == NULL) { ERROR("csv plugin: localtime_r failed"); - return (-1); + return -1; } status = strftime(ptr, ptr_size, "-%Y-%m-%d", &struct_tm); if (status == 0) /* yep, it returns zero on error. */ { ERROR("csv plugin: strftime failed"); - return (-1); + return -1; } - return (0); + return 0; } /* int value_list_to_filename */ static int csv_create_file(const char *filename, const data_set_t *ds) { FILE *csv; if (check_create_dir(filename)) - return (-1); + return -1; csv = fopen(filename, "w"); if (csv == NULL) { - char errbuf[1024]; - ERROR("csv plugin: fopen (%s) failed: %s", filename, - sstrerror(errno, errbuf, sizeof(errbuf))); - return (-1); + ERROR("csv plugin: fopen (%s) failed: %s", filename, STRERRNO); + return -1; } fprintf(csv, "epoch"); @@ -186,10 +183,10 @@ static int csv_config(const char *key, const char *value) { } if (strcasecmp("stdout", value) == 0) { use_stdio = 1; - return (0); + return 0; } else if (strcasecmp("stderr", value) == 0) { use_stdio = 2; - return (0); + return 0; } datadir = strdup(value); if (datadir != NULL) { @@ -209,9 +206,9 @@ static int csv_config(const char *key, const char *value) { else store_rates = 0; } else { - return (-1); + return -1; } - return (0); + return 0; } /* int csv_config */ static int csv_write(const data_set_t *ds, const value_list_t *vl, @@ -231,12 +228,12 @@ static int csv_write(const data_set_t *ds, const value_list_t *vl, status = value_list_to_filename(filename, sizeof(filename), vl); if (status != 0) - return (-1); + return -1; DEBUG("csv plugin: csv_write: filename = %s;", filename); if (value_list_to_string(values, sizeof(values), ds, vl) != 0) - return (-1); + return -1; if (use_stdio) { escape_string(filename, sizeof(filename)); @@ -251,30 +248,26 @@ static int csv_write(const data_set_t *ds, const value_list_t *vl, fprintf(use_stdio == 1 ? stdout : stderr, "PUTVAL %s interval=%.3f %s\n", filename, CDTIME_T_TO_DOUBLE(vl->interval), values); - return (0); + return 0; } if (stat(filename, &statbuf) == -1) { if (errno == ENOENT) { if (csv_create_file(filename, ds)) - return (-1); + return -1; } else { - char errbuf[1024]; - ERROR("stat(%s) failed: %s", filename, - sstrerror(errno, errbuf, sizeof(errbuf))); - return (-1); + ERROR("stat(%s) failed: %s", filename, STRERRNO); + return -1; } } else if (!S_ISREG(statbuf.st_mode)) { ERROR("stat(%s): Not a regular file!", filename); - return (-1); + return -1; } csv = fopen(filename, "a"); if (csv == NULL) { - char errbuf[1024]; - ERROR("csv plugin: fopen (%s) failed: %s", filename, - sstrerror(errno, errbuf, sizeof(errbuf))); - return (-1); + ERROR("csv plugin: fopen (%s) failed: %s", filename, STRERRNO); + return -1; } csv_fd = fileno(csv); @@ -284,11 +277,9 @@ static int csv_write(const data_set_t *ds, const value_list_t *vl, status = fcntl(csv_fd, F_SETLK, &fl); if (status != 0) { - char errbuf[1024]; - ERROR("csv plugin: flock (%s) failed: %s", filename, - sstrerror(errno, errbuf, sizeof(errbuf))); + ERROR("csv plugin: flock (%s) failed: %s", filename, STRERRNO); fclose(csv); - return (-1); + return -1; } fprintf(csv, "%s\n", values); @@ -297,7 +288,7 @@ static int csv_write(const data_set_t *ds, const value_list_t *vl, * because the `FILE *' may need to flush a cache first */ fclose(csv); - return (0); + return 0; } /* int csv_write */ void module_register(void) {