[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?