News for hackers. Stuff that matters.
Re:Unix v6 Ported to ANSI C by suivix on Tuesday November 08, 2011 @10:28PM (#3214124)
Here is a standard implementation I found from some code at work.

    /* memmove.c -- copy memory.                                                                                                                                    
       Copy LENGTH bytes from SOURCE to DEST.  Does not null-terminate.                                                                                             
       In the public domain.                                                                                                                                        
       By David MacKenzie <[email protected]>.  */                                                                                                                 
                                                                                                                                                                
    #if HAVE_CONFIG_H                                                                                                                                               
    # include <config.h>                                                                                                                                            
    #endif                                                                                                                                                          
                                                                                                                                                                    
    void *                                                                                                                                                          
    memmove (dest, source, length)                                                                                                                                  
         char *dest;                                                                                                                                                
         const char *source;                                                                                                                                        
         unsigned length;                                                                                                                                           
    {                                                                                                                                                               
      char *d0 = dest;                                                                                                                                              
      if (source < dest)                                                                                                                                            
        /* Moving from low mem to hi mem; start at end.  */                                                                                                         
        for (source += length, dest += length; length; --length)                                                                                                    
          *--dest = *--source;                                                                                                                                      
      else if (source != dest)                                                                                                                                      
        {                                                                                                                                                           
          /* Moving from hi mem to low mem; start at beginning.  */                                                                                                 
          for (; length; --length)                                                                                                                                  
            *dest++ = *source++;                                                                                                                                    
        }                                                                                                                                                           
      return (void *) d0;                                                                                                                                           
    }

There are no comments on this comment yet.