X-Git-Url: https://erislabs.net/gitweb/?a=blobdiff_plain;ds=sidebyside;f=lib%2Fmbsinit.c;h=638142e8baf2c6d4211bd0e8f8be594f18842d1c;hb=7a719c1772d45a9990560820a78ae76534ae3497;hp=2753b4175b6ee3b7852d17d3d4cff486ba6a2e64;hpb=7697f254b9de17ef9a777a6b8352a86445f831bf;p=gnulib.git diff --git a/lib/mbsinit.c b/lib/mbsinit.c index 2753b4175..638142e8b 100644 --- a/lib/mbsinit.c +++ b/lib/mbsinit.c @@ -1,5 +1,5 @@ /* Test for initial conversion state. - Copyright (C) 2008 Free Software Foundation, Inc. + Copyright (C) 2008-2012 Free Software Foundation, Inc. Written by Bruno Haible , 2008. This program is free software: you can redistribute it and/or modify @@ -20,6 +20,20 @@ /* Specification. */ #include +#include "verify.h" + +#if (defined _WIN32 || defined __WIN32__) && !defined __CYGWIN__ + +/* On native Windows, 'mbstate_t' is defined as 'int'. */ + +int +mbsinit (const mbstate_t *ps) +{ + return ps == NULL || *ps == 0; +} + +#else + /* Platforms that lack mbsinit() also lack mbrlen(), mbrtowc(), mbsrtowcs() and wcrtomb(), wcsrtombs(). We assume that @@ -34,10 +48,14 @@ - In wc -> mb direction, mbstate_t contains no information. In other words, it is always in the initial state. */ +verify (sizeof (mbstate_t) >= 4); + int mbsinit (const mbstate_t *ps) { const char *pstate = (const char *)ps; - return pstate[0] == 0; + return pstate == NULL || pstate[0] == 0; } + +#endif