mirror of
https://github.com/xemu-project/xemu.git
synced 2024-11-23 19:49:43 +00:00
utils: drop strtok_r from envlist_parse
The problem is that mingw 4.9.1 fails to compile the code with the following warning: /mingw/include/string.h:88:9: note: previous declaration of 'strtok_r' was here char *strtok_r(char * __restrict__ _Str, const char * __restrict__ _Delim, char ** __restrict__ __last); /include/sysemu/os-win32.h:83:7: warning: redundant redeclaration of 'strtok_r' [-Wredundant-decls] char *strtok_r(char *str, const char *delim, char **saveptr); The problem is that compiles just fine on previous versions of mingw. Compiler version check here is not a good idea. Though fortunately strtok_r is used only once in the code and we could simply rewrite the code without it. Signed-off-by: Olga Krishtal <okrishtal@parallels.com> Signed-off-by: Denis V. Lunev <den@openvz.org> CC: Eric Blake <eblake@redhat.com> CC: Michael Roth <mdroth@linux.vnet.ibm.com> Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
This commit is contained in:
parent
215a2771a7
commit
459db780be
@ -81,7 +81,6 @@ struct tm *gmtime_r(const time_t *timep, struct tm *result);
|
||||
#undef localtime_r
|
||||
struct tm *localtime_r(const time_t *timep, struct tm *result);
|
||||
|
||||
char *strtok_r(char *str, const char *delim, char **saveptr);
|
||||
|
||||
static inline void os_setup_signal_handling(void) {}
|
||||
static inline void os_daemonize(void) {}
|
||||
|
@ -94,30 +94,30 @@ envlist_parse(envlist_t *envlist, const char *env,
|
||||
{
|
||||
char *tmpenv, *envvar;
|
||||
char *envsave = NULL;
|
||||
|
||||
assert(callback != NULL);
|
||||
int ret = 0;
|
||||
assert(callback != NULL);
|
||||
|
||||
if ((envlist == NULL) || (env == NULL))
|
||||
return (EINVAL);
|
||||
|
||||
/*
|
||||
* We need to make temporary copy of the env string
|
||||
* as strtok_r(3) modifies it while it tokenizes.
|
||||
*/
|
||||
if ((tmpenv = strdup(env)) == NULL)
|
||||
return (errno);
|
||||
envsave = tmpenv;
|
||||
|
||||
envvar = strtok_r(tmpenv, ",", &envsave);
|
||||
while (envvar != NULL) {
|
||||
if ((*callback)(envlist, envvar) != 0) {
|
||||
free(tmpenv);
|
||||
return (errno);
|
||||
do {
|
||||
envvar = strchr(tmpenv, ',');
|
||||
if (envvar != NULL) {
|
||||
*envvar = '\0';
|
||||
}
|
||||
if ((*callback)(envlist, tmpenv) != 0) {
|
||||
ret = errno;
|
||||
break;
|
||||
}
|
||||
envvar = strtok_r(NULL, ",", &envsave);
|
||||
}
|
||||
tmpenv = envvar + 1;
|
||||
} while (envvar != NULL);
|
||||
|
||||
free(tmpenv);
|
||||
return (0);
|
||||
free(envsave);
|
||||
return ret;
|
||||
}
|
||||
|
||||
/*
|
||||
|
Loading…
Reference in New Issue
Block a user