/* Miranda IM: the free IM client for Microsoft* Windows* Copyright 2000-2009 Miranda ICQ/IM project, all portions of this codebase are copyrighted to the people listed in contributors.txt. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #include "commonheaders.h" MIR_CORE_DLL(char*) replaceStr( char* &dest, const char *src ) { if ( dest != NULL ) mir_free( dest ); return dest = ( src != NULL ) ? mir_strdup( src ) : NULL; } MIR_CORE_DLL(WCHAR*) replaceStrW( WCHAR* &dest, const WCHAR *src ) { if ( dest != NULL ) mir_free( dest ); return dest = ( src != NULL ) ? mir_wstrdup( src ) : NULL; } MIR_CORE_DLL(char*) rtrim(char* str) { if (str == NULL) return NULL; char* p = strchr(str, 0); while (--p >= str) { switch (*p) { case ' ': case '\t': case '\n': case '\r': *p = 0; break; default: return str; } } return str; } MIR_CORE_DLL(WCHAR*) wrtrim(WCHAR *str) { if (str == NULL) return NULL; WCHAR* p = _tcschr(str, 0); while (--p >= str) { switch (*p) { case ' ': case '\t': case '\n': case '\r': *p = 0; break; default: return str; } } return str; } MIR_CORE_DLL(char*) ltrim(char* str) { if (str == NULL) return NULL; char* p = str; for (;;) { switch (*p) { case ' ': case '\t': case '\n': case '\r': ++p; break; default: memmove(str, p, strlen(p) + 1); return str; } } } MIR_CORE_DLL(char*) ltrimp(char* str) { if (str == NULL) return NULL; char* p = str; for (;;) { switch (*p) { case ' ': case '\t': case '\n': case '\r': ++p; break; default: return p; } } } MIR_CORE_DLL(int) wildcmp(char * name, char * mask) { char * last='\0'; for (;; mask++, name++) { if (*mask != '?' && *mask != *name) break; if (*name == '\0') return ((BOOL)!*mask); } if (*mask != '*') return FALSE; for (;; mask++, name++){ while (*mask == '*') { last = mask++; if (*mask == '\0') return ((BOOL)!*mask); /* true */ } if (*name == '\0') return ((BOOL)!*mask); /* *mask == EOS */ if (*mask != '?' && *mask != *name) name -= (size_t)(mask - last) - 1, mask = last; } }