|
Packit |
6c4009 |
/* Copyright (C) 1999-2018 Free Software Foundation, Inc.
|
|
Packit |
6c4009 |
This file is part of the GNU C Library.
|
|
Packit |
6c4009 |
|
|
Packit |
6c4009 |
The GNU C Library is free software; you can redistribute it and/or
|
|
Packit |
6c4009 |
modify it under the terms of the GNU Lesser General Public
|
|
Packit |
6c4009 |
License as published by the Free Software Foundation; either
|
|
Packit |
6c4009 |
version 2.1 of the License, or (at your option) any later version.
|
|
Packit |
6c4009 |
|
|
Packit |
6c4009 |
The GNU C Library is distributed in the hope that it will be useful,
|
|
Packit |
6c4009 |
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
Packit |
6c4009 |
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
Packit |
6c4009 |
Lesser General Public License for more details.
|
|
Packit |
6c4009 |
|
|
Packit |
6c4009 |
You should have received a copy of the GNU Lesser General Public
|
|
Packit |
6c4009 |
License along with the GNU C Library; if not, see
|
|
Packit |
6c4009 |
<http://www.gnu.org/licenses/>. */
|
|
Packit |
6c4009 |
|
|
Packit |
6c4009 |
/* This file contains compatibility definitions of functions that were
|
|
Packit |
6c4009 |
formerly defined as "extern inline" in string.h; it's conceivable
|
|
Packit |
6c4009 |
that old binaries contain references to them. */
|
|
Packit |
6c4009 |
|
|
Packit |
6c4009 |
#define __NO_STRING_INLINES
|
|
Packit |
6c4009 |
#include <string.h>
|
|
Packit |
6c4009 |
|
|
Packit |
6c4009 |
#include "shlib-compat.h"
|
|
Packit |
6c4009 |
|
|
Packit |
6c4009 |
#if SHLIB_COMPAT (libc, GLIBC_2_1_1, GLIBC_2_25)
|
|
Packit |
6c4009 |
/* These functions were removed from string.h in glibc 2.25. */
|
|
Packit |
6c4009 |
|
|
Packit |
6c4009 |
char *
|
|
Packit |
6c4009 |
__old_strtok_r_1c (char *__s, char __sep, char **__nextp)
|
|
Packit |
6c4009 |
{
|
|
Packit |
6c4009 |
char *__result;
|
|
Packit |
6c4009 |
if (__s == NULL)
|
|
Packit |
6c4009 |
__s = *__nextp;
|
|
Packit |
6c4009 |
while (*__s == __sep)
|
|
Packit |
6c4009 |
++__s;
|
|
Packit |
6c4009 |
__result = NULL;
|
|
Packit |
6c4009 |
if (*__s != '\0')
|
|
Packit |
6c4009 |
{
|
|
Packit |
6c4009 |
__result = __s++;
|
|
Packit |
6c4009 |
while (*__s != '\0')
|
|
Packit |
6c4009 |
if (*__s++ == __sep)
|
|
Packit |
6c4009 |
{
|
|
Packit |
6c4009 |
__s[-1] = '\0';
|
|
Packit |
6c4009 |
break;
|
|
Packit |
6c4009 |
}
|
|
Packit |
6c4009 |
}
|
|
Packit |
6c4009 |
*__nextp = __s;
|
|
Packit |
6c4009 |
return __result;
|
|
Packit |
6c4009 |
}
|
|
Packit |
6c4009 |
compat_symbol (libc, __old_strtok_r_1c, __strtok_r_1c, GLIBC_2_1_1);
|
|
Packit |
6c4009 |
|
|
Packit |
6c4009 |
char *
|
|
Packit |
6c4009 |
__old_strsep_1c (char **__s, char __reject)
|
|
Packit |
6c4009 |
{
|
|
Packit |
6c4009 |
char *__retval = *__s;
|
|
Packit |
6c4009 |
if (__retval != NULL && (*__s = strchr (__retval, __reject)) != NULL)
|
|
Packit |
6c4009 |
*(*__s)++ = '\0';
|
|
Packit |
6c4009 |
return __retval;
|
|
Packit |
6c4009 |
}
|
|
Packit |
6c4009 |
compat_symbol (libc, __old_strsep_1c, __strsep_1c, GLIBC_2_1_1);
|
|
Packit |
6c4009 |
|
|
Packit |
6c4009 |
char *
|
|
Packit |
6c4009 |
__old_strsep_2c (char **__s, char __reject1, char __reject2)
|
|
Packit |
6c4009 |
{
|
|
Packit |
6c4009 |
char *__retval = *__s;
|
|
Packit |
6c4009 |
if (__retval != NULL)
|
|
Packit |
6c4009 |
{
|
|
Packit |
6c4009 |
char *__cp = __retval;
|
|
Packit |
6c4009 |
while (1)
|
|
Packit |
6c4009 |
{
|
|
Packit |
6c4009 |
if (*__cp == '\0')
|
|
Packit |
6c4009 |
{
|
|
Packit |
6c4009 |
__cp = NULL;
|
|
Packit |
6c4009 |
break;
|
|
Packit |
6c4009 |
}
|
|
Packit |
6c4009 |
if (*__cp == __reject1 || *__cp == __reject2)
|
|
Packit |
6c4009 |
{
|
|
Packit |
6c4009 |
*__cp++ = '\0';
|
|
Packit |
6c4009 |
break;
|
|
Packit |
6c4009 |
}
|
|
Packit |
6c4009 |
++__cp;
|
|
Packit |
6c4009 |
}
|
|
Packit |
6c4009 |
*__s = __cp;
|
|
Packit |
6c4009 |
}
|
|
Packit |
6c4009 |
return __retval;
|
|
Packit |
6c4009 |
}
|
|
Packit |
6c4009 |
compat_symbol (libc, __old_strsep_2c, __strsep_2c, GLIBC_2_1_1);
|
|
Packit |
6c4009 |
|
|
Packit |
6c4009 |
char *
|
|
Packit |
6c4009 |
__old_strsep_3c (char **__s, char __reject1, char __reject2, char __reject3)
|
|
Packit |
6c4009 |
{
|
|
Packit |
6c4009 |
char *__retval = *__s;
|
|
Packit |
6c4009 |
if (__retval != NULL)
|
|
Packit |
6c4009 |
{
|
|
Packit |
6c4009 |
char *__cp = __retval;
|
|
Packit |
6c4009 |
while (1)
|
|
Packit |
6c4009 |
{
|
|
Packit |
6c4009 |
if (*__cp == '\0')
|
|
Packit |
6c4009 |
{
|
|
Packit |
6c4009 |
__cp = NULL;
|
|
Packit |
6c4009 |
break;
|
|
Packit |
6c4009 |
}
|
|
Packit |
6c4009 |
if (*__cp == __reject1 || *__cp == __reject2 || *__cp == __reject3)
|
|
Packit |
6c4009 |
{
|
|
Packit |
6c4009 |
*__cp++ = '\0';
|
|
Packit |
6c4009 |
break;
|
|
Packit |
6c4009 |
}
|
|
Packit |
6c4009 |
++__cp;
|
|
Packit |
6c4009 |
}
|
|
Packit |
6c4009 |
*__s = __cp;
|
|
Packit |
6c4009 |
}
|
|
Packit |
6c4009 |
return __retval;
|
|
Packit |
6c4009 |
}
|
|
Packit |
6c4009 |
compat_symbol (libc, __old_strsep_3c, __strsep_3c, GLIBC_2_1_1);
|
|
Packit |
6c4009 |
#endif
|
|
Packit |
6c4009 |
|
|
Packit |
6c4009 |
#if SHLIB_COMPAT (libc, GLIBC_2_1_1, GLIBC_2_24)
|
|
Packit |
6c4009 |
/* These functions were removed from string.h in glibc 2.24. */
|
|
Packit |
6c4009 |
|
|
Packit |
6c4009 |
size_t
|
|
Packit |
6c4009 |
__old_strcspn_c1 (const char *__s, int __reject)
|
|
Packit |
6c4009 |
{
|
|
Packit |
6c4009 |
size_t __result = 0;
|
|
Packit |
6c4009 |
while (__s[__result] != '\0' && __s[__result] != __reject)
|
|
Packit |
6c4009 |
++__result;
|
|
Packit |
6c4009 |
return __result;
|
|
Packit |
6c4009 |
}
|
|
Packit |
6c4009 |
compat_symbol (libc, __old_strcspn_c1, __strcspn_c1, GLIBC_2_1_1);
|
|
Packit |
6c4009 |
|
|
Packit |
6c4009 |
size_t
|
|
Packit |
6c4009 |
__old_strcspn_c2 (const char *__s, int __reject1, int __reject2)
|
|
Packit |
6c4009 |
{
|
|
Packit |
6c4009 |
size_t __result = 0;
|
|
Packit |
6c4009 |
while (__s[__result] != '\0' && __s[__result] != __reject1
|
|
Packit |
6c4009 |
&& __s[__result] != __reject2)
|
|
Packit |
6c4009 |
++__result;
|
|
Packit |
6c4009 |
return __result;
|
|
Packit |
6c4009 |
}
|
|
Packit |
6c4009 |
compat_symbol (libc, __old_strcspn_c2, __strcspn_c2, GLIBC_2_1_1);
|
|
Packit |
6c4009 |
|
|
Packit |
6c4009 |
size_t
|
|
Packit |
6c4009 |
__old_strcspn_c3 (const char *__s, int __reject1, int __reject2,
|
|
Packit |
6c4009 |
int __reject3)
|
|
Packit |
6c4009 |
{
|
|
Packit |
6c4009 |
size_t __result = 0;
|
|
Packit |
6c4009 |
while (__s[__result] != '\0' && __s[__result] != __reject1
|
|
Packit |
6c4009 |
&& __s[__result] != __reject2 && __s[__result] != __reject3)
|
|
Packit |
6c4009 |
++__result;
|
|
Packit |
6c4009 |
return __result;
|
|
Packit |
6c4009 |
}
|
|
Packit |
6c4009 |
compat_symbol (libc, __old_strcspn_c3, __strcspn_c3, GLIBC_2_1_1);
|
|
Packit |
6c4009 |
|
|
Packit |
6c4009 |
size_t
|
|
Packit |
6c4009 |
__old_strspn_c1 (const char *__s, int __accept)
|
|
Packit |
6c4009 |
{
|
|
Packit |
6c4009 |
size_t __result = 0;
|
|
Packit |
6c4009 |
/* Please note that __accept never can be '\0'. */
|
|
Packit |
6c4009 |
while (__s[__result] == __accept)
|
|
Packit |
6c4009 |
++__result;
|
|
Packit |
6c4009 |
return __result;
|
|
Packit |
6c4009 |
}
|
|
Packit |
6c4009 |
compat_symbol (libc, __old_strspn_c1, __strspn_c1, GLIBC_2_1_1);
|
|
Packit |
6c4009 |
|
|
Packit |
6c4009 |
size_t
|
|
Packit |
6c4009 |
__old_strspn_c2 (const char *__s, int __accept1, int __accept2)
|
|
Packit |
6c4009 |
{
|
|
Packit |
6c4009 |
size_t __result = 0;
|
|
Packit |
6c4009 |
/* Please note that __accept1 and __accept2 never can be '\0'. */
|
|
Packit |
6c4009 |
while (__s[__result] == __accept1 || __s[__result] == __accept2)
|
|
Packit |
6c4009 |
++__result;
|
|
Packit |
6c4009 |
return __result;
|
|
Packit |
6c4009 |
}
|
|
Packit |
6c4009 |
compat_symbol (libc, __old_strspn_c2, __strspn_c2, GLIBC_2_1_1);
|
|
Packit |
6c4009 |
|
|
Packit |
6c4009 |
size_t
|
|
Packit |
6c4009 |
__old_strspn_c3 (const char *__s, int __accept1, int __accept2,
|
|
Packit |
6c4009 |
int __accept3)
|
|
Packit |
6c4009 |
{
|
|
Packit |
6c4009 |
size_t __result = 0;
|
|
Packit |
6c4009 |
/* Please note that __accept1 to __accept3 never can be '\0'. */
|
|
Packit |
6c4009 |
while (__s[__result] == __accept1 || __s[__result] == __accept2
|
|
Packit |
6c4009 |
|| __s[__result] == __accept3)
|
|
Packit |
6c4009 |
++__result;
|
|
Packit |
6c4009 |
return __result;
|
|
Packit |
6c4009 |
}
|
|
Packit |
6c4009 |
compat_symbol (libc, __old_strspn_c3, __strspn_c3, GLIBC_2_1_1);
|
|
Packit |
6c4009 |
|
|
Packit |
6c4009 |
char *
|
|
Packit |
6c4009 |
__old_strpbrk_c2 (const char *__s, int __accept1, int __accept2)
|
|
Packit |
6c4009 |
{
|
|
Packit |
6c4009 |
/* Please note that __accept1 and __accept2 never can be '\0'. */
|
|
Packit |
6c4009 |
while (*__s != '\0' && *__s != __accept1 && *__s != __accept2)
|
|
Packit |
6c4009 |
++__s;
|
|
Packit |
6c4009 |
return *__s == '\0' ? NULL : (char *) (size_t) __s;
|
|
Packit |
6c4009 |
}
|
|
Packit |
6c4009 |
compat_symbol (libc, __old_strpbrk_c2, __strpbrk_c2, GLIBC_2_1_1);
|
|
Packit |
6c4009 |
|
|
Packit |
6c4009 |
char *
|
|
Packit |
6c4009 |
__old_strpbrk_c3 (const char *__s, int __accept1, int __accept2, int __accept3)
|
|
Packit |
6c4009 |
{
|
|
Packit |
6c4009 |
/* Please note that __accept1 to __accept3 never can be '\0'. */
|
|
Packit |
6c4009 |
while (*__s != '\0' && *__s != __accept1 && *__s != __accept2
|
|
Packit |
6c4009 |
&& *__s != __accept3)
|
|
Packit |
6c4009 |
++__s;
|
|
Packit |
6c4009 |
return *__s == '\0' ? NULL : (char *) (size_t) __s;
|
|
Packit |
6c4009 |
}
|
|
Packit |
6c4009 |
compat_symbol (libc, __old_strpbrk_c3, __strpbrk_c3, GLIBC_2_1_1);
|
|
Packit |
6c4009 |
|
|
Packit |
6c4009 |
# if defined __mc68020__ || defined __s390__ || defined __i386__
|
|
Packit |
6c4009 |
# define _STRING_INLINE_unaligned 1
|
|
Packit |
6c4009 |
# else
|
|
Packit |
6c4009 |
# define _STRING_INLINE_unaligned 0
|
|
Packit |
6c4009 |
/* These are a few types we need for the optimizations if we cannot
|
|
Packit |
6c4009 |
use unaligned memory accesses. */
|
|
Packit |
6c4009 |
# define __STRING2_COPY_TYPE(N) \
|
|
Packit |
6c4009 |
typedef struct { unsigned char __arr[N]; } \
|
|
Packit |
6c4009 |
__attribute__ ((__packed__)) __STRING2_COPY_ARR##N
|
|
Packit |
6c4009 |
__STRING2_COPY_TYPE (2);
|
|
Packit |
6c4009 |
__STRING2_COPY_TYPE (3);
|
|
Packit |
6c4009 |
__STRING2_COPY_TYPE (4);
|
|
Packit |
6c4009 |
__STRING2_COPY_TYPE (5);
|
|
Packit |
6c4009 |
__STRING2_COPY_TYPE (6);
|
|
Packit |
6c4009 |
__STRING2_COPY_TYPE (7);
|
|
Packit |
6c4009 |
__STRING2_COPY_TYPE (8);
|
|
Packit |
6c4009 |
# undef __STRING2_COPY_TYPE
|
|
Packit |
6c4009 |
# endif
|
|
Packit |
6c4009 |
|
|
Packit |
6c4009 |
# if _STRING_INLINE_unaligned
|
|
Packit |
6c4009 |
void *
|
|
Packit |
6c4009 |
__old_mempcpy_small (void *__dest1,
|
|
Packit |
6c4009 |
char __src0_1, char __src2_1, char __src4_1, char __src6_1,
|
|
Packit |
6c4009 |
__uint16_t __src0_2, __uint16_t __src4_2,
|
|
Packit |
6c4009 |
__uint32_t __src0_4, __uint32_t __src4_4,
|
|
Packit |
6c4009 |
size_t __srclen)
|
|
Packit |
6c4009 |
{
|
|
Packit |
6c4009 |
union {
|
|
Packit |
6c4009 |
__uint32_t __ui;
|
|
Packit |
6c4009 |
__uint16_t __usi;
|
|
Packit |
6c4009 |
unsigned char __uc;
|
|
Packit |
6c4009 |
unsigned char __c;
|
|
Packit |
6c4009 |
} *__u = __dest1;
|
|
Packit |
6c4009 |
switch ((unsigned int) __srclen)
|
|
Packit |
6c4009 |
{
|
|
Packit |
6c4009 |
case 1:
|
|
Packit |
6c4009 |
__u->__c = __src0_1;
|
|
Packit |
6c4009 |
__u = __extension__ ((void *) __u + 1);
|
|
Packit |
6c4009 |
break;
|
|
Packit |
6c4009 |
case 2:
|
|
Packit |
6c4009 |
__u->__usi = __src0_2;
|
|
Packit |
6c4009 |
__u = __extension__ ((void *) __u + 2);
|
|
Packit |
6c4009 |
break;
|
|
Packit |
6c4009 |
case 3:
|
|
Packit |
6c4009 |
__u->__usi = __src0_2;
|
|
Packit |
6c4009 |
__u = __extension__ ((void *) __u + 2);
|
|
Packit |
6c4009 |
__u->__c = __src2_1;
|
|
Packit |
6c4009 |
__u = __extension__ ((void *) __u + 1);
|
|
Packit |
6c4009 |
break;
|
|
Packit |
6c4009 |
case 4:
|
|
Packit |
6c4009 |
__u->__ui = __src0_4;
|
|
Packit |
6c4009 |
__u = __extension__ ((void *) __u + 4);
|
|
Packit |
6c4009 |
break;
|
|
Packit |
6c4009 |
case 5:
|
|
Packit |
6c4009 |
__u->__ui = __src0_4;
|
|
Packit |
6c4009 |
__u = __extension__ ((void *) __u + 4);
|
|
Packit |
6c4009 |
__u->__c = __src4_1;
|
|
Packit |
6c4009 |
__u = __extension__ ((void *) __u + 1);
|
|
Packit |
6c4009 |
break;
|
|
Packit |
6c4009 |
case 6:
|
|
Packit |
6c4009 |
__u->__ui = __src0_4;
|
|
Packit |
6c4009 |
__u = __extension__ ((void *) __u + 4);
|
|
Packit |
6c4009 |
__u->__usi = __src4_2;
|
|
Packit |
6c4009 |
__u = __extension__ ((void *) __u + 2);
|
|
Packit |
6c4009 |
break;
|
|
Packit |
6c4009 |
case 7:
|
|
Packit |
6c4009 |
__u->__ui = __src0_4;
|
|
Packit |
6c4009 |
__u = __extension__ ((void *) __u + 4);
|
|
Packit |
6c4009 |
__u->__usi = __src4_2;
|
|
Packit |
6c4009 |
__u = __extension__ ((void *) __u + 2);
|
|
Packit |
6c4009 |
__u->__c = __src6_1;
|
|
Packit |
6c4009 |
__u = __extension__ ((void *) __u + 1);
|
|
Packit |
6c4009 |
break;
|
|
Packit |
6c4009 |
case 8:
|
|
Packit |
6c4009 |
__u->__ui = __src0_4;
|
|
Packit |
6c4009 |
__u = __extension__ ((void *) __u + 4);
|
|
Packit |
6c4009 |
__u->__ui = __src4_4;
|
|
Packit |
6c4009 |
__u = __extension__ ((void *) __u + 4);
|
|
Packit |
6c4009 |
break;
|
|
Packit |
6c4009 |
}
|
|
Packit |
6c4009 |
return (void *) __u;
|
|
Packit |
6c4009 |
}
|
|
Packit |
6c4009 |
|
|
Packit |
6c4009 |
# else
|
|
Packit |
6c4009 |
|
|
Packit |
6c4009 |
void *
|
|
Packit |
6c4009 |
__old_mempcpy_small (void *__dest, char __src1,
|
|
Packit |
6c4009 |
__STRING2_COPY_ARR2 __src2, __STRING2_COPY_ARR3 __src3,
|
|
Packit |
6c4009 |
__STRING2_COPY_ARR4 __src4, __STRING2_COPY_ARR5 __src5,
|
|
Packit |
6c4009 |
__STRING2_COPY_ARR6 __src6, __STRING2_COPY_ARR7 __src7,
|
|
Packit |
6c4009 |
__STRING2_COPY_ARR8 __src8, size_t __srclen)
|
|
Packit |
6c4009 |
{
|
|
Packit |
6c4009 |
union {
|
|
Packit |
6c4009 |
char __c;
|
|
Packit |
6c4009 |
__STRING2_COPY_ARR2 __sca2;
|
|
Packit |
6c4009 |
__STRING2_COPY_ARR3 __sca3;
|
|
Packit |
6c4009 |
__STRING2_COPY_ARR4 __sca4;
|
|
Packit |
6c4009 |
__STRING2_COPY_ARR5 __sca5;
|
|
Packit |
6c4009 |
__STRING2_COPY_ARR6 __sca6;
|
|
Packit |
6c4009 |
__STRING2_COPY_ARR7 __sca7;
|
|
Packit |
6c4009 |
__STRING2_COPY_ARR8 __sca8;
|
|
Packit |
6c4009 |
} *__u = __dest;
|
|
Packit |
6c4009 |
switch ((unsigned int) __srclen)
|
|
Packit |
6c4009 |
{
|
|
Packit |
6c4009 |
case 1:
|
|
Packit |
6c4009 |
__u->__c = __src1;
|
|
Packit |
6c4009 |
break;
|
|
Packit |
6c4009 |
case 2:
|
|
Packit |
6c4009 |
__extension__ __u->__sca2 = __src2;
|
|
Packit |
6c4009 |
break;
|
|
Packit |
6c4009 |
case 3:
|
|
Packit |
6c4009 |
__extension__ __u->__sca3 = __src3;
|
|
Packit |
6c4009 |
break;
|
|
Packit |
6c4009 |
case 4:
|
|
Packit |
6c4009 |
__extension__ __u->__sca4 = __src4;
|
|
Packit |
6c4009 |
break;
|
|
Packit |
6c4009 |
case 5:
|
|
Packit |
6c4009 |
__extension__ __u->__sca5 = __src5;
|
|
Packit |
6c4009 |
break;
|
|
Packit |
6c4009 |
case 6:
|
|
Packit |
6c4009 |
__extension__ __u->__sca6 = __src6;
|
|
Packit |
6c4009 |
break;
|
|
Packit |
6c4009 |
case 7:
|
|
Packit |
6c4009 |
__extension__ __u->__sca7 = __src7;
|
|
Packit |
6c4009 |
break;
|
|
Packit |
6c4009 |
case 8:
|
|
Packit |
6c4009 |
__extension__ __u->__sca8 = __src8;
|
|
Packit |
6c4009 |
break;
|
|
Packit |
6c4009 |
}
|
|
Packit |
6c4009 |
return __extension__ ((void *) __u + __srclen);
|
|
Packit |
6c4009 |
}
|
|
Packit |
6c4009 |
# endif
|
|
Packit |
6c4009 |
compat_symbol (libc, __old_mempcpy_small, __mempcpy_small, GLIBC_2_1_1);
|
|
Packit |
6c4009 |
|
|
Packit |
6c4009 |
# if _STRING_INLINE_unaligned
|
|
Packit |
6c4009 |
char *
|
|
Packit |
6c4009 |
__old_strcpy_small (char *__dest,
|
|
Packit |
6c4009 |
__uint16_t __src0_2, __uint16_t __src4_2,
|
|
Packit |
6c4009 |
__uint32_t __src0_4, __uint32_t __src4_4,
|
|
Packit |
6c4009 |
size_t __srclen)
|
|
Packit |
6c4009 |
{
|
|
Packit |
6c4009 |
union {
|
|
Packit |
6c4009 |
__uint32_t __ui;
|
|
Packit |
6c4009 |
__uint16_t __usi;
|
|
Packit |
6c4009 |
unsigned char __uc;
|
|
Packit |
6c4009 |
} *__u = (void *) __dest;
|
|
Packit |
6c4009 |
switch ((unsigned int) __srclen)
|
|
Packit |
6c4009 |
{
|
|
Packit |
6c4009 |
case 1:
|
|
Packit |
6c4009 |
__u->__uc = '\0';
|
|
Packit |
6c4009 |
break;
|
|
Packit |
6c4009 |
case 2:
|
|
Packit |
6c4009 |
__u->__usi = __src0_2;
|
|
Packit |
6c4009 |
break;
|
|
Packit |
6c4009 |
case 3:
|
|
Packit |
6c4009 |
__u->__usi = __src0_2;
|
|
Packit |
6c4009 |
__u = __extension__ ((void *) __u + 2);
|
|
Packit |
6c4009 |
__u->__uc = '\0';
|
|
Packit |
6c4009 |
break;
|
|
Packit |
6c4009 |
case 4:
|
|
Packit |
6c4009 |
__u->__ui = __src0_4;
|
|
Packit |
6c4009 |
break;
|
|
Packit |
6c4009 |
case 5:
|
|
Packit |
6c4009 |
__u->__ui = __src0_4;
|
|
Packit |
6c4009 |
__u = __extension__ ((void *) __u + 4);
|
|
Packit |
6c4009 |
__u->__uc = '\0';
|
|
Packit |
6c4009 |
break;
|
|
Packit |
6c4009 |
case 6:
|
|
Packit |
6c4009 |
__u->__ui = __src0_4;
|
|
Packit |
6c4009 |
__u = __extension__ ((void *) __u + 4);
|
|
Packit |
6c4009 |
__u->__usi = __src4_2;
|
|
Packit |
6c4009 |
break;
|
|
Packit |
6c4009 |
case 7:
|
|
Packit |
6c4009 |
__u->__ui = __src0_4;
|
|
Packit |
6c4009 |
__u = __extension__ ((void *) __u + 4);
|
|
Packit |
6c4009 |
__u->__usi = __src4_2;
|
|
Packit |
6c4009 |
__u = __extension__ ((void *) __u + 2);
|
|
Packit |
6c4009 |
__u->__uc = '\0';
|
|
Packit |
6c4009 |
break;
|
|
Packit |
6c4009 |
case 8:
|
|
Packit |
6c4009 |
__u->__ui = __src0_4;
|
|
Packit |
6c4009 |
__u = __extension__ ((void *) __u + 4);
|
|
Packit |
6c4009 |
__u->__ui = __src4_4;
|
|
Packit |
6c4009 |
break;
|
|
Packit |
6c4009 |
}
|
|
Packit |
6c4009 |
return __dest;
|
|
Packit |
6c4009 |
}
|
|
Packit |
6c4009 |
|
|
Packit |
6c4009 |
# else
|
|
Packit |
6c4009 |
|
|
Packit |
6c4009 |
char *
|
|
Packit |
6c4009 |
__old_strcpy_small (char *__dest,
|
|
Packit |
6c4009 |
__STRING2_COPY_ARR2 __src2, __STRING2_COPY_ARR3 __src3,
|
|
Packit |
6c4009 |
__STRING2_COPY_ARR4 __src4, __STRING2_COPY_ARR5 __src5,
|
|
Packit |
6c4009 |
__STRING2_COPY_ARR6 __src6, __STRING2_COPY_ARR7 __src7,
|
|
Packit |
6c4009 |
__STRING2_COPY_ARR8 __src8, size_t __srclen)
|
|
Packit |
6c4009 |
{
|
|
Packit |
6c4009 |
union {
|
|
Packit |
6c4009 |
char __c;
|
|
Packit |
6c4009 |
__STRING2_COPY_ARR2 __sca2;
|
|
Packit |
6c4009 |
__STRING2_COPY_ARR3 __sca3;
|
|
Packit |
6c4009 |
__STRING2_COPY_ARR4 __sca4;
|
|
Packit |
6c4009 |
__STRING2_COPY_ARR5 __sca5;
|
|
Packit |
6c4009 |
__STRING2_COPY_ARR6 __sca6;
|
|
Packit |
6c4009 |
__STRING2_COPY_ARR7 __sca7;
|
|
Packit |
6c4009 |
__STRING2_COPY_ARR8 __sca8;
|
|
Packit |
6c4009 |
} *__u = (void *) __dest;
|
|
Packit |
6c4009 |
switch ((unsigned int) __srclen)
|
|
Packit |
6c4009 |
{
|
|
Packit |
6c4009 |
case 1:
|
|
Packit |
6c4009 |
__u->__c = '\0';
|
|
Packit |
6c4009 |
break;
|
|
Packit |
6c4009 |
case 2:
|
|
Packit |
6c4009 |
__extension__ __u->__sca2 = __src2;
|
|
Packit |
6c4009 |
break;
|
|
Packit |
6c4009 |
case 3:
|
|
Packit |
6c4009 |
__extension__ __u->__sca3 = __src3;
|
|
Packit |
6c4009 |
break;
|
|
Packit |
6c4009 |
case 4:
|
|
Packit |
6c4009 |
__extension__ __u->__sca4 = __src4;
|
|
Packit |
6c4009 |
break;
|
|
Packit |
6c4009 |
case 5:
|
|
Packit |
6c4009 |
__extension__ __u->__sca5 = __src5;
|
|
Packit |
6c4009 |
break;
|
|
Packit |
6c4009 |
case 6:
|
|
Packit |
6c4009 |
__extension__ __u->__sca6 = __src6;
|
|
Packit |
6c4009 |
break;
|
|
Packit |
6c4009 |
case 7:
|
|
Packit |
6c4009 |
__extension__ __u->__sca7 = __src7;
|
|
Packit |
6c4009 |
break;
|
|
Packit |
6c4009 |
case 8:
|
|
Packit |
6c4009 |
__extension__ __u->__sca8 = __src8;
|
|
Packit |
6c4009 |
break;
|
|
Packit |
6c4009 |
}
|
|
Packit |
6c4009 |
return __dest;
|
|
Packit |
6c4009 |
}
|
|
Packit |
6c4009 |
# endif
|
|
Packit |
6c4009 |
compat_symbol (libc, __old_strcpy_small, __strcpy_small, GLIBC_2_1_1);
|
|
Packit |
6c4009 |
|
|
Packit |
6c4009 |
# if _STRING_INLINE_unaligned
|
|
Packit |
6c4009 |
char *
|
|
Packit |
6c4009 |
__old_stpcpy_small (char *__dest,
|
|
Packit |
6c4009 |
__uint16_t __src0_2, __uint16_t __src4_2,
|
|
Packit |
6c4009 |
__uint32_t __src0_4, __uint32_t __src4_4,
|
|
Packit |
6c4009 |
size_t __srclen)
|
|
Packit |
6c4009 |
{
|
|
Packit |
6c4009 |
union {
|
|
Packit |
6c4009 |
unsigned int __ui;
|
|
Packit |
6c4009 |
unsigned short int __usi;
|
|
Packit |
6c4009 |
unsigned char __uc;
|
|
Packit |
6c4009 |
char __c;
|
|
Packit |
6c4009 |
} *__u = (void *) __dest;
|
|
Packit |
6c4009 |
switch ((unsigned int) __srclen)
|
|
Packit |
6c4009 |
{
|
|
Packit |
6c4009 |
case 1:
|
|
Packit |
6c4009 |
__u->__uc = '\0';
|
|
Packit |
6c4009 |
break;
|
|
Packit |
6c4009 |
case 2:
|
|
Packit |
6c4009 |
__u->__usi = __src0_2;
|
|
Packit |
6c4009 |
__u = __extension__ ((void *) __u + 1);
|
|
Packit |
6c4009 |
break;
|
|
Packit |
6c4009 |
case 3:
|
|
Packit |
6c4009 |
__u->__usi = __src0_2;
|
|
Packit |
6c4009 |
__u = __extension__ ((void *) __u + 2);
|
|
Packit |
6c4009 |
__u->__uc = '\0';
|
|
Packit |
6c4009 |
break;
|
|
Packit |
6c4009 |
case 4:
|
|
Packit |
6c4009 |
__u->__ui = __src0_4;
|
|
Packit |
6c4009 |
__u = __extension__ ((void *) __u + 3);
|
|
Packit |
6c4009 |
break;
|
|
Packit |
6c4009 |
case 5:
|
|
Packit |
6c4009 |
__u->__ui = __src0_4;
|
|
Packit |
6c4009 |
__u = __extension__ ((void *) __u + 4);
|
|
Packit |
6c4009 |
__u->__uc = '\0';
|
|
Packit |
6c4009 |
break;
|
|
Packit |
6c4009 |
case 6:
|
|
Packit |
6c4009 |
__u->__ui = __src0_4;
|
|
Packit |
6c4009 |
__u = __extension__ ((void *) __u + 4);
|
|
Packit |
6c4009 |
__u->__usi = __src4_2;
|
|
Packit |
6c4009 |
__u = __extension__ ((void *) __u + 1);
|
|
Packit |
6c4009 |
break;
|
|
Packit |
6c4009 |
case 7:
|
|
Packit |
6c4009 |
__u->__ui = __src0_4;
|
|
Packit |
6c4009 |
__u = __extension__ ((void *) __u + 4);
|
|
Packit |
6c4009 |
__u->__usi = __src4_2;
|
|
Packit |
6c4009 |
__u = __extension__ ((void *) __u + 2);
|
|
Packit |
6c4009 |
__u->__uc = '\0';
|
|
Packit |
6c4009 |
break;
|
|
Packit |
6c4009 |
case 8:
|
|
Packit |
6c4009 |
__u->__ui = __src0_4;
|
|
Packit |
6c4009 |
__u = __extension__ ((void *) __u + 4);
|
|
Packit |
6c4009 |
__u->__ui = __src4_4;
|
|
Packit |
6c4009 |
__u = __extension__ ((void *) __u + 3);
|
|
Packit |
6c4009 |
break;
|
|
Packit |
6c4009 |
}
|
|
Packit |
6c4009 |
return &__u->__c;
|
|
Packit |
6c4009 |
}
|
|
Packit |
6c4009 |
|
|
Packit |
6c4009 |
# else
|
|
Packit |
6c4009 |
|
|
Packit |
6c4009 |
char *
|
|
Packit |
6c4009 |
__old_stpcpy_small (char *__dest,
|
|
Packit |
6c4009 |
__STRING2_COPY_ARR2 __src2, __STRING2_COPY_ARR3 __src3,
|
|
Packit |
6c4009 |
__STRING2_COPY_ARR4 __src4, __STRING2_COPY_ARR5 __src5,
|
|
Packit |
6c4009 |
__STRING2_COPY_ARR6 __src6, __STRING2_COPY_ARR7 __src7,
|
|
Packit |
6c4009 |
__STRING2_COPY_ARR8 __src8, size_t __srclen)
|
|
Packit |
6c4009 |
{
|
|
Packit |
6c4009 |
union {
|
|
Packit |
6c4009 |
char __c;
|
|
Packit |
6c4009 |
__STRING2_COPY_ARR2 __sca2;
|
|
Packit |
6c4009 |
__STRING2_COPY_ARR3 __sca3;
|
|
Packit |
6c4009 |
__STRING2_COPY_ARR4 __sca4;
|
|
Packit |
6c4009 |
__STRING2_COPY_ARR5 __sca5;
|
|
Packit |
6c4009 |
__STRING2_COPY_ARR6 __sca6;
|
|
Packit |
6c4009 |
__STRING2_COPY_ARR7 __sca7;
|
|
Packit |
6c4009 |
__STRING2_COPY_ARR8 __sca8;
|
|
Packit |
6c4009 |
} *__u = (void *) __dest;
|
|
Packit |
6c4009 |
switch ((unsigned int) __srclen)
|
|
Packit |
6c4009 |
{
|
|
Packit |
6c4009 |
case 1:
|
|
Packit |
6c4009 |
__u->__c = '\0';
|
|
Packit |
6c4009 |
break;
|
|
Packit |
6c4009 |
case 2:
|
|
Packit |
6c4009 |
__extension__ __u->__sca2 = __src2;
|
|
Packit |
6c4009 |
break;
|
|
Packit |
6c4009 |
case 3:
|
|
Packit |
6c4009 |
__extension__ __u->__sca3 = __src3;
|
|
Packit |
6c4009 |
break;
|
|
Packit |
6c4009 |
case 4:
|
|
Packit |
6c4009 |
__extension__ __u->__sca4 = __src4;
|
|
Packit |
6c4009 |
break;
|
|
Packit |
6c4009 |
case 5:
|
|
Packit |
6c4009 |
__extension__ __u->__sca5 = __src5;
|
|
Packit |
6c4009 |
break;
|
|
Packit |
6c4009 |
case 6:
|
|
Packit |
6c4009 |
__extension__ __u->__sca6 = __src6;
|
|
Packit |
6c4009 |
break;
|
|
Packit |
6c4009 |
case 7:
|
|
Packit |
6c4009 |
__extension__ __u->__sca7 = __src7;
|
|
Packit |
6c4009 |
break;
|
|
Packit |
6c4009 |
case 8:
|
|
Packit |
6c4009 |
__extension__ __u->__sca8 = __src8;
|
|
Packit |
6c4009 |
break;
|
|
Packit |
6c4009 |
}
|
|
Packit |
6c4009 |
return __dest + __srclen - 1;
|
|
Packit |
6c4009 |
}
|
|
Packit |
6c4009 |
# endif
|
|
Packit |
6c4009 |
compat_symbol (libc, __old_stpcpy_small, __stpcpy_small, GLIBC_2_1_1);
|
|
Packit |
6c4009 |
|
|
Packit |
6c4009 |
#endif
|