qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [qemu-s390x] [PATCH v5 04/12] s390-ccw: update libc


From: Collin L. Walling
Subject: Re: [Qemu-devel] [qemu-s390x] [PATCH v5 04/12] s390-ccw: update libc
Date: Tue, 6 Feb 2018 12:07:46 -0500
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.6.0

On 02/06/2018 01:14 AM, Thomas Huth wrote:
On 05.02.2018 21:57, Collin L. Walling wrote:
Moved:
   memcmp from bootmap.h to libc.h (renamed from _memcmp)
   strlen from sclp.c to libc.h (renamed from _strlen)

Added C standard functions:
   isdigit

Added non C-standard function:
   itostr
   atoui

Signed-off-by: Collin L. Walling <address@hidden>
Acked-by: Christian Borntraeger <address@hidden>
Reviewed-by: Janosch Frank <address@hidden>
---
[...]
+/**
+ * itostr:
+ * @num: an integer (base 10) to be converted.
+ * @str: a pointer to a string to store the conversion.
+ * @len: the length of the passed string.
+ *
+ * Given an integer @num, convert it to a string. The string @str must be
+ * allocated beforehand. The resulting string will be null terminated and
+ * returned. This function only handles numbers between 0 and UINT64_MAX
+ * inclusive.
+ *
+ * Returns: the string @str of the converted integer @num; NULL if @str
+ * is NULL or if there is not enough space allocated.
+ */
+char *itostr(uint64_t num, char *str, size_t len)
Nitpicking: You renamed atoi to atoui, so maybe this should now rather
be uitostr or uitoa now?

Was thinking the same right after I hit submit.



+{
+    size_t num_idx = 0;
+    uint64_t tmp = num;
+
+    IPL_assert(num >= 0, "itostr: cannot convert negative values");
(already mentioned by patchew)

+    IPL_assert(str != NULL, "itostr: no space allocated to store string");
+
+    /* Get index to ones place */
+    while ((tmp /= 10) != 0) {
+        num_idx++;
+    }
+
+    /* Check if we have enough space for num and null */
+    IPL_assert(len >= num_idx + 1, "itostr: array too small for conversion");
Should that rather be "len > num_idx + 1" instead?

Yes -- thank you.  That's what I get for trying to copy-paste old conditionals
into an assert.



+    str[num_idx + 1] = '\0';
+
+    /* Convert int to string */
+    while (num_idx >= 0) {
+        str[num_idx] = num % 10 + '0';
+        num /= 10;
+        num_idx--;
+    }
+
+    return str;
+}
  Thomas



--
- Collin L Walling




reply via email to

[Prev in Thread] Current Thread [Next in Thread]