STRINGS.C
上传用户:dcs7469208
上传日期:2010-01-02
资源大小:443k
文件大小:3k
源码类别:

操作系统开发

开发平台:

DOS

  1. /****************************************************************/
  2. /* */
  3. /*     strings.c */
  4. /* */
  5. /*   Global String Handling Functions */
  6. /* */
  7. /* Copyright (c) 1995 */
  8. /*   Pasquale J. Villani */
  9. /* All Rights Reserved */
  10. /* */
  11. /* This file is part of DOS-C. */
  12. /* */
  13. /* DOS-C is free software; you can redistribute it and/or */
  14. /* modify it under the terms of the GNU General Public License */
  15. /* as published by the Free Software Foundation; either version */
  16. /* 2, or (at your option) any later version. */
  17. /* */
  18. /* DOS-C is distributed in the hope that it will be useful, but */
  19. /* WITHOUT ANY WARRANTY; without even the implied warranty of */
  20. /* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See */
  21. /* the GNU General Public License for more details. */
  22. /* */
  23. /* You should have received a copy of the GNU General Public */
  24. /* License along with DOS-C; see the file COPYING.  If not, */
  25. /* write to the Free Software Foundation, 675 Mass Ave, */
  26. /* Cambridge, MA 02139, USA. */
  27. /****************************************************************/
  28. #include "../../hdr/portab.h"
  29. /* $Logfile:   C:/dos-c/src/misc/strings.c_v  $ */
  30. #ifdef VERSION_STRINGS
  31. static BYTE *stringsRcsId = "$Header:   C:/dos-c/src/misc/strings.c_v   1.3   31 Jan 1998  8:15:50   patv  $";
  32. #endif
  33. /* $Log:   C:/dos-c/src/misc/strings.c_v  $
  34.  *
  35.  *    Rev 1.3   31 Jan 1998  8:15:50   patv
  36.  * Put preprocessor switch for version strings and changed log strings
  37.  *
  38.  *    Rev 1.2   29 Aug 1996 13:07:36   patv
  39.  * Bug fixes for v0.91b
  40.  *
  41.  *    Rev 1.1   01 Sep 1995 18:11:02   patv
  42.  * First GPL release.
  43.  *
  44.  *    Rev 1.0   02 Jul 1995 11:04:42   patv
  45.  * Initial revision.
  46.  */
  47. /* $EndLog$ */
  48. #ifdef PROTO
  49. VOID strcpy(REG BYTE *, REG BYTE *);
  50. #endif
  51. COUNT strlen(s)
  52. REG BYTE *s;
  53. {
  54. REG WORD cnt = 0;
  55. while(*s++ != 0)
  56. ++cnt;
  57. return cnt;
  58. }
  59. COUNT fstrlen(s)
  60. REG BYTE FAR *s;
  61. {
  62. REG WORD cnt = 0;
  63. while(*s++ != 0)
  64. ++cnt;
  65. return cnt;
  66. }
  67. VOID strcpy(d, s)
  68. REG BYTE *d, *s;
  69. {
  70. while(*s != 0)
  71. *d++ = *s++;
  72. *d = 0;
  73. }
  74. VOID strncpy(d, s, l)
  75. REG BYTE *d, *s;
  76. COUNT l;
  77. {
  78. COUNT idx = 1;
  79. while(*s != 0 && idx++ <= l)
  80. *d++ = *s++;
  81. *d = 0;
  82. }
  83. VOID fstrncpy(d, s, l)
  84. REG BYTE FAR *d, FAR *s;
  85. COUNT l;
  86. {
  87. COUNT idx = 1;
  88. while(*s != 0 && idx++ <= l)
  89. *d++ = *s++;
  90. *d = 0;
  91. }
  92. VOID strcat(d, s)
  93. REG BYTE *d, *s;
  94. {
  95. while(*d != 0)
  96. ++d;
  97. strcpy(d, s);
  98. }
  99. COUNT strcmp(d, s)
  100. REG BYTE *d, *s;
  101. {
  102. while(*s != '' && *d != '')
  103. {
  104. if(*d == *s)
  105. ++s, ++d;
  106. else
  107. return *d - *s;
  108. }
  109. return *d - *s;
  110. }
  111. COUNT strncmp(d, s, l)
  112. REG BYTE *d, *s;
  113. COUNT l;
  114. {
  115. COUNT index = 1;
  116. while(*s != '' && *d != '' && index++ <= l)
  117. {
  118. if(*d == *s)
  119. ++s, ++d;
  120. else
  121. return *d - *s;
  122. }
  123. return *d - *s;
  124. }
  125. COUNT fstrncmp(lpszStr1, lpszStr2, nLen)
  126. REG BYTE FAR *lpszStr1, FAR *lpszStr2;
  127. COUNT nLen;
  128. {
  129. COUNT idx = 1;
  130. while(idx++ <= nLen)
  131. if(*lpszStr1 != *lpszStr2)
  132. return lpszStr1 < lpszStr2 ? -1 : 1;
  133. else
  134. {
  135. ++lpszStr1;
  136. ++lpszStr2;
  137. }
  138. return 0;
  139. }
  140. /* Yet another change for true portability (WDL) */
  141. COUNT tolower(c)
  142. COUNT c;
  143. {
  144. if(c >= 'A' && c <= 'Z')
  145. return (c + ('a' - 'A'));
  146. else
  147. return c;
  148. }
  149. /* Yet another change for true portability (PJV) */
  150. COUNT toupper(c)
  151. COUNT c;
  152. {
  153. if(c >= 'a' && c <= 'z')
  154. return (c - ('a' - 'A'));
  155. else
  156. return c;
  157. }