summary | shortlog | log | commit | commitdiff | tree
raw | patch | inline | side by side (parent: 1f4afee)
raw | patch | inline | side by side (parent: 1f4afee)
author | oetiker <oetiker@a5681a0c-68f1-0310-ab6d-d61299d08faa> | |
Thu, 14 Jan 2010 13:01:43 +0000 (13:01 +0000) | ||
committer | oetiker <oetiker@a5681a0c-68f1-0310-ab6d-d61299d08faa> | |
Thu, 14 Jan 2010 13:01:43 +0000 (13:01 +0000) |
src/rrd_update.c | patch | blob | history |
diff --git a/src/rrd_update.c b/src/rrd_update.c
index 8efd49305cf52a2c02f8418ecfe16a3c12d7f7c3..ec1e5fd7dc1f21a97cc05f8e2a9b6cff37a21812 100644 (file)
--- a/src/rrd_update.c
+++ b/src/rrd_update.c
switch (dst_idx) {
case DST_COUNTER:
case DST_DERIVE:
- if ( ( updvals[ds_idx + 1][0] < '0'
- || updvals[ds_idx + 1][0] > '9' )
- && updvals[ds_idx + 1][0] != '-'
- && updvals[ds_idx + 1][0] != 'U'
- ) {
- rrd_set_error("not a simple integer: '%s'",
- updvals[ds_idx + 1]);
- return -1;
- }
- for (ii = 1; updvals[ds_idx + 1][ii] != '\0'; ii++) {
- if ( updvals[ds_idx + 1][ii] < '0'
- || updvals[ds_idx + 1][ii] > '9'
- ) {
- rrd_set_error("not a simple integer: '%s'",
- updvals[ds_idx + 1]);
+ /* Check if this is a valid integer. `U' is already handled in
+ * another branch. */
+ for (ii = 0; updvals[ds_idx + 1][ii] != 0; ii++) {
+ if ((ii == 0) && (dst_idx == DST_DERIVE)
+ && (updvals[ds_idx + 1][ii] == '-'))
+ continue;
+
+ if ((updvals[ds_idx + 1][ii] < '0')
+ || (updvals[ds_idx + 1][ii] > '9')) {
+ rrd_set_error("not a simple %s integer: '%s'",
+ (dst_idx == DST_DERIVE) ? "signed" : "unsigned",
+ updvals[ds_idx + 1]);
return -1;
}
- }
+ } /* for (ii = 0; updvals[ds_idx + 1][ii] != 0; ii++) */
+
if (rrd->pdp_prep[ds_idx].last_ds[0] != 'U') {
pdp_new[ds_idx] =
rrd_diff(updvals[ds_idx + 1],