⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 wstring.c

📁 Axis 221 camera embedded programing interface
💻 C
📖 第 1 页 / 共 5 页
字号:
			&& (++s2, *s1++));	return r;#endif}__XL_ALIAS(strcasecmp)#endif /* defined(__UCLIBC_HAS_XLOCALE__) && !defined(__UCLIBC_DO_XLOCALE) */#endif/**********************************************************************/#if defined(L_strncasecmp) || defined(L_strncasecmp_l) || defined(L_wcsncasecmp) || defined(L_wcsncasecmp_l)#if defined(L_wcsncasecmp) || defined(L_wcsncasecmp_l)#define strncasecmp wcsncasecmp#define strncasecmp_l wcsncasecmp_l#define __strncasecmp_l __wcsncasecmp_l#ifdef __UCLIBC_DO_XLOCALE#define TOLOWER(C) __towlower_l((C), locale_arg)#else#define TOLOWER(C) towlower((C))#endif#else  /* defined(L_wcsncasecmp) || defined(L_wcsncasecmp_l) */#ifdef __UCLIBC_DO_XLOCALE#define TOLOWER(C) __tolower_l((C), locale_arg)#else#define TOLOWER(C) tolower((C))#endif#endif /* defined(L_wcsncasecmp) || defined(L_wcsncasecmp_l) */#if defined(__UCLIBC_HAS_XLOCALE__) && !defined(__UCLIBC_DO_XLOCALE)int strncasecmp(register const Wchar *s1, register const Wchar *s2, size_t n){	return __strncasecmp_l(s1, s2, n, __UCLIBC_CURLOCALE);}#else  /* defined(__UCLIBC_HAS_XLOCALE__) && !defined(__UCLIBC_DO_XLOCALE) */int __XL(strncasecmp)(register const Wchar *s1, register const Wchar *s2,					  size_t n   __LOCALE_PARAM ){#ifdef WANT_WIDE	while (n && ((*s1 == *s2) || (TOLOWER(*s1) == TOLOWER(*s2)))) {		if (!*s1++) {			return 0;		}		++s2;		--n;	}	return (n == 0)		? 0		: ((((Wuchar)TOLOWER(*s1)) < ((Wuchar)TOLOWER(*s2))) ? -1 : 1);	/* TODO -- should wide cmp funcs do wchar or Wuchar compares? */#else	int r = 0;	while ( n			&& ((s1 == s2) ||				!(r = ((int)( TOLOWER(*((unsigned char *)s1))))				  - TOLOWER(*((unsigned char *)s2))))			&& (--n, ++s2, *s1++));	return r;#endif}__XL_ALIAS(strncasecmp)#endif /* defined(__UCLIBC_HAS_XLOCALE__) && !defined(__UCLIBC_DO_XLOCALE) */#endif/**********************************************************************/#ifdef L_wcsnlen#define L_strnlen#define Wstrnlen wcsnlen#else#define Wstrnlen strnlen#endif#ifdef L_strnlensize_t Wstrnlen(const Wchar *s, size_t max){	register const Wchar *p = s;#ifdef __BCC__	/* bcc can optimize the counter if it thinks it is a pointer... */	register const char *maxp = (const char *) max;#else#define maxp max#endif	while (maxp && *p) {		++p;		--maxp;	}	return p - s;}#undef maxp#endif/**********************************************************************//* No wide analog. */#ifdef L_memccpyvoid *memccpy(void * __restrict s1, const void * __restrict s2, int c, size_t n){	register char *r1 = s1;	register const char *r2 = s2;	while (n-- && (((unsigned char)(*r1++ = *r2++)) != ((unsigned char) c)));	return (n == (size_t) -1) ? NULL : r1;}#endif/**********************************************************************/#undef Wstrlen#undef Wstrcpy#ifdef L_wcsdup#define L_strdup#define Wstrdup wcsdup#define Wstrlen wcslen#define Wstrcpy wcscpy#else#define Wstrdup strdup#define Wstrlen strlen#define Wstrcpy strcpy#endif#ifdef L_strdupWchar *Wstrdup(register const Wchar *s1){	register Wchar *s;    if ((s = malloc((Wstrlen(s1) + 1) * sizeof(Wchar))) != NULL) {		Wstrcpy(s, s1);	}	return s;}#endif/**********************************************************************/#ifdef L_strerrorchar *strerror(int errnum){    static char buf[_STRERROR_BUFSIZE];	_susv3_strerror_r(errnum, buf, sizeof(buf));	return buf;}#endif/**********************************************************************//* SUSv3 functions. *//**********************************************************************/#ifdef L__susv3_strerror_r#ifdef __UCLIBC_HAS_ERRNO_MESSAGES__#if defined(__alpha__) || defined(__mips__) || defined(__sparc__)static const unsigned char estridx[] = {	0,							/* success is always 0 */	EPERM,	ENOENT,	ESRCH,	EINTR,	EIO,	ENXIO,	E2BIG,	ENOEXEC,	EBADF,	ECHILD,	EAGAIN,	ENOMEM,	EACCES,	EFAULT,	ENOTBLK,	EBUSY,	EEXIST,	EXDEV,	ENODEV,	ENOTDIR,	EISDIR,	EINVAL,	ENFILE,	EMFILE,	ENOTTY,	ETXTBSY,	EFBIG,	ENOSPC,	ESPIPE,	EROFS,	EMLINK,	EPIPE,	EDOM,	ERANGE,	EDEADLK,	ENAMETOOLONG,	ENOLCK,	ENOSYS,	ENOTEMPTY,	ELOOP,	0,	ENOMSG,	EIDRM,	ECHRNG,	EL2NSYNC,	EL3HLT,	EL3RST,	ELNRNG,	EUNATCH,	ENOCSI,	EL2HLT,	EBADE,	EBADR,	EXFULL,	ENOANO,	EBADRQC,	EBADSLT,	0,	EBFONT,	ENOSTR,	ENODATA,	ETIME,	ENOSR,	ENONET,	ENOPKG,	EREMOTE,	ENOLINK,	EADV,	ESRMNT,	ECOMM,	EPROTO,	EMULTIHOP,	EDOTDOT,	EBADMSG,	EOVERFLOW,	ENOTUNIQ,	EBADFD,	EREMCHG,	ELIBACC,	ELIBBAD,	ELIBSCN,	ELIBMAX,	ELIBEXEC,	EILSEQ,	ERESTART,	ESTRPIPE,	EUSERS,	ENOTSOCK,	EDESTADDRREQ,	EMSGSIZE,	EPROTOTYPE,	ENOPROTOOPT,	EPROTONOSUPPORT,	ESOCKTNOSUPPORT,	EOPNOTSUPP,	EPFNOSUPPORT,	EAFNOSUPPORT,	EADDRINUSE,	EADDRNOTAVAIL,	ENETDOWN,	ENETUNREACH,	ENETRESET,	ECONNABORTED,	ECONNRESET,	ENOBUFS,	EISCONN,	ENOTCONN,	ESHUTDOWN,	ETOOMANYREFS,	ETIMEDOUT,	ECONNREFUSED,	EHOSTDOWN,	EHOSTUNREACH,	EALREADY,	EINPROGRESS,	ESTALE,	EUCLEAN,	ENOTNAM,	ENAVAIL,	EISNAM,	EREMOTEIO,#ifdef __mips__	0,							/* mips has an outrageous value for this... */#else	EDQUOT,#endif	ENOMEDIUM,	EMEDIUMTYPE,#if defined(__mips__) || defined(__sparc__)	EDEADLOCK,#endif};#endifint _susv3_strerror_r(int errnum, char *strerrbuf, size_t buflen){    register char *s;    int i, retval;    char buf[_STRERROR_BUFSIZE];    static const char unknown[] = {		'U', 'n', 'k', 'n', 'o', 'w', 'n', ' ', 'e', 'r', 'r', 'o', 'r', ' '    };    retval = EINVAL;#ifdef __UCLIBC_HAS_ERRNO_MESSAGES__#if defined(__alpha__) || defined(__mips__) || defined(__sparc__)	/* Need to translate errno to string index. */	for (i = 0 ; i < sizeof(estridx)/sizeof(estridx[0]) ; i++) {		if (estridx[i] == errnum) {			goto GOT_ESTRIDX;		}	}	i = INT_MAX;	/* Failed, but may need to check mips special case. */#ifdef __mips__	if (errnum == EDQUOT) {	/* Deal with large EDQUOT value on mips */		i = 122;	}#endif /* __mips__ */ GOT_ESTRIDX:#else	/* No errno to string index translation needed. */	i = errnum;#endif    if (((unsigned int) i) < _SYS_NERR) {		/* Trade time for space.  This function should rarely be called		 * so rather than keeping an array of pointers for the different		 * messages, just run through the buffer until we find the		 * correct string. */		for (s = (char *) _string_syserrmsgs ; i ; ++s) {			if (!*s) {				--i;			}		}		if (*s) {		/* Make sure we have an actual message. */			retval = 0;			goto GOT_MESG;		}    }#endif /* __UCLIBC_HAS_ERRNO_MESSAGES__ */    s = _int10tostr(buf+sizeof(buf)-1, errnum) - sizeof(unknown);    memcpy(s, unknown, sizeof(unknown)); GOT_MESG:    if (!strerrbuf) {		/* SUSv3  */		buflen = 0;    }    i = strlen(s) + 1;    if (i > buflen) {		i = buflen;		retval = ERANGE;    }    if (i) {		memcpy(strerrbuf, s, i);		strerrbuf[i-1] = 0;	/* In case buf was too small. */    }    if (retval) {		__set_errno(retval);    }    return retval;}#else  /* __UCLIBC_HAS_ERRNO_MESSAGES__ */int _susv3_strerror_r(int errnum, char *strerrbuf, size_t buflen){    register char *s;    int i, retval;    char buf[_STRERROR_BUFSIZE];    static const char unknown[] = {		'U', 'n', 'k', 'n', 'o', 'w', 'n', ' ', 'e', 'r', 'r', 'o', 'r', ' '    };    s = _int10tostr(buf+sizeof(buf)-1, errnum) - sizeof(unknown);    memcpy(s, unknown, sizeof(unknown));    if (!strerrbuf) {		/* SUSv3  */		buflen = 0;    }    retval = EINVAL;	i = buf + sizeof(buf) - s;    if (i > buflen) {		i = buflen;		retval = ERANGE;    }    if (i) {		memcpy(strerrbuf, s, i);		strerrbuf[i-1] = 0;	/* In case buf was too small. */    }	__set_errno(retval);    return retval;}#endif /* __UCLIBC_HAS_ERRNO_MESSAGES__ */#endif/**********************************************************************//* GNU extension functions. *//**********************************************************************/#ifdef L__glibc_strerror_rweak_alias(_glibc_strerror_r,__strerror_r);char *_glibc_strerror_r(int errnum, char *strerrbuf, size_t buflen){    _susv3_strerror_r(errnum, strerrbuf, buflen);    return strerrbuf;}#endif/**********************************************************************/#ifdef L_memmemvoid *memmem(const void *haystack, size_t haystacklen,		     const void *needle, size_t needlelen){	register const char *ph;	register const char *pn;	const char *plast;	size_t n;	if (needlelen == 0) {		return (void *) haystack;	}	if (haystacklen >= needlelen) {		ph = (const char *) haystack;		pn = (const char *) needle;		plast = ph + (haystacklen - needlelen);		do {			n = 0;			while (ph[n] == pn[n]) {				if (++n == needlelen) {					return (void *) ph;				}			}		} while (++ph <= plast);	}	return NULL;}#endif/**********************************************************************/#ifdef L_wmempcpy#define L_mempcpy#define Wmempcpy wmempcpy#else#define Wmempcpy __mempcpy#endif#ifdef L_mempcpy#ifndef L_wmempcpyweak_alias(__mempcpy,mempcpy);#endifWvoid *Wmempcpy(Wvoid * __restrict s1, const Wvoid * __restrict s2, size_t n){	register Wchar *r1 = s1;	register const Wchar *r2 = s2;#ifdef __BCC__	while (n--) {		*r1++ = *r2++;	}#else	while (n) {		*r1++ = *r2++;		--n;	}#endif	return r1;}#endif/**********************************************************************/#ifdef L_memrchrvoid *memrchr(const void *s, int c, size_t n){	register const unsigned char *r;#ifdef __BCC__	/* bcc can optimize the counter if it thinks it is a pointer... */	register const char *np = (const char *) n;#else#define np n#endif		r = ((unsigned char *)s) + ((size_t) np);	while (np) {		if (*--r == ((unsigned char)c)) {			return (void *) r;	/* silence the warning */		}		--np;	}	return NULL;}#undef np#endif/**********************************************************************/#ifdef L_wcpcpy#define L_stpcpy#define Wstpcpy wcpcpy#else#define Wstpcpy stpcpy#endif#ifdef L_stpcpyWchar *Wstpcpy(register Wchar * __restrict s1, const Wchar * __restrict s2){#ifdef __BCC__	do {		*s1 = *s2++;	} while (*s1++ != 0);#else	while ( (*s1++ = *s2++) != 0 );#endif	return s1 - 1;}#endif/**********************************************************************/#ifdef L_wcpncpy#define L_stpncpy#define Wstpncpy wcpncpy#else#define Wstpncpy stpncpy#endif#ifdef L_stpncpyWchar *Wstpncpy(register Wchar * __restrict s1,

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -