Просмотр исходного кода

LibC: Partially implement wcwidth

Tim Schumacher 3 лет назад
Родитель
Сommit
9c29e6cde7
2 измененных файлов с 18 добавлено и 0 удалено
  1. 17 0
      Userland/Libraries/LibC/wchar.cpp
  2. 1 0
      Userland/Libraries/LibC/wchar.h

+ 17 - 0
Userland/Libraries/LibC/wchar.cpp

@@ -432,4 +432,21 @@ int swprintf(wchar_t*, size_t, const wchar_t*, ...)
     dbgln("TODO: Implement swprintf()");
     TODO();
 }
+
+int wcwidth(wchar_t wc)
+{
+    if (wc == L'\0')
+        return 0;
+
+    // Printable ASCII.
+    if (wc >= 0x20 && wc <= 0x7e)
+        return 1;
+
+    // Non-printable ASCII.
+    if (wc <= 0x7f)
+        return -1;
+
+    // TODO: Implement wcwidth for non-ASCII characters.
+    return 1;
+}
 }

+ 1 - 0
Userland/Libraries/LibC/wchar.h

@@ -55,5 +55,6 @@ float wcstof(const wchar_t*, wchar_t**);
 double wcstod(const wchar_t*, wchar_t**);
 long double wcstold(const wchar_t*, wchar_t**);
 int swprintf(wchar_t*, size_t, const wchar_t*, ...);
+int wcwidth(wchar_t);
 
 __END_DECLS