x86UNIXStrings.cpp
Engine/source/platformX86UNIX/x86UNIXStrings.cpp
Public Functions
Detailed Description
Public Functions
stristr(const char * szStringToBeSearched, const char * szSubstringToSearchFor)
1 2//----------------------------------------------------------------------------- 3// Copyright (c) 2012 GarageGames, LLC 4// 5// Permission is hereby granted, free of charge, to any person obtaining a copy 6// of this software and associated documentation files (the "Software"), to 7// deal in the Software without restriction, including without limitation the 8// rights to use, copy, modify, merge, publish, distribute, sublicense, and/or 9// sell copies of the Software, and to permit persons to whom the Software is 10// furnished to do so, subject to the following conditions: 11// 12// The above copyright notice and this permission notice shall be included in 13// all copies or substantial portions of the Software. 14// 15// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 20// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS 21// IN THE SOFTWARE. 22//----------------------------------------------------------------------------- 23 24#include "platformX86UNIX/platformX86UNIX.h" 25#include "core/strings/stringFunctions.h" 26#include <stdarg.h> 27#include <ctype.h> 28#include <stdlib.h> 29 30 31const char *stristr(const char *szStringToBeSearched, const char *szSubstringToSearchFor) 32{ 33 const char *pPos = NULL; 34 char *szCopy1 = NULL; 35 char *szCopy2 = NULL; 36 37 // verify parameters 38 if ( szStringToBeSearched == NULL || 39 szSubstringToSearchFor == NULL ) 40 { 41 return szStringToBeSearched; 42 } 43 44 // empty substring - return input (consistent with strstr) 45 if (strlen(szSubstringToSearchFor) == 0 ) { 46 return szStringToBeSearched; 47 } 48 49 szCopy1 = dStrlwr(strdup(szStringToBeSearched)); 50 szCopy2 = dStrlwr(strdup(szSubstringToSearchFor)); 51 52 if ( szCopy1 == NULL || szCopy2 == NULL ) { 53 // another option is to raise an exception here 54 free((void*)szCopy1); 55 free((void*)szCopy2); 56 return NULL; 57 } 58 59 pPos = strstr((const char*)szCopy1, (const char*)szCopy2); 60 61 if ( pPos != NULL ) { 62 // map to the original string 63 pPos = szStringToBeSearched + (pPos - szCopy1); 64 } 65 66 free((void*)szCopy1); 67 free((void*)szCopy2); 68 69 return pPos; 70} // stristr(...) 71 72