[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH 1/2] Introduce strtosz_suffix()
From: |
Markus Armbruster |
Subject: |
Re: [Qemu-devel] [PATCH 1/2] Introduce strtosz_suffix() |
Date: |
Thu, 16 Dec 2010 11:05:16 +0100 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/23.1 (gnu/linux) |
Sorry for the late review.
address@hidden writes:
> From: Jes Sorensen <address@hidden>
>
> This introduces strtosz_suffix() which allows the caller to specify a
> default suffix in case the non default of MB is wanted.
>
> strtosz() is kept as a wrapper for strtosz_suffix() which keeps it's
> current default of MB.
>
> Signed-off-by: Jes Sorensen <address@hidden>
> ---
> cutils.c | 17 ++++++++++++++---
> qemu-common.h | 7 +++++++
> 2 files changed, 21 insertions(+), 3 deletions(-)
>
> diff --git a/cutils.c b/cutils.c
> index 28089aa..7984bc1 100644
> --- a/cutils.c
> +++ b/cutils.c
> @@ -291,10 +291,10 @@ int fcntl_setfl(int fd, int flag)
> * value must be terminated by whitespace, ',' or '\0'. Return -1 on
> * error.
> */
> -ssize_t strtosz(const char *nptr, char **end)
> +ssize_t strtosz_suffix(const char *nptr, char **end, const char
> default_suffix)
Last parameter's const is of marginal uility. Matter of taste.
> {
> ssize_t retval = -1;
> - char *endptr, c;
> + char *endptr, c, d;
> int mul_required = 0;
> double val, mul, integral, fraction;
>
> @@ -313,10 +313,16 @@ ssize_t strtosz(const char *nptr, char **end)
> * part of a multi token argument.
> */
> c = *endptr;
> + d = c;
> if (isspace(c) || c == '\0' || c == ',') {
> c = 0;
> + if (default_suffix) {
> + d = default_suffix;
> + } else {
> + d = c;
> + }
The else clause "d = c" is effectively "d = 0" (due to prior "c = 0"),
which is the same as "d = default_suffix" (due to else's condition).
Thus, you can replace the conditional by a simple
d = default_suffix;
> }
> - switch (c) {
> + switch (d) {
> case 'B':
> case 'b':
> mul = 1;
> @@ -371,3 +377,8 @@ fail:
>
> return retval;
> }
> +
> +ssize_t strtosz(const char *nptr, char **end)
> +{
> + return strtosz_suffix(nptr, end, STRTOSZ_DEFSUFFIX_MB);
> +}
> diff --git a/qemu-common.h b/qemu-common.h
> index de82c2e..1ed32e5 100644
> --- a/qemu-common.h
> +++ b/qemu-common.h
> @@ -149,7 +149,14 @@ time_t mktimegm(struct tm *tm);
> int qemu_fls(int i);
> int qemu_fdatasync(int fd);
> int fcntl_setfl(int fd, int flag);
> +
> +#define STRTOSZ_DEFSUFFIX_TB 'T'
> +#define STRTOSZ_DEFSUFFIX_GB 'G'
> +#define STRTOSZ_DEFSUFFIX_MB 'M'
> +#define STRTOSZ_DEFSUFFIX_KB 'K'
> +#define STRTOSZ_DEFSUFFIX_B 'B'
I don't see what these defines buy us over the literals, but if it makes
you or other reviewers happier...
> ssize_t strtosz(const char *nptr, char **end);
> +ssize_t strtosz_suffix(const char *nptr, char **end, const char
> default_suffix);
>
> /* path.c */
> void init_paths(const char *prefix);