Merge to tip. Don't try to trim empty strings.
/*
* The contents of this file are subject to the AOLserver Public License
* Version 1.1 (the "License"); you may not use this file except in
* compliance with the License. You may obtain a copy of the License at
* http://aolserver.com/.
*
* Software distributed under the License is distributed on an "AS IS"
* basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
* the License for the specific language governing rights and limitations
* under the License.
*
* The Original Code is AOLserver Code and related documentation
* distributed by AOL.
*
* The Initial Developer of the Original Code is America Online,
* Inc. Portions created by AOL are Copyright (C) 1999 America Online,
* Inc. All Rights Reserved.
*
* Alternatively, the contents of this file may be used under the terms
* of the GNU General Public License (the "GPL"), in which case the
* provisions of GPL are applicable instead of those above. If you wish
* to allow use of your version of this file only under the terms of the
* GPL and not to allow others to use your version of this file under the
* License, indicate your decision by deleting the provisions above and
* replace them with the notice and other provisions required by the GPL.
* If you do not delete the provisions above, a recipient may use your
* version of this file under either the License or the GPL.
*/
/*
* str.c --
*
* Functions that deal with strings.
*/
static const char *RCSID = "@(#) $Header: /cvsroot/aolserver/aolserver/nsd/str.c,v 1.6 2004/06/08 19:28:57 rcrittenden0569 Exp $, compiled: " __DATE__ " " __TIME__;
#include "nsd.h"
/*
*----------------------------------------------------------------------
*
* Ns_StrTrim --
*
* Trim leading and trailing white space from a string.
*
* Results:
* A pointer to the trimmed string, which will be in the original
* string.
*
* Side effects:
* May modify passed-in string.
*
*----------------------------------------------------------------------
*/
char *
Ns_StrTrim(char *string)
{
return Ns_StrTrimLeft(Ns_StrTrimRight(string));
}
/*
*----------------------------------------------------------------------
*
* Ns_StrTrimLeft --
*
* Trim leading white space from a string.
*
* Results:
* A pointer to the trimmed string, which will be in the
* original string.
*
* Side effects:
* None.
*
*----------------------------------------------------------------------
*/
char *
Ns_StrTrimLeft(char *string)
{
if (string == NULL) {
return NULL;
}
while (isspace(UCHAR(*string))) {
++string;
}
return string;
}
/*
*----------------------------------------------------------------------
*
* Ns_StrTrimRight --
*
* Trim trailing white space from a string.
*
* Results:
* A pointer to the trimmed string, which will be in the
* original string.
*
* Side effects:
* The string will be modified.
*
*----------------------------------------------------------------------
*/
char *
Ns_StrTrimRight(char *string)
{
int len;
if (string == NULL) {
return NULL;
}
len = strlen(string);
while ((--len >= 0) &&
(isspace(UCHAR(string[len])) ||
string[len] == '\n')) {
string[len] = '\0';
}
return string;
}
/*
*----------------------------------------------------------------------
*
* Ns_StrToLower --
*
* All alph. chars in a string will be made to be lowercase.
*
* Results:
* Same string as passed in.
*
* Side effects:
* Will modify string.
*
*----------------------------------------------------------------------
*/
char *
Ns_StrToLower(char *string)
{
char *s;
s = string;
while (*s != '\0') {
if (isupper(UCHAR(*s))) {
*s = tolower(UCHAR(*s));
}
++s;
}
return string;
}
/*
*----------------------------------------------------------------------
*
* Ns_StrToUpper --
*
* All alph. chars in a string will be made to be uppercase.
*
* Results:
* Same string as pssed in.
*
* Side effects:
* Will modify string.
*
*----------------------------------------------------------------------
*/
char *
Ns_StrToUpper(char *string)
{
char *s;
s = string;
while (*s != '\0') {
if (islower(UCHAR(*s))) {
*s = toupper(UCHAR(*s));
}
++s;
}
return string;
}
/*
*----------------------------------------------------------------------
*
* Ns_Match --
*
* Compare the beginnings of two strings, case insensitively.
* The comparison stops when the end of the shorter string is
* reached.
*
* Results:
* NULL if no match, b if match.
*
* Side effects:
* None.
*
*----------------------------------------------------------------------
*/
char *
Ns_Match(char *a, char *b)
{
if (a != NULL && b != NULL) {
while (*a != '\0' && *b != '\0') {
char c1, c2;
c1 = islower(UCHAR(*a)) ? *a : tolower(UCHAR(*a));
c2 = islower(UCHAR(*b)) ? *b : tolower(UCHAR(*b));
if (c1 != c2) {
return NULL;
}
a++;
b++;
}
}
return (char *) b;
}
/*
*----------------------------------------------------------------------
*
* Ns_NextWord --
*
* Return a pointer to first character of the next word in a
* string; words are separated by white space.
*
* Results:
* A string pointer in the original string.
*
* Side effects:
* None.
*
*----------------------------------------------------------------------
*/
char *
Ns_NextWord(char *line)
{
while (*line != '\0' && !isspace(UCHAR(*line))) {
++line;
}
while (*line != '\0' && isspace(UCHAR(*line))) {
++line;
}
return line;
}
/*
*----------------------------------------------------------------------
*
* Ns_StrCaseStr --
*
* Search for first substring within string, case insensitive.
*
* Results:
* A pointer to where substring starts or NULL.
*
* Side effects:
* None.
*
*----------------------------------------------------------------------
*/
char *
Ns_StrNStr(char *string, char *substring)
{
return Ns_StrCaseFind(string, substring);
}
char *
Ns_StrCaseFind(char *string, char *substring)
{
if (strlen(string) > strlen(substring)) {
while (*string != '\0') {
if (Ns_Match(string, substring)) {
return string;
}
++string;
}
}
return NULL;
}
|
Back to SourceForge.net Powered by ViewCVS 1.0-dev |