summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--include/cdf.h12
-rw-r--r--include/cumsum.h12
-rw-r--r--src/cdf.c15
-rw-r--r--src/cumsum.c12
4 files changed, 22 insertions, 29 deletions
diff --git a/include/cdf.h b/include/cdf.h
index 6c218cf..a65caa4 100644
--- a/include/cdf.h
+++ b/include/cdf.h
@@ -4,6 +4,9 @@
#ifndef H_CDF
#define H_CDF
+#define _GNU_SOURCE /* Enable getline on Linux */
+#define _POSIX_C_SOURCE 200809L /* Enable POSIX features */
+
#include <stdlib.h>
#include <unistd.h>
#include <stdio.h>
@@ -11,6 +14,7 @@
#include <ctype.h>
#include <string.h>
#include <stdint.h>
+#include <inttypes.h>
#include <assert.h>
typedef union {
@@ -28,13 +32,5 @@ static int parse_options(int argc, char*const* argv);
static void help();
static int process_data(FILE *file);
static DistRecord *expand_array(DistRecord *records, size_t *capacity);
-static int read_data_int(DistRecord **records, size_t capacity, FILE *file);
-static int read_data_uint(DistRecord **records, size_t capacity, FILE *file);
-static int read_data_fp(DistRecord **records, size_t capacity, FILE *file);
-static int print_data_fp(DistRecord *records, long double *freqs, size_t cnt);
-static int print_data_int(DistRecord *records, long double *freqs, size_t cnt);
-static int print_data_uint(DistRecord *records, long double *freqs, size_t cnt);
#endif
-
-
diff --git a/include/cumsum.h b/include/cumsum.h
index 50ff0b1..1d8387b 100644
--- a/include/cumsum.h
+++ b/include/cumsum.h
@@ -1,8 +1,11 @@
/*
*/
-#ifndef H_CDF
-#define H_CDF
+#ifndef H_CUMSUM
+#define H_CUMSUM
+
+#define _GNU_SOURCE /* Enable getline on Linux */
+#define _POSIX_C_SOURCE 200809L /* Enable POSIX features */
#include <stdlib.h>
#include <errno.h>
@@ -12,6 +15,7 @@
#include <getopt.h>
#include <string.h>
#include <stdint.h>
+#include <inttypes.h>
#include <assert.h>
typedef union {
@@ -25,10 +29,6 @@ static void help();
static int process_data(FILE *file);
static void print_sum(Number sum);
-static int read_data_int(FILE *file, Number *num);
-static int read_data_uint(FILE *file, Number *num);
-static int read_data_fp(FILE *file, Number *num);
-
#endif
diff --git a/src/cdf.c b/src/cdf.c
index 2b26e27..385ff21 100644
--- a/src/cdf.c
+++ b/src/cdf.c
@@ -73,11 +73,11 @@ static DistRecord *expand_array(DistRecord *records, size_t *capacity) {
static int parse_line(DistRecord *record, char *line) {
if (ARG_FP_INPUT) {
- return sscanf(line, "%lld %lf", &record->count, &record->data.d);
+ return sscanf(line, "%" SCNu64 " %lf", &record->count, &record->data.d);
} else if (ARG_UINT_INPUT) {
- return sscanf(line, "%lld %llu", &record->count, &record->data.u);
+ return sscanf(line, "%" SCNu64 " %" SCNu64, &record->count, &record->data.u);
} else {
- return sscanf(line, "%lld %lld", &record->count, &record->data.i);
+ return sscanf(line, "%" SCNu64 " %" SCNd64, &record->count, &record->data.i);
}
}
@@ -107,9 +107,9 @@ static void print_record(long double freq, DistRecord *record) {
if (ARG_FP_INPUT) {
fprintf(stdout, "%.15Lf\t%lf\n", freq, record->data.d);
} else if (ARG_UINT_INPUT) {
- fprintf(stdout, "%.15Lf\t%llu\n", freq, record->data.u);
+ fprintf(stdout, "%.15Lf\t%" PRIu64 "\n", freq, record->data.u);
} else {
- fprintf(stdout, "%.15Lf\t%lld\n", freq, record->data.i);
+ fprintf(stdout, "%.15Lf\t%" PRId64 "\n", freq, record->data.i);
}
}
@@ -150,7 +150,7 @@ static int process_data(FILE *file) {
/* calculate total sum of counts */
uint64_t total_count = 0;
- for (size_t i = 0; i < cnt; i++) {
+ for (size_t i = 0; i < (size_t)cnt; i++) {
total_count += records[i].count;
}
@@ -161,7 +161,7 @@ static int process_data(FILE *file) {
goto free_freqs;
}
- for (size_t i = 0; i < cnt; i++) {
+ for (size_t i = 0; i < (size_t)cnt; i++) {
freqs[i] = (long double)(records[i].count) / (long double)(total_count);
}
@@ -209,7 +209,6 @@ int main(int argc, char **argv) {
rc = EXIT_FAILURE;
}
-close_file:
if (input_file != stdin) {
fclose(input_file);
}
diff --git a/src/cumsum.c b/src/cumsum.c
index 99c7651..ff8ab73 100644
--- a/src/cumsum.c
+++ b/src/cumsum.c
@@ -44,7 +44,7 @@ static int parse_options(int argc, char *const *argv) {
case 'w':
ARG_WINDOW_SIZE = atol(optarg);
if (ARG_WINDOW_SIZE <= 0) {
- fprintf(stderr, "Error: invalid window size: %lld. Must be > 0.\n",
+ fprintf(stderr, "Error: invalid window size: %" PRId64 ". Must be > 0.\n",
ARG_WINDOW_SIZE);
error = true;
break;
@@ -95,9 +95,9 @@ void print_sum(Number sum) {
if (ARG_FP_INPUT) {
fprintf(stdout, "%lf\n", sum.d);
} else if (ARG_UINT_INPUT) {
- fprintf(stdout, "%lld\n", sum.u);
+ fprintf(stdout, "%" PRIu64 "\n", sum.u);
} else {
- fprintf(stdout, "%lld\n", sum.i);
+ fprintf(stdout, "%" PRId64 "\n", sum.i);
}
}
@@ -108,7 +108,7 @@ static int get_next_number(FILE *file, Number *num) {
int rc = fscanf(file, "%511s", buffer);
if (rc == EOF) {
return 0;
- } else if (rc != -1) {
+ } else if (rc != 1) {
return -1;
}
@@ -152,7 +152,7 @@ void accumulate_number(Number *sum, Number num) {
void print_buffer_sum() {
Number sum = {};
- for (size_t i = 0; i < ARG_WINDOW_SIZE; i++) {
+ for (int64_t i = 0; i < ARG_WINDOW_SIZE; i++) {
accumulate_number(&sum, window_buffer[i]);
}
print_sum(sum);
@@ -191,7 +191,6 @@ static int process_data(FILE *file) {
print_sum(sum);
}
-process_data_end:
return rc;
}
@@ -227,7 +226,6 @@ int main(int argc, char **argv) {
rc = EXIT_FAILURE;
}
-close_file:
if (input_file != stdin) {
fclose(input_file);
}