Add stpcpy()

This commit is contained in:
Gregory Nutt 2014-01-09 14:08:48 -06:00
parent 75390a49a4
commit 4e2c140124
4 changed files with 57 additions and 42 deletions

View File

@ -6408,4 +6408,4 @@
files): Add support for the XPT2046 touchscreen controller on
the Viewtool LCD module connected to the Viewtool STM32F103
board (2014-1-9).
* libc/strings/lib_stpcpy.c: Add stpcpy() (2014-1-9).

View File

@ -1,7 +1,7 @@
/****************************************************************************
* include/string.h
*
* Copyright (C) 2007-2012 Gregory Nutt. All rights reserved.
* Copyright (C) 2007-2012, 2014 Gregory Nutt. All rights reserved.
* Author: Gregory Nutt <gnutt@nuttx.org>
*
* Redistribution and use in source and binary forms, with or without
@ -62,40 +62,42 @@
#undef EXTERN
#if defined(__cplusplus)
#define EXTERN extern "C"
extern "C" {
extern "C"
{
#else
#define EXTERN extern
#endif
EXTERN FAR char *strdup(FAR const char *s);
EXTERN FAR char *strndup(FAR const char *s, size_t size);
EXTERN FAR const char *strerror(int);
EXTERN size_t strlen(FAR const char *);
EXTERN size_t strnlen(FAR const char *, size_t);
EXTERN FAR char *strcat(FAR char *, FAR const char *);
EXTERN FAR char *strncat(FAR char *, FAR const char *, size_t);
EXTERN int strcmp(FAR const char *, FAR const char *);
EXTERN int strncmp(FAR const char *, FAR const char *, size_t);
EXTERN int strcasecmp(FAR const char *, FAR const char *);
EXTERN int strncasecmp(FAR const char *, FAR const char *, size_t);
EXTERN FAR char *strcpy(char *dest, FAR const char *src);
EXTERN FAR char *strncpy(char *, FAR const char *, size_t);
EXTERN FAR char *strpbrk(FAR const char *, FAR const char *);
EXTERN FAR char *strchr(FAR const char *s, int c);
EXTERN FAR char *strrchr(FAR const char *s, int c);
EXTERN size_t strspn(FAR const char *, FAR const char *);
EXTERN size_t strcspn(FAR const char *, FAR const char *);
EXTERN FAR char *strstr(FAR const char *, FAR const char *);
EXTERN FAR char *strcasestr(FAR const char *, FAR const char *);
EXTERN FAR char *strtok(FAR char *, FAR const char *);
EXTERN FAR char *strtok_r(FAR char *, FAR const char *, FAR char **);
FAR char *strdup(FAR const char *s);
FAR char *strndup(FAR const char *s, size_t size);
FAR const char *strerror(int);
size_t strlen(FAR const char *);
size_t strnlen(FAR const char *, size_t);
FAR char *strcat(FAR char *, FAR const char *);
FAR char *strncat(FAR char *, FAR const char *, size_t);
int strcmp(FAR const char *, FAR const char *);
int strncmp(FAR const char *, FAR const char *, size_t);
int strcasecmp(FAR const char *, FAR const char *);
int strncasecmp(FAR const char *, FAR const char *, size_t);
FAR char *strcpy(char *dest, FAR const char *src);
FAR char *stpcpy(char *dest, FAR const char *src);
FAR char *strncpy(char *, FAR const char *, size_t);
FAR char *strpbrk(FAR const char *, FAR const char *);
FAR char *strchr(FAR const char *s, int c);
FAR char *strrchr(FAR const char *s, int c);
size_t strspn(FAR const char *, FAR const char *);
size_t strcspn(FAR const char *, FAR const char *);
FAR char *strstr(FAR const char *, FAR const char *);
FAR char *strcasestr(FAR const char *, FAR const char *);
FAR char *strtok(FAR char *, FAR const char *);
FAR char *strtok_r(FAR char *, FAR const char *, FAR char **);
EXTERN FAR void *memchr(FAR const void *s, int c, size_t n);
EXTERN FAR void *memccpy(FAR void *s1, FAR const void *s2, int c, size_t n);
EXTERN int memcmp(FAR const void *s1, FAR const void *s2, size_t n);
EXTERN FAR void *memcpy(FAR void *dest, FAR const void *src, size_t n);
EXTERN FAR void *memmove(FAR void *dest, FAR const void *src, size_t count);
EXTERN FAR void *memset(FAR void *s, int c, size_t n);
FAR void *memchr(FAR const void *s, int c, size_t n);
FAR void *memccpy(FAR void *s1, FAR const void *s2, int c, size_t n);
int memcmp(FAR const void *s1, FAR const void *s2, size_t n);
FAR void *memcpy(FAR void *dest, FAR const void *src, size_t n);
FAR void *memmove(FAR void *dest, FAR const void *src, size_t count);
FAR void *memset(FAR void *s, int c, size_t n);
#undef EXTERN
#if defined(__cplusplus)

View File

@ -35,14 +35,15 @@
# Add the string C files to the build
CSRCS += lib_checkbase.c lib_isbasedigit.c lib_memset.c lib_memchr.c \
lib_memccpy.c lib_memcmp.c lib_memmove.c lib_skipspace.c \
lib_strcasecmp.c lib_strcat.c lib_strchr.c lib_strcpy.c lib_strcmp.c \
lib_strcspn.c lib_strdup.c lib_strerror.c lib_strlen.c lib_strnlen.c \
lib_strncasecmp.c lib_strncat.c lib_strncmp.c lib_strncpy.c \
lib_strndup.c lib_strcasestr.c lib_strpbrk.c lib_strrchr.c\
lib_strspn.c lib_strstr.c lib_strtok.c lib_strtokr.c lib_strtol.c \
lib_strtoll.c lib_strtoul.c lib_strtoull.c lib_strtod.c
CSRCS += lib_checkbase.c lib_isbasedigit.c lib_memset.c lib_memchr.c
CSRCS += lib_memccpy.c lib_memcmp.c lib_memmove.c lib_skipspace.c
CSRCS += lib_stpcpy.c lib_strcasecmp.c lib_strcat.c lib_strchr.c
CSRCS += lib_strcpy.c lib_strcmp.c lib_strcspn.c lib_strdup.c lib_strerror.c
CSRCS += lib_strlen.c lib_strnlen.c lib_strncasecmp.c lib_strncat.c
CSRCS += lib_strncmp.c lib_strncpy.c lib_strndup.c lib_strcasestr.c
CSRCS += lib_strpbrk.c lib_strrchr.c lib_strspn.c lib_strstr.c lib_strtok.c
CSRCS += lib_strtokr.c lib_strtol.c lib_strtoll.c lib_strtoul.c
CSRCS += lib_strtoull.c lib_strtod.c
ifneq ($(CONFIG_ARCH_MEMCPY),y)
ifeq ($(CONFIG_MEMCPY_VIK),y)

View File

@ -1,7 +1,7 @@
/************************************************************************
* libc/string/lib_strcpy.c
*
* Copyright (C) 2007, 2009, 2011 Gregory Nutt. All rights reserved.
* Copyright (C) 2007, 2009, 2011, 2014 Gregory Nutt. All rights reserved.
* Author: Gregory Nutt <gnutt@nuttx.org>
*
* Redistribution and use in source and binary forms, with or without
@ -42,11 +42,23 @@
#include <string.h>
/************************************************************************
* Global Functions
* Public Functions
************************************************************************/
/************************************************************************
* Name: strcpy
*
* Description:
* Copies the string pointed to by 'src' (including the terminating NUL
* character) into the array pointed to by 'des'.
*
* Returned value:
* The strcpy() function returns the 'dest' pointer
*
************************************************************************/
#ifndef CONFIG_ARCH_STRCPY
char *strcpy(char *dest, const char *src)
FAR char *strcpy(FAR char *dest, FAR const char *src)
{
char *tmp = dest;
while ((*dest++ = *src++) != '\0');