| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950 | /* * Copyright (C) 2006-2007 Axis Communications AB * * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball. */#include <string.h>char *strcpy(char *dest, const char *src){  char *ret = dest;  unsigned long himagic = 0x80808080L;  unsigned long lomagic = 0x01010101L;  while ((unsigned long)src & (sizeof src - 1))  {    if (!(*dest++ = *src++))    {      return ret;    }  }  while (1)  {    unsigned long value = *(unsigned long*)src;    unsigned long magic;    src += sizeof (unsigned long);    if ((magic = (value - lomagic) & himagic))    {      if (magic & ~value)      {        break;      }    }    *(unsigned long*)dest = value;    dest += sizeof (unsigned long);  }  src -= sizeof (unsigned long);  while ((*dest++ = *src++))  {  }  return ret;}libc_hidden_def(strcpy)
 |