Mercurial > hg > xmms-sid
diff src/xs_support.c @ 4:4bb09e405eab
Added new files for 0.8
author | Matti Hamalainen <ccr@tnsp.org> |
---|---|
date | Tue, 03 Jun 2003 11:03:04 +0000 |
parents | |
children | dec37e16136e |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/xs_support.c Tue Jun 03 11:03:04 2003 +0000 @@ -0,0 +1,108 @@ +/* + XMMS-SID - SIDPlay input plugin for X MultiMedia System (XMMS) + + Miscellaneous support functions + + Written by Matti "ccr" Hamalainen <ccr@tnsp.org> + + 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 "xmms-sid.h" +#include <stdlib.h> +#include <string.h> +#include <ctype.h> + +/* + * Utility routines + */ +int xs_strcalloc(gchar **result, const gchar *str) +{ + /* Check the string pointers */ + if ((result == NULL) || (str == NULL)) + return -1; + + /* Allocate memory for destination */ + *result = (gchar *) g_realloc(*result, strlen(str) + 1); + + if (*result == NULL) return -2; + + /* Copy to the destination */ + strcpy(*result, str); + + return 0; +} + + +int xs_strcat(gchar **ppcResult, const gchar *pcStr) +{ + int ilen; + + /* Check the pcString pointers */ + if ((ppcResult == NULL) || (pcStr == NULL)) + return -1; + + /* Get length of the pcString to be catted */ + ilen = strlen(pcStr); + + /* Re-allocate memory for destination */ + *ppcResult = (gchar *) g_realloc(*ppcResult, strlen(*ppcResult) + ilen + 1); + + if (*ppcResult == NULL) return -2; + + /* Cat to the destination */ + strcat(*ppcResult, pcStr); + + return 0; +} + + +int xs_strcpy(gchar **ppcResult, gint *j, const gchar *pcStr) +{ + int ilen; + + /* Check the pcString pointers */ + if ((ppcResult == NULL) || (pcStr == NULL) || (j == NULL)) + return -1; + + /* Get length of the pcString to be catted */ + (*j) += ilen = strlen(pcStr); + + /* Re-allocate memory for destination */ + *ppcResult = (gchar *) g_realloc(*ppcResult, strlen(*ppcResult) + ilen + 1); + + if (*ppcResult == NULL) return -2; + + /* Cat to the destination */ + strcat(*ppcResult, pcStr); + + return 0; +} + + +inline void xs_findnext(gchar *pcStr, gint *piPos) +{ + /* Terminating NULL-character is not whitespace! */ + while (isspace(pcStr[*piPos])) (*piPos)++; +} + + +inline void xs_findnum(gchar *pcStr, gint *piPos) +{ + /* Terminating NULL-character is not digit! */ + while (isdigit(pcStr[*piPos])) (*piPos)++; +} + +