home *** CD-ROM | disk | FTP | other *** search
- /*****************************************************************************
- * $Id: farstr.c,v 1.5 1992/06/22 14:30:11 ak Exp $
- *****************************************************************************
- * $Log: farstr.c,v $
- * Revision 1.5 1992/06/22 14:30:11 ak
- * *** empty log message ***
- *
- * Revision 1.4 1992/02/14 18:34:41 ak
- * *** empty log message ***
- *
- * Revision 1.3 1992/01/07 14:20:19 ak
- * *** empty log message ***
- *
- * Revision 1.2 1992/01/03 14:32:35 ak
- * $Header: h:/SRC.SSB/lib/libx/farstr.c,v 1.5 1992/06/22 14:30:11 ak Exp $Id:
- *
- * Revision 1.1 1992/01/03 13:57:48 ak
- * Initial revision
- *
- *****************************************************************************/
-
- static char *rcsid = "$Id: farstr.c,v 1.5 1992/06/22 14:30:11 ak Exp $";
-
- #if defined(__ZTC__) && (defined(__SMALL__) || defined(__MEDIUM__)) && !defined(DOS386)
-
- #include <ztc.h>
- #include <dos.h>
-
- void _far *
- _fmemcpy(void _far *dst, void const _far *src, unsigned len)
- {
- movedata(FP_SEG(src), FP_OFF(src), FP_SEG(dst), FP_OFF(dst), len);
- return dst;
- }
-
- void _far *
- _fmemmove(void _far *dst, void const _far *src, unsigned len)
- {
- if (FP_SEG(dst) == FP_SEG(src)) {
- unsigned char _far *d = dst;
- unsigned char const _far *s = src;
- if (dst > src) {
- if (d >= s + len)
- goto move;
- d += len;
- s += len;
- while (len--)
- *--d = *--s;
- } else {
- if (s >= d + len)
- goto move;
- while (len--)
- *d++ = *s++;
- }
- } else
- move: movedata(FP_SEG(src), FP_OFF(src), FP_SEG(dst), FP_OFF(dst), len);
- return dst;
- }
-
- int
- _fmemcmp(void const _far *dst, void const _far *src, unsigned len)
- {
- unsigned char const _far *d = dst, _far *s = src;
- while (len--)
- if (*d != *s)
- return (*d < *s) ? -1 : 1;
- return 0;
- }
-
- #endif
-