home *** CD-ROM | disk | FTP | other *** search
/ MacHack 1998 / MacHack 1998.toast / Papers / C++ Exceptions / µShell / Core Utilities / StringUtils.cp < prev    next >
Encoding:
Text File  |  1997-12-02  |  2.9 KB  |  141 lines  |  [TEXT/CWIE]

  1. #include "StringUtils.h"
  2.  
  3. #include <string.h>
  4.  
  5. //------------------------------------------------------------------------------
  6.  
  7. StringPtr pstrcpy(StringPtr dst, ConstStr255Param src, int maxlen)
  8. {
  9.     int len = src[0];
  10.     
  11.     if (len > maxlen)
  12.         len = maxlen;
  13.     
  14.     BlockMoveData(&src[0], &dst[0], len + 1);
  15.  
  16.     return dst;
  17. }
  18.  
  19. //------------------------------------------------------------------------------
  20.  
  21. char* pcstrcpy(char* dst, ConstStr255Param src, int maxlen)
  22. {
  23.     int len = src[0];
  24.  
  25.     if (len > maxlen)
  26.         len = maxlen;
  27.     
  28.     if (len > 0)
  29.         BlockMoveData(&src[1], &dst[0], len);
  30.         
  31.     dst[len] = '\0';
  32.     return dst;
  33. }
  34.  
  35. //------------------------------------------------------------------------------
  36.  
  37. StringPtr cpstrcpy(StringPtr dst, const char* src, int maxlen)
  38. {
  39.     int len = strlen(src);
  40.     
  41.     if (len > maxlen)
  42.         len = maxlen;
  43.     
  44.     if (len > 0)
  45.         BlockMoveData(src, &dst[1], len);
  46.     
  47.     dst[0] = (Byte) len;
  48.     
  49.     return dst;
  50. }
  51.  
  52. //------------------------------------------------------------------------------
  53.  
  54. StringPtr pstrcat(StringPtr dst, ConstStr255Param src, int maxlen)
  55. {
  56.     int srclen = src[0];
  57.     int dstlen = dst[0];
  58.  
  59.     maxlen -= dst[0];
  60.     
  61.     if (srclen > maxlen)
  62.         srclen = maxlen;
  63.     
  64.     if (srclen > 0)
  65.         BlockMoveData(&src[1], &dst[dstlen+1], srclen);
  66.         
  67.     dst[0] = (Byte) (srclen+dstlen);
  68.     
  69.     return dst;
  70. }
  71.  
  72. //------------------------------------------------------------------------------
  73.  
  74. char* pcstrcat(char* dst, ConstStr255Param src, int maxlen)
  75. {
  76.     int srclen = src[0];
  77.     int dstlen = strlen(dst);
  78.  
  79.     maxlen -= dstlen;    // not dst[0] -- dbt 1/9/96
  80.     
  81.     if (srclen > maxlen)
  82.         srclen = maxlen;
  83.     
  84.     if (srclen > 0)
  85.         BlockMoveData(&src[1], &dst[dstlen], srclen);
  86.         
  87.     dst[srclen+dstlen] = '\0';
  88.     
  89.     return dst;
  90. }
  91.  
  92. //------------------------------------------------------------------------------
  93.  
  94. StringPtr cpstrcat(StringPtr dst, const char* src, int maxlen)
  95. {
  96.     int srclen = strlen(src);
  97.     int dstlen = dst[0];
  98.  
  99.     maxlen -= dst[0];
  100.     
  101.     if (srclen > maxlen)
  102.         srclen = maxlen;
  103.     
  104.     if (srclen > 0)
  105.         BlockMoveData(src, &dst[dstlen+1], srclen);
  106.         
  107.     dst[0] = (Byte) (srclen+dstlen);
  108.     
  109.     return dst;
  110. }
  111.  
  112. //------------------------------------------------------------------------------
  113.  
  114. int stricmp(const char* strA, const char* strB, bool caseSens, bool diacSens)
  115. {
  116.     Str255 a; Str255 b;
  117.  
  118.     return RelString(cpstrcpy(a, strA), cpstrcpy(b, strB), caseSens, diacSens);
  119. }
  120.  
  121. //------------------------------------------------------------------------------
  122.  
  123. int pcstricmp(ConstStr255Param strA, const char* strB, bool caseSens, bool diacSens)
  124. {
  125.     Str255 b;
  126.     
  127.     return RelString(strA, cpstrcpy(b, strB), caseSens, diacSens);
  128. }
  129.  
  130. //------------------------------------------------------------------------------
  131. /*
  132. int cpstricmp(const char* strA, ConstStr255Param strB, bool caseSens, bool diacSens)
  133. {
  134.     Str255 a;
  135.     
  136.     return RelString(cpstrcpy(a, strA), strB, caseSens, diacSens);
  137. }
  138. */
  139. //------------------------------------------------------------------------------
  140.  
  141.