diff --git a/lib/roken/parse_bytes-test.c b/lib/roken/parse_bytes-test.c index d6004d24e..f336b54be 100644 --- a/lib/roken/parse_bytes-test.c +++ b/lib/roken/parse_bytes-test.c @@ -66,7 +66,7 @@ main(int argc, char **argv) for (i = 0; i < sizeof(tests)/sizeof(tests[0]); ++i) { char buf[256]; int val = parse_bytes (tests[i].str, tests[i].def_unit); - size_t len; + int len; if (val != tests[i].val) { printf ("parse_bytes (%s, %s) = %d != %d\n", diff --git a/lib/roken/parse_bytes.c b/lib/roken/parse_bytes.c index c9747ddc2..4244e7a8c 100644 --- a/lib/roken/parse_bytes.c +++ b/lib/roken/parse_bytes.c @@ -65,13 +65,13 @@ parse_bytes (const char *s, const char *def_unit) return parse_units (s, bytes_units, def_unit); } -size_t +int unparse_bytes (int t, char *s, size_t len) { return unparse_units (t, bytes_units, s, len); } -size_t +int unparse_bytes_short (int t, char *s, size_t len) { return unparse_units_approx (t, bytes_short_units, s, len); diff --git a/lib/roken/parse_bytes.h b/lib/roken/parse_bytes.h index 2f1c0a824..a424fce9e 100644 --- a/lib/roken/parse_bytes.h +++ b/lib/roken/parse_bytes.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 1999 Kungliga Tekniska Högskolan + * Copyright (c) 1999 - 2001 Kungliga Tekniska Högskolan * (Royal Institute of Technology, Stockholm, Sweden). * All rights reserved. * @@ -39,10 +39,10 @@ int parse_bytes (const char *s, const char *def_unit); -size_t +int unparse_bytes (int t, char *s, size_t len); -size_t +int unparse_bytes_short (int t, char *s, size_t len); #endif /* __PARSE_BYTES_H__ */ diff --git a/lib/roken/parse_units.c b/lib/roken/parse_units.c index fde58e8fb..f224814eb 100644 --- a/lib/roken/parse_units.c +++ b/lib/roken/parse_units.c @@ -190,7 +190,7 @@ parse_flags (const char *s, const struct units *units, * with maximum length `len'. The actual length is the function value. */ -static size_t +static int unparse_something (int num, const struct units *units, char *s, size_t len, int (*print) (char *s, size_t len, int div, const char *name, int rem), @@ -198,7 +198,7 @@ unparse_something (int num, const struct units *units, char *s, size_t len, const char *zero_string) { const struct units *u; - size_t ret = 0, tmp; + int ret = 0, tmp; if (num == 0) return snprintf (s, len, "%s", zero_string); @@ -210,6 +210,8 @@ unparse_something (int num, const struct units *units, char *s, size_t len, if (div) { num = (*update) (num, u->mult); tmp = (*print) (s, len, div, u->name, num); + if (tmp < 0) + return tmp; len -= tmp; s += tmp; @@ -243,7 +245,7 @@ update_unit_approx (int in, unsigned mult) return update_unit (in, mult); } -size_t +int unparse_units (int num, const struct units *units, char *s, size_t len) { return unparse_something (num, units, s, len, @@ -252,7 +254,7 @@ unparse_units (int num, const struct units *units, char *s, size_t len) "0"); } -size_t +int unparse_units_approx (int num, const struct units *units, char *s, size_t len) { return unparse_something (num, units, s, len, @@ -306,7 +308,7 @@ update_flag (int in, unsigned mult) return in - mult; } -size_t +int unparse_flags (int num, const struct units *units, char *s, size_t len) { return unparse_something (num, units, s, len, diff --git a/lib/roken/parse_units.h b/lib/roken/parse_units.h index 4bf6b842a..c4ecce859 100644 --- a/lib/roken/parse_units.h +++ b/lib/roken/parse_units.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997 Kungliga Tekniska Högskolan + * Copyright (c) 1997 - 2001 Kungliga Tekniska Högskolan * (Royal Institute of Technology, Stockholm, Sweden). * All rights reserved. * @@ -57,14 +57,14 @@ int parse_flags (const char *s, const struct units *units, int orig); -size_t +int unparse_units (int num, const struct units *units, char *s, size_t len); -size_t +int unparse_units_approx (int num, const struct units *units, char *s, size_t len); -size_t +int unparse_flags (int num, const struct units *units, char *s, size_t len); void