source: trunk/libs/newlib/src/newlib/libc/string/wcsnlen.c @ 559

Last change on this file since 559 was 444, checked in by satin@…, 6 years ago

add newlib,libalmos-mkh, restructure shared_syscalls.h and mini-libc

File size: 2.0 KB
Line 
1/*
2FUNCTION
3        <<wcsnlen>>---get fixed-size wide-character string length
4   
5INDEX
6        wcsnlen
7
8SYNOPSIS
9        #include <wchar.h>
10        size_t wcsnlen(const wchar_t *<[s]>, size_t <[maxlen]>);
11
12DESCRIPTION
13        The <<wcsnlen>> function computes the number of wide-character codes
14        in the wide-character string pointed to by <[s]> not including the
15        terminating L'\0' wide character but at most <[maxlen]> wide
16        characters.
17
18RETURNS
19        <<wcsnlen>> returns the length of <[s]> if it is less then <[maxlen]>,
20        or <[maxlen]> if there is no L'\0' wide character in first <[maxlen]>
21        characters.
22
23PORTABILITY
24<<wcsnlen>> is a GNU extension.
25
26<<wcsnlen>> requires no supporting OS subroutines.
27*/
28
29/*
30 * Copyright (c) 2003, Artem B. Bityuckiy (dedekind@mail.ru).
31 *
32 * Redistribution and use in source and binary forms, with or without
33 * modification, are permitted provided that the above copyright notice,
34 * this condition statement, and the following disclaimer are retained
35 * in any redistributions of the source code.
36 *
37 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
38 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
39 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
40 * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
41 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
42 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
43 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
44 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
45 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
46 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
47 * SUCH DAMAGE.
48 */
49
50#include <_ansi.h>
51#include <sys/types.h>
52#include <wchar.h>
53
54size_t
55wcsnlen (const wchar_t *s,
56                 size_t maxlen)
57{
58  const wchar_t *p;
59
60  p = s;
61  while (*p && maxlen-- > 0)
62    p++;
63
64  return (size_t)(p - s);
65}
66
67
68
Note: See TracBrowser for help on using the repository browser.