home *** CD-ROM | disk | FTP | other *** search
/ Columbia Kermit / kermit.zip / c-kermit / ckvold.c < prev    next >
C/C++ Source or Header  |  2020-01-01  |  2KB  |  94 lines

  1. #module ckvold "1.0-007"
  2.  
  3. /* C K V O L D  --  C-Kermit file system support for VAX/VMS V4.  */
  4.  
  5. /* Edit history
  6.  * 001 22-Jan-91 wb  Initial version with memcpy, memmove
  7.  * 002 24-Apr-91 wb  Added memset
  8.  * 003 01-Jul-91 wb  Added strstr
  9.  * 004 26-Nov-91 wb  Added system
  10.  * 006 10-Nov-96 lh  All needed w/ VAXCRTL 4-009 (VMS 4.4)
  11.  *                   Only strstr needed w/ VAXCRTL 4-013 (VMS 4.6)
  12.  * 007 05-Sep-99 wb  Added fmod
  13.  */
  14.  
  15.  
  16. char *strstr(a, b)
  17. const char *a;
  18. const char *b;
  19. {
  20.     int len;
  21.  
  22.     if (!a || !b) return((char *)0);
  23.     if (!*b) return(a);
  24.     len = strlen(b);
  25.     while (*a) {
  26.         if (!strncmp(a, b, len)) return(a);
  27.         a++;
  28.     }
  29.     return((char *)0);
  30. }
  31.  
  32. #ifndef VMS_V46
  33. void *memcpy(d, s, n)
  34. void *d, *s;
  35. register int n;
  36. {
  37.     register char *ss = (char *)s, *dd = (char *)d;
  38.     while (n-- > 0)
  39.     *dd++ = *ss++;
  40.     return d;
  41. }
  42.  
  43. void *memmove(d, s, n)
  44. void *d;
  45. const void *s;
  46. register int n;
  47. {
  48.     register char *dd = (char *)d, *ss = (char *)s;
  49.     if (dd < ss || dd - ss >= n) {
  50.     while (n-- > 0)
  51.         *dd++ = *ss++;
  52.     } else if (n > 0) {
  53.     dd += n;
  54.     ss += n;
  55.     while (n-- > 0)
  56.         *--dd = *--ss;
  57.     }
  58.     return d;
  59. }
  60.  
  61. void *memset(d, c, n)
  62. void *d;
  63. register int c;
  64. register int n;
  65. {
  66.     register char *dd = (char *)d;
  67.     while (n-- > 0)
  68.     *dd++ = c;
  69.     return d;
  70. }
  71.  
  72. int system(s)
  73. char *s;
  74. {
  75.     while (*s == ' ' || *s == '$') s++;
  76.     zsyscmd(s);
  77.     return(1);
  78. }
  79.  
  80. double fmod(x, y)
  81. double x, y;
  82. {
  83.     int a;
  84.     if (x == 0 || y == 0) {
  85.         a = x;
  86.     } else if ((x > 0 && y > 0) || (x < 0 && y < 0)) {
  87.         a = x - y*floor(x/y);
  88.     } else {
  89.         a = x - y*ceil(x/y);
  90.     }
  91.     return a;
  92. }
  93. #endif /* ! VMS_V46 */
  94.