home *** CD-ROM | disk | FTP | other *** search
/ QBasic & Borland Pascal & C / Delphi5.iso / C / Samples / CSAPE32.ARJ / SOURCE / OWLSCR / OMEMMOVE.C < prev    next >
Encoding:
C/C++ Source or Header  |  1990-03-28  |  835 b   |  49 lines

  1. /*
  2.     omemmove.c  
  3.  
  4.     % 'oakland' backup memmove function.
  5.  
  6.     OWL 1.2
  7.     Copyright (c) 1989 by Oakland Group, Inc.
  8.     ALL RIGHTS RESERVED.
  9.  
  10.     Revision History:
  11.     -----------------
  12.      7/26/89 jmd    Added test for 0 cnt
  13.      3/28/90 jmd    ansi-fied
  14. */
  15.  
  16. #include "oakhead.h"
  17.  
  18. /* -------------------------------------------------------------------------- */
  19.  
  20. VOID *omemmove(VOID *dst, VOID *src, SIZE_T cnt)
  21. {
  22.     byte *s, *d;
  23.  
  24.     s = (byte *) src;
  25.     d = (byte *) dst;
  26.  
  27.     if (cnt > 0) {
  28.  
  29.         if (d > s) {    /* copy tail first */
  30.             s += cnt - 1;
  31.             d += cnt - 1;
  32.             do {
  33.                 *d-- = *s--;
  34.                 cnt--;
  35.             } while (cnt > 0);
  36.         }
  37.         else {    /* copy head first */
  38.             do {
  39.                 *d++ = *s++;
  40.                 cnt--;
  41.             } while (cnt > 0);
  42.         }
  43.     }
  44.  
  45.     return(src);
  46. }
  47. /* -------------------------------------------------------------------------- */
  48.  
  49.