[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Lost] [Patch] mblen und mbtowc für die Libc
Am Montag, 2. Juni 2008 23:08:24 schrieb Antoine Kaufmann:
> Index: src/lib/string/mb.c
> ===================================================================
> --- src/lib/string/mb.c (Revision 0)
> +++ src/lib/string/mb.c (Revision 0)
Wie wäre es mit multibyte.c?
> +#define MSK_1 (BIT(7))
> +#define MSK_2 (BIT(7) | BIT(6) | BIT(5))
> +#define MSK_3 (BIT(7) | BIT(6) | BIT(5) | BIT(4))
> +#define MSK_4 (BIT(7) | BIT(6) | BIT(5) | BIT(4) | BIT(3))
> +#define VAL_1 0
> +#define VAL_2 (BIT(7) | BIT(6))
> +#define VAL_3 (BIT(7) | BIT(6) | BIT(5))
> +#define VAL_4 (BIT(7) | BIT(6) | BIT(5) | BIT(6))
Kannst du vorher noch einen Kommentar anbringen, was MSK_? und VAL_? sein
sollen? Ich hab da erstmal eine Weile gebraucht, das zu verstehen.
Ob das BIT()-Zeug einfacher zu verstehen ist als einfach ein Hexwert, weiß ich
auch nicht wirklich.
> +
> +#define get_lower_bits(v, x) (v & (BIT(x + 1) - 1))
> +
> +int mblen(const char* s, size_t slen)
Kannst du hier den Kopfkommentar aus der Headerdatei reinkopieren?
> +int mbtowc(wchar_t* wc, const char* s, size_t slen)
> +{
> + int len = mblen(s, slen);
int len;
> + int i;
> + int bitpos = 0;
if (s == NULL) {
return 0;
}
len = mblen(s, slen);
if (wc == NULL) {
return len;
}
Für diese paar Zeilen ein TODO zu machen, lohnt sich nicht wirklich. Und den
TODO-Kommentar in die Headerdatei, aber nicht in der .c-Datei zu stecken, ist
sowieso falsch. ;-)
> +int mblen(const char* s, size_t slen);
> +
> +/**
> + * Erstes Zeichen im String in einen wchar umwandeln
> + *
> + * TODO: Der Fall mit s == NULL
TODO-Kommentare haben in einem Header wenig verloren.
> Index: src/include/arch/i386/stddef.h
> ===================================================================
> --- src/include/arch/i386/stddef.h (Revision 766)
> +++ src/include/arch/i386/stddef.h (Arbeitskopie)
> @@ -41,144 +41,7 @@
>
> typedef __SIZE_TYPE__ size_t;
> typedef int ptrdiff_t;
> -typedef short wchar_t;
> +typedef int wchar_t;
Du meinst uint32_t, oder?