psci: Fix warnings when compiling with W=1
[oweals/u-boot.git] / lib / charset.c
index 0cede9b60b4ccdc0bc9cc28f4c3cbee0b9d77dc6..72d745da4f4e2ab9cb39ae476ca5de892c8b74e0 100644 (file)
@@ -97,12 +97,17 @@ static u8 read_string(void *data)
 /**
  * read_console() - read byte from console
  *
- * @src                - not used, needed to match interface
- * Return:     - byte read
+ * @data       - not used, needed to match interface
+ * Return:     - byte read or 0 on error
  */
 static u8 read_console(void *data)
 {
-       return getc();
+       int ch;
+
+       ch = getc();
+       if (ch < 0)
+               ch = 0;
+       return ch;
 }
 
 int console_read_unicode(s32 *code)
@@ -330,11 +335,16 @@ s32 utf_to_upper(const s32 code)
        return ret;
 }
 
-size_t u16_strlen(const u16 *in)
+size_t u16_strlen(const void *in)
 {
-       size_t i;
-       for (i = 0; in[i]; i++);
-       return i;
+       const char *pos = in;
+       size_t ret;
+
+       for (; pos[0] || pos[1]; pos += 2)
+               ;
+       ret = pos - (char *)in;
+       ret >>= 1;
+       return ret;
 }
 
 size_t u16_strnlen(const u16 *in, size_t count)
@@ -344,6 +354,35 @@ size_t u16_strnlen(const u16 *in, size_t count)
        return i;
 }
 
+u16 *u16_strcpy(u16 *dest, const u16 *src)
+{
+       u16 *tmp = dest;
+
+       for (;; dest++, src++) {
+               *dest = *src;
+               if (!*src)
+                       break;
+       }
+
+       return tmp;
+}
+
+u16 *u16_strdup(const void *src)
+{
+       u16 *new;
+       size_t len;
+
+       if (!src)
+               return NULL;
+       len = (u16_strlen(src) + 1) * sizeof(u16);
+       new = malloc(len);
+       if (!new)
+               return NULL;
+       memcpy(new, src, len);
+
+       return new;
+}
+
 /* Convert UTF-16 to UTF-8.  */
 uint8_t *utf16_to_utf8(uint8_t *dest, const uint16_t *src, size_t size)
 {