OpenCores
URL https://opencores.org/ocsvn/or1k/or1k/trunk

Subversion Repositories or1k

[/] [or1k/] [trunk/] [newlib-1.10.0/] [newlib/] [libc/] [stdlib/] [mblen_r.c] - Diff between revs 1010 and 1765

Go to most recent revision | Only display areas with differences | Details | Blame | View Log

Rev 1010 Rev 1765
/*
/*
FUNCTION
FUNCTION
<<_mblen_r>>---reentrant minimal multibyte length function
<<_mblen_r>>---reentrant minimal multibyte length function
 
 
INDEX
INDEX
        _mblen_r
        _mblen_r
 
 
ANSI_SYNOPSIS
ANSI_SYNOPSIS
        #include <stdlib.h>
        #include <stdlib.h>
        int _mblen_r(struct _reent *<[r]>, const char *<[s]>, size_t <[n]>, int *<[state]>);
        int _mblen_r(struct _reent *<[r]>, const char *<[s]>, size_t <[n]>, int *<[state]>);
 
 
TRAD_SYNOPSIS
TRAD_SYNOPSIS
        #include <stdlib.h>
        #include <stdlib.h>
        int _mblen_r(<[r]>, <[s]>, <[n]>, <[state]>)
        int _mblen_r(<[r]>, <[s]>, <[n]>, <[state]>)
        struct _reent *<[r]>;
        struct _reent *<[r]>;
        const char *<[s]>;
        const char *<[s]>;
        size_t <[n]>;
        size_t <[n]>;
        int *<[state]>;
        int *<[state]>;
 
 
DESCRIPTION
DESCRIPTION
When MB_CAPABLE is not defined, this is a minimal ANSI-conforming
When MB_CAPABLE is not defined, this is a minimal ANSI-conforming
implementation of <<_mblen_r>>.  In this case, the
implementation of <<_mblen_r>>.  In this case, the
only ``multi-byte character sequences'' recognized are single bytes,
only ``multi-byte character sequences'' recognized are single bytes,
and thus <<1>> is returned unless <[s]> is the null pointer or
and thus <<1>> is returned unless <[s]> is the null pointer or
has a length of 0 or is the empty string.
has a length of 0 or is the empty string.
 
 
When MB_CAPABLE is defined, this routine calls <<_mbtowc_r>> to perform
When MB_CAPABLE is defined, this routine calls <<_mbtowc_r>> to perform
the conversion, passing a state variable to allow state dependent
the conversion, passing a state variable to allow state dependent
decoding.  The result is based on the locale setting which may
decoding.  The result is based on the locale setting which may
be restricted to a defined set of locales.
be restricted to a defined set of locales.
 
 
RETURNS
RETURNS
This implementation of <<_mblen_r>> returns <<0>> if
This implementation of <<_mblen_r>> returns <<0>> if
<[s]> is <<NULL>> or the empty string; it returns <<1>> if not MB_CAPABLE or
<[s]> is <<NULL>> or the empty string; it returns <<1>> if not MB_CAPABLE or
the character is a single-byte character; it returns <<-1>>
the character is a single-byte character; it returns <<-1>>
if the multi-byte character is invalid; otherwise it returns
if the multi-byte character is invalid; otherwise it returns
the number of bytes in the multibyte character.
the number of bytes in the multibyte character.
 
 
PORTABILITY
PORTABILITY
<<_mblen>> is required in the ANSI C standard.  However, the precise
<<_mblen>> is required in the ANSI C standard.  However, the precise
effects vary with the locale.
effects vary with the locale.
 
 
<<_mblen_r>> requires no supporting OS subroutines.
<<_mblen_r>> requires no supporting OS subroutines.
*/
*/
 
 
#include <stdlib.h>
#include <stdlib.h>
 
 
int
int
_DEFUN (_mblen_r, (r, s, n, state),
_DEFUN (_mblen_r, (r, s, n, state),
        struct _reent *r    _AND
        struct _reent *r    _AND
        const char *s _AND
        const char *s _AND
        size_t n _AND
        size_t n _AND
        int *state)
        int *state)
{
{
#ifdef MB_CAPABLE
#ifdef MB_CAPABLE
 
 
        return _mbtowc_r (r, NULL, s, n, state);
        return _mbtowc_r (r, NULL, s, n, state);
#else /* not MB_CAPABLE */
#else /* not MB_CAPABLE */
        if (s == NULL || *s == '\0')
        if (s == NULL || *s == '\0')
                return 0;
                return 0;
        if (n == 0)
        if (n == 0)
                return -1;
                return -1;
        return 1;
        return 1;
#endif /* not MB_CAPABLE */
#endif /* not MB_CAPABLE */
}
}
 
 
 
 

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.