Re: [Qemu-devel] [PATCH 1/2] Introduce strtosz_suffix()

2010-12-16 Thread Markus Armbruster
Sorry for the late review.

jes.soren...@redhat.com writes:

 From: Jes Sorensen jes.soren...@redhat.com

 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 jes.soren...@redhat.com
 ---
  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);



[Qemu-devel] [PATCH 1/2] Introduce strtosz_suffix()

2010-12-09 Thread Jes . Sorensen
From: Jes Sorensen jes.soren...@redhat.com

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 jes.soren...@redhat.com
---
 cutils.c  |   17 ++---
 qemu-common.h |7 +++
 2 files changed, 21 insertions(+), 3 deletions(-)

diff --git a/cutils.c b/cutils.c
index 28089aa..1d24d9a 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)
 {
 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;
+}
 }
-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, 0);
+}
diff --git a/qemu-common.h b/qemu-common.h
index de82c2e..dc44cd6 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'
 ssize_t strtosz(const char *nptr, char **end);
+ssize_t strtosz_suffix(const char *nptr, char **end, const char);
 
 /* path.c */
 void init_paths(const char *prefix);
-- 
1.7.3.2




[Qemu-devel] [PATCH 1/2] Introduce strtosz_suffix()

2010-12-09 Thread Jes . Sorensen
From: Jes Sorensen jes.soren...@redhat.com

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 jes.soren...@redhat.com
---
 cutils.c  |   17 ++---
 qemu-common.h |7 +++
 2 files changed, 21 insertions(+), 3 deletions(-)

diff --git a/cutils.c b/cutils.c
index 28089aa..1d24d9a 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)
 {
 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;
+}
 }
-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, 0);
+}
diff --git a/qemu-common.h b/qemu-common.h
index de82c2e..dc44cd6 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'
 ssize_t strtosz(const char *nptr, char **end);
+ssize_t strtosz_suffix(const char *nptr, char **end, const char);
 
 /* path.c */
 void init_paths(const char *prefix);
-- 
1.7.3.2




[Qemu-devel] [PATCH 1/2] Introduce strtosz_suffix()

2010-12-09 Thread Jes . Sorensen
From: Jes Sorensen jes.soren...@redhat.com

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 jes.soren...@redhat.com
---
 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)
 {
 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;
+}
 }
-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'
 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);
-- 
1.7.3.2