⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sdl_getenv.c

📁 网络MPEG4IP流媒体开发源代码
💻 C
字号:
/*    SDL - Simple DirectMedia Layer    Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002  Sam Lantinga    This library is free software; you can redistribute it and/or    modify it under the terms of the GNU Library General Public    License as published by the Free Software Foundation; either    version 2 of the License, or (at your option) any later version.    This library 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    Library General Public License for more details.    You should have received a copy of the GNU Library General Public    License along with this library; if not, write to the Free    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA    Sam Lantinga    slouken@libsdl.org*/#ifdef SAVE_RCSIDstatic char rcsid = "@(#) $Id$";#endif/* Not all environments have a working getenv()/putenv() */#ifdef TEST_MAIN#define NEED_SDL_GETENV#endif#include "SDL_getenv.h"#ifdef NEED_SDL_GETENV#include <stdlib.h>#include <string.h>static char **SDL_env = (char **)0;/* Put a variable of the form "name=value" into the environment */int SDL_putenv(const char *variable){	const char *name, *value;	int added;	int len, i;	char **new_env;	char *new_variable;	/* A little error checking */	if ( ! variable ) {		return(-1);	}	name = variable;	for ( value=variable; *value && (*value != '='); ++value ) {		/* Keep looking for '=' */ ;	}	if ( *value ) {		++value;	} else {		return(-1);	}	/* Allocate memory for the variable */	new_variable = (char *)malloc(strlen(variable)+1);	if ( ! new_variable ) {		return(-1);	}	strcpy(new_variable, variable);	/* Actually put it into the environment */	added = 0;	i = 0;	if ( SDL_env ) {		/* Check to see if it's already there... */		len = (value - name);		for ( ; SDL_env[i]; ++i ) {			if ( strncmp(SDL_env[i], name, len) == 0 ) {				break;			}		}		/* If we found it, just replace the entry */		if ( SDL_env[i] ) {			free(SDL_env[i]);			SDL_env[i] = new_variable;			added = 1;		}	}	/* Didn't find it in the environment, expand and add */	if ( ! added ) {		new_env = realloc(SDL_env, (i+2)*sizeof(char *));		if ( new_env ) {			SDL_env = new_env;			SDL_env[i++] = new_variable;			SDL_env[i++] = (char *)0;			added = 1;		} else {			free(new_variable);		}	}	return (added ? 0 : -1);}/* Retrieve a variable named "name" from the environment */char *SDL_getenv(const char *name){	int len, i;	char *value;	value = (char *)0;	if ( SDL_env ) {		len = strlen(name);		for ( i=0; SDL_env[i] && !value; ++i ) {			if ( (strncmp(SDL_env[i], name, len) == 0) &&			     (SDL_env[i][len] == '=') ) {				value = &SDL_env[i][len+1];			}		}	}	return value;}#endif /* NEED_GETENV */#ifdef TEST_MAIN#include <stdio.h>int main(int argc, char *argv[]){	char *value;	printf("Checking for non-existent variable... ");	fflush(stdout);	if ( ! getenv("EXISTS") ) {		printf("okay\n");	} else {		printf("failed\n");	}	printf("Setting FIRST=VALUE1 in the environment... ");	fflush(stdout);	if ( putenv("FIRST=VALUE1") == 0 ) {		printf("okay\n");	} else {		printf("failed\n");	}	printf("Getting FIRST from the environment... ");	fflush(stdout);	value = getenv("FIRST");	if ( value && (strcmp(value, "VALUE1") == 0) ) {		printf("okay\n");	} else {		printf("failed\n");	}	printf("Setting SECOND=VALUE2 in the environment... ");	fflush(stdout);	if ( putenv("SECOND=VALUE2") == 0 ) {		printf("okay\n");	} else {		printf("failed\n");	}	printf("Getting SECOND from the environment... ");	fflush(stdout);	value = getenv("SECOND");	if ( value && (strcmp(value, "VALUE2") == 0) ) {		printf("okay\n");	} else {		printf("failed\n");	}	printf("Setting FIRST=NOVALUE in the environment... ");	fflush(stdout);	if ( putenv("FIRST=NOVALUE") == 0 ) {		printf("okay\n");	} else {		printf("failed\n");	}	printf("Getting FIRST from the environment... ");	fflush(stdout);	value = getenv("FIRST");	if ( value && (strcmp(value, "NOVALUE") == 0) ) {		printf("okay\n");	} else {		printf("failed\n");	}	printf("Checking for non-existent variable... ");	fflush(stdout);	if ( ! getenv("EXISTS") ) {		printf("okay\n");	} else {		printf("failed\n");	}	return(0);}#endif /* TEST_MAIN */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -