home *** CD-ROM | disk | FTP | other *** search
-
- /* *** strings.c ************************************************************
- *
- * String Manipulation Routines
- *
- * Copyright (C) 1986, 1987, Robert J. Mical
- *
- * CONFIDENTIAL and PROPRIETARY
- *
- * HISTORY NAME DESCRIPTION
- * ----------- -------------- --------------------------------------------
- * 4 Feb 87 RJ Real release
- * 2 Feb 87 RJ Added StripOuterSpace()
- * 16 May 86 RJ Just more stuff
- * 1 June 1985 =RJ Mical= Created this file from a weird distant echo.
- *
- * *********************************************************************** */
-
-
- #include "exec\types.h"
-
- #define FOREVER for(;;)
-
-
- /* copy these and define them as 'extern' in your global include file
- * in order to use these routines in your code.
- */
- SHORT CompareUpperStrings();
- UBYTE *FindSuffix();
- SHORT GetAtom();
- SHORT IndexString();
- SHORT StringLength();
- BOOL StringsEqual();
- UBYTE *StripLeadingSpace();
- UBYTE *StripOuterSpace();
-
-
-
- SHORT CompareUpperStrings(s, t)
- UBYTE *s, *t;
- /* Compare s to t, making alphabet characters uppercase. Return value:
- * s < t -1
- * s == t 0
- * s > t 1
- */
- {
- SHORT sc, tc;
-
- FOREVER
- {
- sc = *s++;
- if ((sc >= 'a') && (sc <= 'z')) sc = sc - 'a' + 'A';
- tc = *t++;
- if ((tc >= 'a') && (tc <= 'z')) tc = tc - 'a' + 'A';
-
- if (sc < tc) return(-1);
- if (sc > tc) return(1);
- if (sc == '\0') return(0);
- }
- return(0);
- }
-
-
-
- VOID CopyString(tostring, fromstring)
- UBYTE *tostring, *fromstring;
- {
- while (*tostring++ = *fromstring++) ;
- }
-
-
-
- VOID ConcatString(firststring, addstring)
- UBYTE *firststring, *addstring;
- {
- SHORT length1;
-
- length1 = StringLength(firststring);
- firststring += length1;
- CopyString(firststring, addstring);
- }
-
-
-
- UBYTE *FindSuffix(string, suffix)
- UBYTE *string;
- UBYTE *suffix;
- {
- SHORT stringlength, suffixlength;
-
- if ( (stringlength = StringLength(string))
- >= (suffixlength = StringLength(suffix)) )
- {
- if (StringsEqual(string + stringlength - suffixlength, suffix))
- return (string + stringlength - suffixlength);
- }
- return(NULL);
- }
-
-
-
- SHORT IndexString(lookin, lookfor)
- UBYTE *lookin, *lookfor;
- /* This routines looks in the lookin string for the lookfor string.
- * Returns the position of the lookfor string in lookin, or
- * returns -1 if the lookfor string was not found.
- */
- {
- SHORT index;
- UBYTE *workin, *workfor;
-
- index = 0;
-
- while (*lookin)
- {
- workin = lookin;
- workfor = lookfor;
- while ((*workfor) && (*workin) && (*workfor == *workin))
- {
- workfor++;
- workin++;
- }
- if (*workfor == '\0') return(index);
- lookin++;
- index++;
- }
-
- return(-1);
- }
-
-
-
- SHORT StringLength(text)
- UBYTE *text;
- {
- SHORT length;
-
- length = 0;
- while (*text++) length++;
- return(length);
- }
-
-
-
- BOOL StringsEqual(text1, text2)
- UBYTE *text1, *text2;
- {
- while (*text1 == *text2)
- {
- if (*text1 == '\0') return(TRUE);
- text1++;
- text2++;
- }
-
- return(FALSE);
- }
-
-
-
- UBYTE *StripLeadingSpace(text, space)
- UBYTE *text, *space;
- /* This routine "strips" the leading occurrences of the space string
- * characters from the text string by finding the first character
- * of the text string that is not contained in the space string.
- * The return value is a pointer to the first non-space character in text.
- * If text is the null string or if text consists of nothing
- * but space characters, NULL is returned.
- * If space is the NULL string, text is returned.
- */
- {
- if (space == NULL) return(text);
- if (*space == '\0') return(text);
-
- while (*text && (*text == *space)) text++;
-
- if (*text) return(text);
- return(NULL);
- }
-
-
-
- UBYTE *StripOuterSpace(text, space)
- UBYTE *text, *space;
- /* This routine "strips" the leading and trailing occurrences of the space
- * string characters from the text string.
- * The return value is a pointer to the first non-space character in text,
- * and a null byte is stored after the text's last non-space character.
- */
- {
- UBYTE *workspace, *lastspace;
-
- if (text == NULL) return(NULL);
-
- if ((workspace = StripLeadingSpace(text, space)) == NULL)
- {
- *text = '\0';
- return(text);
- }
-
- lastspace = workspace + StringLength(workspace) - 1;
- while ((lastspace >= workspace) && (*lastspace == *space)) lastspace--;
- *(lastspace + 1) = '\0';
- return(workspace);
- }
-
-
-
-