#include "npcommon.h" // strstrf(str, srch) // // Returns a pointer to the first occurrence of srch within // str (like strchrf, but search parameter is a string, not // a single character). Returns NULL if not found. // REVIEW: simple algorithm here, but depending on usage, // might be overkill to complicate it. LPSTR WINAPI strstrf(LPCSTR lpString, LPCSTR lpSearch) { INT cbSearch = strlenf(lpSearch); INT cbToSearch; LPSTR lp; // calculate the maximum distance to go -- the length // of the string to look in less the length of the // string to search for, since beyond that the string // being searched for would not fit. cbToSearch = strlenf(lpString) - cbSearch; if (cbToSearch < 0) return NULL; /* string being searched is shorter */ for (lp = (LPSTR)lpString; lp - lpString <= cbToSearch; ADVANCE(lp)) { if (strncmpf(lp, lpSearch, cbSearch) == 0) return lp; } return NULL; } // stristrf(str, srch) // // Returns a pointer to the first occurrence of srch within // str, case-insensitive. Returns NULL if not found. // REVIEW: simple algorithm here, but depending on usage, // might be overkill to complicate it. LPSTR WINAPI stristrf(LPCSTR lpString, LPCSTR lpSearch) { INT cbSearch = strlenf(lpSearch); INT cbToSearch; LPSTR lp; // calculate the maximum distance to go -- the length // of the string to look in less the length of the // string to search for, since beyond that the string // being searched for would not fit. cbToSearch = strlenf(lpString) - cbSearch; if (cbToSearch < 0) return NULL; /* string being searched is shorter */ for (lp = (LPSTR)lpString; lp - lpString <= cbToSearch; ADVANCE(lp)) { if (strnicmpf(lp, lpSearch, cbSearch) == 0) return lp; } return NULL; }