本文整理汇总了C++中putenv函数的典型用法代码示例。如果您正苦于以下问题:C++ putenv函数的具体用法?C++ putenv怎么用?C++ putenv使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了putenv函数的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。
示例1: pmix_setenv
/*
* Portable version of setenv(), allowing editing of any environ-like
* array
*/
pmix_status_t pmix_setenv(const char *name, const char *value, bool overwrite,
char ***env)
{
int i;
char *newvalue, *compare;
size_t len;
/* Make the new value */
if (NULL == value) {
i = asprintf(&newvalue, "%s=", name);
} else {
i = asprintf(&newvalue, "%s=%s", name, value);
}
if (NULL == newvalue || 0 > i) {
return PMIX_ERR_OUT_OF_RESOURCE;
}
/* Check the bozo case */
if( NULL == env ) {
return PMIX_ERR_BAD_PARAM;
} else if (NULL == *env) {
i = 0;
pmix_argv_append(&i, env, newvalue);
free(newvalue);
return PMIX_SUCCESS;
}
/* If this is the "environ" array, use putenv */
if( *env == environ ) {
/* THIS IS POTENTIALLY A MEMORY LEAK! But I am doing it
because so that we don't violate the law of least
astonishmet for PMIX developers (i.e., those that don't
check the return code of pmix_setenv() and notice that we
returned an error if you passed in the real environ) */
putenv(newvalue);
return PMIX_SUCCESS;
}
/* Make something easy to compare to */
i = asprintf(&compare, "%s=", name);
if (NULL == compare || 0 > i) {
free(newvalue);
return PMIX_ERR_OUT_OF_RESOURCE;
}
len = strlen(compare);
/* Look for a duplicate that's already set in the env */
for (i = 0; (*env)[i] != NULL; ++i) {
if (0 == strncmp((*env)[i], compare, len)) {
if (overwrite) {
free((*env)[i]);
(*env)[i] = newvalue;
free(compare);
return PMIX_SUCCESS;
} else {
free(compare);
free(newvalue);
return PMIX_EXISTS;
}
}
}
/* If we found no match, append this value */
i = pmix_argv_count(*env);
pmix_argv_append(&i, env, newvalue);
/* All done */
free(compare);
free(newvalue);
return PMIX_SUCCESS;
}
开发者ID:jjhursey,项目名称:ompi,代码行数:81,代码来源:pmix_environ.c
示例2: init_gettext
void init_gettext(const char *path, const std::string &configured_language, int argc, char** argv) {
#else
void init_gettext(const char *path, const std::string &configured_language) {
#endif
#if USE_GETTEXT
/** first try to set user override environment **/
if (configured_language.length() != 0) {
#ifndef _WIN32
/* add user specified locale to environment */
setenv("LANGUAGE", configured_language.c_str(), 1);
/* reload locale with changed environment */
setlocale(LC_ALL, "");
#elif defined(_MSC_VER)
std::string current_language_var("");
if (getenv("LANGUAGE") != 0) {
current_language_var = std::string(getenv("LANGUAGE"));
}
char *lang_str = (char*)calloc(10 + configured_language.length(), sizeof(char));
strcat(lang_str, "LANGUAGE=");
strcat(lang_str, configured_language.c_str());
putenv(lang_str);
SetEnvironmentVariableA("LANGUAGE",configured_language.c_str());
#ifndef SERVER
//very very dirty workaround to force gettext to see the right environment
if (current_language_var != configured_language) {
STARTUPINFO startupinfo;
PROCESS_INFORMATION processinfo;
memset(&startupinfo, 0, sizeof(startupinfo));
memset(&processinfo, 0, sizeof(processinfo));
errorstream << "MSVC localization workaround active restating minetest in new environment!" << std::endl;
std::string parameters = "";
for (unsigned int i=1;i < argc; i++) {
if (parameters != "") {
parameters += " ";
}
parameters += argv[i];
}
const char* ptr_parameters = 0;
if (parameters != "") {
ptr_parameters = parameters.c_str();
}
/** users may start by short name in commandline without extention **/
std::string appname = argv[0];
if (appname.substr(appname.length() - 4) != ".exe") {
appname += ".exe";
}
if (!CreateProcess(appname.c_str(),
(char*) ptr_parameters,
NULL,
NULL,
false,
DETACHED_PROCESS | CREATE_UNICODE_ENVIRONMENT,
NULL,
NULL,
&startupinfo,
&processinfo)) {
char buffer[1024];
FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM,
NULL,
GetLastError(),
MAKELANGID(LANG_NEUTRAL,SUBLANG_DEFAULT),
buffer,
sizeof(buffer)-1,
NULL);
errorstream << "*******************************************************" << std::endl;
errorstream << "CMD: " << appname << std::endl;
errorstream << "Failed to restart with current locale: " << std::endl;
errorstream << buffer;
errorstream << "Expect language to be broken!" << std::endl;
errorstream << "*******************************************************" << std::endl;
}
else {
exit(0);
}
#else
errorstream << "*******************************************************" << std::endl;
errorstream << "Can't apply locale workaround for server!" << std::endl;
errorstream << "Expect language to be broken!" << std::endl;
errorstream << "*******************************************************" << std::endl;
#endif
}
setlocale(LC_ALL,configured_language.c_str());
#else // Mingw
char *lang_str = (char*)calloc(10 + configured_language.length(), sizeof(char));
strcat(lang_str, "LANGUAGE=");
strcat(lang_str, configured_language.c_str());
putenv(lang_str);
//.........这里部分代码省略.........
开发者ID:4aiman,项目名称:MultiCraft,代码行数:101,代码来源:gettext.cpp
示例3: switch
void DtPrinterIcon::DndCB(BaseUI *obj, char **value, int * /*len*/,
DNDProtocol dndProtocol)
{
DtPrinterIcon *printer;
if (obj->UIClass() == ICON)
printer = (DtPrinterIcon *)obj;
else
printer = (DtPrinterIcon *)obj->Parent();
DtActionArg ap[1];
char *old_LPDEST = NULL;
ap[0].argClass = DtACTION_FILE;
char *buf = new char[100];
switch (dndProtocol)
{
case FILENAME_TRANSFER: // Dropping an Object on a printer
ap[0].u.file.name = *value;
if (printer->PrintActionExists())
sprintf(buf, "%s_Print", printer->queue->Name());
else
{
if (old_LPDEST = STRDUP(getenv("LPDEST")))
{
sprintf(buf, "LPDEST=%s", printer->queue->Name());
putenv(buf);
}
strcpy(buf, "Print");
}
DtActionInvoke(((AnyUI *)printer->mainw->Parent())->BaseWidget(), buf, ap,
1, NULL, NULL, NULL, True, NULL, NULL);
if (old_LPDEST)
{
sprintf(buf, "LPDEST=%s", old_LPDEST);
putenv(buf);
delete old_LPDEST;
}
break;
case CONVERT_DATA: // Dragging a printer to an object
if (printer->PrintActionExists())
{
struct stat statbuff;
*value = new char[strlen(homeDir) + strlen(PRINTERS_PERSONAL_DIR) +
strlen(printer->queue->Name()) + 10];
sprintf(*value, "%s/%s/%s_Print", homeDir, PRINTERS_PERSONAL_DIR,
printer->queue->Name());
if (stat(*value, &statbuff) < 0)
{
int fd = creat(*value, 0755);
close(fd);
}
}
else
*value = NULL;
break;
case DROP_ON_ROOT:
{
char *x = *value;
char *y = strchr(x, '\n');
*y++ = '\0';
char *filename = strchr(y, '\n');
*filename++ = '\0';
char *work_space = strchr(filename, '\n');
if (work_space)
*work_space++ = '\0';
}
break;
case TEXT_TRANSFER:
break;
case BUFFER_TRANSFER:
*value = new char[strlen(printer->queue->Name()) + 10];
sprintf(*value, "%s_Print", printer->queue->Name());
break;
case CONVERT_DELETE:
break;
case ANIMATE:
break;
}
delete [] buf;
}
开发者ID:juddy,项目名称:edcde,代码行数:80,代码来源:DtPrinterIcon.C
示例4: GenericAgentConfigNewDefault
GenericAgentConfig *CheckOpts(int argc, char **argv)
{
extern char *optarg;
char ld_library_path[CF_BUFSIZE];
int optindex = 0;
int c;
GenericAgentConfig *config = GenericAgentConfigNewDefault(AGENT_TYPE_SERVER);
while ((c = getopt_long(argc, argv, "dvIKf:D:N:VSxLFMh", OPTIONS, &optindex)) != EOF)
{
switch ((char) c)
{
case 'f':
if (optarg && (strlen(optarg) < 5))
{
FatalError(" -f used but argument \"%s\" incorrect", optarg);
}
GenericAgentConfigSetInputFile(config, optarg);
MINUSF = true;
break;
case 'd':
DEBUG = true;
NO_FORK = true;
case 'K':
IGNORELOCK = true;
break;
case 'D':
NewClassesFromString(optarg);
break;
case 'N':
NegateClassesFromString(optarg);
break;
case 'I':
INFORM = true;
break;
case 'v':
VERBOSE = true;
NO_FORK = true;
break;
case 'F':
NO_FORK = true;
break;
case 'L':
CfOut(cf_verbose, "", "Setting LD_LIBRARY_PATH=%s\n", optarg);
snprintf(ld_library_path, CF_BUFSIZE - 1, "LD_LIBRARY_PATH=%s", optarg);
putenv(ld_library_path);
break;
case 'V':
PrintVersionBanner("cf-serverd");
exit(0);
case 'h':
Syntax("cf-serverd - cfengine's server agent", OPTIONS, HINTS, ID);
exit(0);
case 'M':
ManPage("cf-serverd - cfengine's server agent", OPTIONS, HINTS, ID);
exit(0);
case 'x':
SelfDiagnostic();
exit(0);
default:
Syntax("cf-serverd - cfengine's server agent", OPTIONS, HINTS, ID);
exit(1);
}
}
if (argv[optind] != NULL)
{
CfOut(cf_error, "", "Unexpected argument with no preceding option: %s\n", argv[optind]);
FatalError("Aborted");
}
CfDebug("Set debugging\n");
return config;
}
开发者ID:cyphermaster,项目名称:core,代码行数:91,代码来源:cf-serverd-functions.c
示例5: main
/* A binary wrapper is needed around python scripts if we want
* to run them in sgid/suid mode.
*
* This is such a wrapper.
*/
int main(int argc, char **argv)
{
/*
* We disallow passing of arguments which point to writable dirs
* and other files possibly not accessible to calling user.
* This way, the script will always use default values for these arguments.
*/
char **pp = argv;
char *arg;
while ((arg = *++pp) != NULL)
{
/* Allow taking ids from stdin */
if (strcmp(arg, "--ids=-") == 0)
continue;
if (strncmp(arg, "--exact", 7) == 0)
continue;
if (strncmp(arg, "--cache", 7) == 0)
error_msg_and_die("bad option %s", arg);
if (strncmp(arg, "--tmpdir", 8) == 0)
error_msg_and_die("bad option %s", arg);
if (strncmp(arg, "--ids", 5) == 0)
error_msg_and_die("bad option %s", arg);
}
/* Switch real user/group to effective ones.
* Otherwise yum library gets confused - gets EPERM (why??).
*/
gid_t g = getegid();
/* do setregid only if we have to, to not upset selinux needlessly */
if (g != getgid())
IGNORE_RESULT(setregid(g, g));
uid_t u = geteuid();
if (u != getuid())
{
IGNORE_RESULT(setreuid(u, u));
/* We are suid'ed! */
/* Prevent malicious user from messing up with suid'ed process: */
#if 1
// We forgot to sanitize PYTHONPATH. And who knows what else we forgot
// (especially considering *future* new variables of this kind).
// We switched to clearing entire environment instead:
// However since we communicate through environment variables
// we have to keep a whitelist of variables to keep.
static const char *whitelist[] = {
"REPORT_CLIENT_SLAVE" // Check if the app is being run as a slave
};
const size_t wlsize = sizeof(whitelist)/sizeof(char*);
char *setlist[sizeof(whitelist)/sizeof(char*)] = { 0 };
char *p = NULL;
for (size_t i = 0; i < wlsize; i++)
if ((p = getenv(whitelist[i])) != NULL)
setlist[i] = xstrdup(p);
// Now we can clear the environment
clearenv();
// And once again set whitelisted variables
for (size_t i = 0; i < wlsize; i++)
if (setlist[i] != NULL)
{
xsetenv(whitelist[i], setlist[i]);
free(setlist[i]);
}
#else
/* Clear dangerous stuff from env */
static const char forbid[] =
"LD_LIBRARY_PATH" "\0"
"LD_PRELOAD" "\0"
"LD_TRACE_LOADED_OBJECTS" "\0"
"LD_BIND_NOW" "\0"
"LD_AOUT_LIBRARY_PATH" "\0"
"LD_AOUT_PRELOAD" "\0"
"LD_NOWARN" "\0"
"LD_KEEPDIR" "\0"
;
const char *p = forbid;
do {
unsetenv(p);
p += strlen(p) + 1;
} while (*p);
#endif
/* Set safe PATH */
// Adding configure --bindir and --sbindir to the PATH so that
// abrt-action-install-debuginfo doesn't fail when spawning
// abrt-action-trim-files
char path_env[] = "PATH=/usr/sbin:/sbin:/usr/bin:/bin:"BIN_DIR":"SBIN_DIR;
if (u != 0)
strcpy(path_env, "PATH=/usr/bin:/bin:"BIN_DIR);
putenv(path_env);
}
execvp(EXECUTABLE, argv);
//.........这里部分代码省略.........
开发者ID:vrutkovs,项目名称:abrt,代码行数:101,代码来源:abrt-action-install-debuginfo-to-abrt-cache.c
示例6: setEnviron
void setEnviron(char* param) {
if (0 > putenv(param)) {
perror("Cannot set or add env variable");
}
}
开发者ID:aceisnotmycard,项目名称:nsu_operating_systems_vol2,代码行数:5,代码来源:main.c
示例7: run_pelog
//.........这里部分代码省略.........
} /* END for (aindex) */
/*
* Pass Resource_List.nodes request in environment
* to allow pro/epi-logue setup/teardown of system
* settings. --pw, 2 Jan 02
* Fixed to use putenv for sysV compatibility.
* --troy, 11 jun 03
*
*/
r = find_resc_entry(
&pjob->ji_wattr[(int)JOB_ATR_resource],
find_resc_def(svr_resc_def, "nodes", svr_resc_size));
if (r != NULL)
{
/* setenv("PBS_RESOURCE_NODES",r->rs_value.at_val.at_str,1); */
const char *envname = "PBS_RESOURCE_NODES=";
char *envstr;
envstr = malloc(
(strlen(envname) + strlen(r->rs_value.at_val.at_str) + 1) * sizeof(char));
if (envstr != NULL)
{
strcpy(envstr,envname);
strcat(envstr,r->rs_value.at_val.at_str);
/* do _not_ free the string when using putenv */
putenv(envstr);
}
} /* END if (r != NULL) */
r = find_resc_entry(
&pjob->ji_wattr[(int)JOB_ATR_resource],
find_resc_def(svr_resc_def, "gres", svr_resc_size));
if (r != NULL)
{
/* setenv("PBS_RESOURCE_NODES",r->rs_value.at_val.at_str,1); */
const char *envname = "PBS_RESOURCE_GRES=";
char *envstr;
envstr = malloc(
(strlen(envname) + strlen(r->rs_value.at_val.at_str) + 1) * sizeof(char));
if (envstr != NULL)
{
strcpy(envstr,envname);
strcat(envstr,r->rs_value.at_val.at_str);
/* do _not_ free the string when using putenv */
putenv(envstr);
}
} /* END if (r != NULL) */
if (TTmpDirName(pjob, buf))
{
const char *envname = "TMPDIR=";
开发者ID:risyomei-poppin-games,项目名称:PBS,代码行数:67,代码来源:prolog.c
示例8: I_InitGraphics
void I_InitGraphics(void)
{
SDL_Event dummy;
byte *doompal;
char *env;
// Pass through the XSCREENSAVER_WINDOW environment variable to
// SDL_WINDOWID, to embed the SDL window into the Xscreensaver
// window.
env = getenv("XSCREENSAVER_WINDOW");
if (env != NULL)
{
char winenv[30];
int winid;
sscanf(env, "0x%x", &winid);
snprintf(winenv, sizeof(winenv), "SDL_WINDOWID=%i", winid);
putenv(winenv);
}
SetSDLVideoDriver();
SetWindowPositionVars();
if (SDL_Init(SDL_INIT_VIDEO) < 0)
{
I_Error("Failed to initialize video: %s", SDL_GetError());
}
// Set up title and icon. Windows cares about the ordering; this
// has to be done before the call to SDL_SetVideoMode.
I_InitWindowTitle();
#if !SDL_VERSION_ATLEAST(1, 3, 0)
I_InitWindowIcon();
#endif
// Warning to OS X users... though they might never see it :(
#ifdef __MACOSX__
if (fullscreen)
{
printf("Some old versions of OS X might crash in fullscreen mode.\n"
"If this happens to you, switch back to windowed mode.\n");
}
#endif
//
// Enter into graphics mode.
//
// When in screensaver mode, run full screen and auto detect
// screen dimensions (don't change video mode)
//
if (screensaver_mode)
{
SetVideoMode(NULL, 0, 0);
}
else
{
int w, h;
if (autoadjust_video_settings)
{
I_AutoAdjustSettings();
}
w = screen_width;
h = screen_height;
screen_mode = I_FindScreenMode(w, h);
if (screen_mode == NULL)
{
I_Error("I_InitGraphics: Unable to find a screen mode small "
"enough for %ix%i", w, h);
}
if (w != screen_mode->width || h != screen_mode->height)
{
printf("I_InitGraphics: %s (%ix%i within %ix%i)\n",
WindowBoxType(screen_mode, w, h),
screen_mode->width, screen_mode->height, w, h);
}
SetVideoMode(screen_mode, w, h);
}
// Start with a clear black screen
// (screen will be flipped after we set the palette)
SDL_FillRect(screenbuffer, NULL, 0);
// Set the palette
doompal = W_CacheLumpName(DEH_String("PLAYPAL"), PU_CACHE);
I_SetPalette(doompal);
SDL_SetColors(screenbuffer, palette, 0, 256);
//.........这里部分代码省略.........
开发者ID:MP2E,项目名称:chocolate-doom,代码行数:101,代码来源:i_video.c
示例9: main
//.........这里部分代码省略.........
if (i + 1 == argc) {
setenv("comconsole_speed", "115200", 1);
} else {
cpy16to8(&argv[i + 1][0], var,
sizeof(var));
setenv("comconsole_speedspeed", var, 1);
}
i++;
break;
} else {
cpy16to8(&argv[i][j + 1], var,
sizeof(var));
setenv("comconsole_speed", var, 1);
break;
}
case 'v':
howto |= RB_VERBOSE;
break;
}
}
} else {
vargood = 0;
for (j = 0; argv[i][j] != 0; j++) {
if (j == sizeof(var)) {
vargood = 0;
break;
}
if (j > 0 && argv[i][j] == '=')
vargood = 1;
var[j] = (char)argv[i][j];
}
if (vargood) {
var[j] = 0;
putenv(var);
}
}
}
for (i = 0; howto_names[i].ev != NULL; i++)
if (howto & howto_names[i].mask)
setenv(howto_names[i].ev, "YES", 1);
if (howto & RB_MULTIPLE) {
if (howto & RB_SERIAL)
setenv("console", "comconsole efi" , 1);
else
setenv("console", "efi comconsole" , 1);
} else if (howto & RB_SERIAL) {
setenv("console", "comconsole" , 1);
}
if (efi_copy_init()) {
printf("failed to allocate staging area\n");
return (EFI_BUFFER_TOO_SMALL);
}
/*
* March through the device switch probing for things.
*/
for (i = 0; devsw[i] != NULL; i++)
if (devsw[i]->dv_init != NULL)
(devsw[i]->dv_init)();
/* Get our loaded image protocol interface structure. */
BS->HandleProtocol(IH, &imgid, (VOID**)&img);
printf("Command line arguments:");
for (i = 0; i < argc; i++)
开发者ID:jaredmcneill,项目名称:freebsd,代码行数:67,代码来源:main.c
示例10: I_InitGraphics
void I_InitGraphics(void)
{
SDL_Event dummy;
byte *doompal;
int flags = 0;
char *env;
// Pass through the XSCREENSAVER_WINDOW environment variable to
// SDL_WINDOWID, to embed the SDL window into the Xscreensaver
// window.
env = getenv("XSCREENSAVER_WINDOW");
if (env != NULL)
{
char winenv[30];
int winid;
sscanf(env, "0x%x", &winid);
sprintf(winenv, "SDL_WINDOWID=%i", winid);
putenv(winenv);
}
SetSDLVideoDriver();
if (SDL_Init(SDL_INIT_VIDEO) < 0)
{
I_Error("Failed to initialize video: %s", SDL_GetError());
}
// Check for command-line video-related parameters.
CheckCommandLine();
doompal = W_CacheLumpName (DEH_String("PLAYPAL"),PU_CACHE);
if (screensaver_mode)
{
windowwidth = 0;
windowheight = 0;
}
else
{
if (autoadjust_video_settings)
{
I_AutoAdjustSettings();
}
windowwidth = screen_width;
windowheight = screen_height;
screen_mode = I_FindScreenMode(windowwidth, windowheight);
if (screen_mode == NULL)
{
I_Error("I_InitGraphics: Unable to find a screen mode small "
"enough for %ix%i", windowwidth, windowheight);
}
if (windowwidth != screen_mode->width
|| windowheight != screen_mode->height)
{
printf("I_InitGraphics: %s (%ix%i within %ix%i)\n",
WindowBoxType(screen_mode, windowwidth, windowheight),
screen_mode->width, screen_mode->height,
windowwidth, windowheight);
}
// Generate lookup tables before setting the video mode.
if (screen_mode->InitMode != NULL)
{
screen_mode->InitMode(doompal);
}
}
// Set up title and icon. Windows cares about the ordering; this
// has to be done before the call to SDL_SetVideoMode.
I_SetWindowCaption();
#if !SDL_VERSION_ATLEAST(1, 3, 0)
I_SetWindowIcon();
#endif
// Set the video mode.
flags |= SDL_SWSURFACE | SDL_HWPALETTE | SDL_DOUBLEBUF;
if (fullscreen)
{
flags |= SDL_FULLSCREEN;
}
screen = SDL_SetVideoMode(windowwidth, windowheight, 8, flags);
if (screen == NULL)
{
I_Error("Error setting video mode: %s\n", SDL_GetError());
}
//.........这里部分代码省略.........
开发者ID:hifi-unmaintained,项目名称:chocolate-doom-launcher,代码行数:101,代码来源:i_video.c
示例11: main
//----------------------------------- Main -------------------------------------
int main(int argc, char *argv[])
{
std::string cheat_string = "cheat";
//std::locale::global( std::locale( "" ) );
events_init();
game.log.File_Set("Star.P.G..log");
game.log.File_Clear();
if (argc > 1)
{
for (int count = 0; count < (argc+1); count++)
{
//game.log.File_Write(argv[count]);
if (cheat_string.compare(argv[count]) == 0) game_o.cheats_enabled = true;
}
}
//game_o.cheats_enabled = true; /// test!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
game.log.File_Write("------------------");
game.log.File_Write("| Star.P.G V1.01 |");
game.log.File_Write("------------------\n");
game.log.File_Write("Starting up!");
game.log.File_Write("");
game.log.File_Write("------------------\n");
//if (game_o.cheats_enabled) game.log.File_Write("Cheating enabled!\n");
game.config.File_Set("Star.P.G..cfg");
game.config.Set_Defaults();
game.log.File_Write("Loading config...");
game.config.File_Set("Star.P.G..cfg");
game.config.File_Read();
game.log.File_Write("Loading language file -> data/configuration/languages/"+game.config.language+".txt");
game_o.language.load("data/configuration/languages/"+game.config.language+".txt");
//----------------------------------- Start the PhysicsFS ----------------------
//game.log.File_Write("Starting PhysicsFS...");
//PHYSFS_init(argv[0]);
//PHYSFS_addToSearchPath("Star.P.G..spg", 1);
//----------------------------------- SDL Video --------------------------------
game.log.File_Write("Starting SDL...");
char SDL_VID_WIN_POS[] = "SDL_VIDEO_WINDOW_POS";
char SDL_VID_CENTERD[] = "SDL_VIDEO_CENTERED=1";
putenv(SDL_VID_WIN_POS);
putenv(SDL_VID_CENTERD);
getenv("SDL_VIDEO_WINDOW_POS");
getenv("SDL_VIDEO_CENTERED");
SDL_Init(SDL_INIT_VIDEO | SDL_INIT_EVENTTHREAD);
game.log.File_Write("Starting OpenGL...");
if (game.config.Display_Fullscreen) SDL_SetVideoMode(game.config.Display_X_Resolution,game.config.Display_Y_Resolution,game.config.Display_BPS,SDL_OPENGL | SDL_FULLSCREEN);
else SDL_SetVideoMode(game.config.Display_X_Resolution,game.config.Display_Y_Resolution,game.config.Display_BPS,SDL_OPENGL/* | SDL_NOFRAME */);
SDL_GL_SetAttribute( SDL_GL_DOUBLEBUFFER, 1 );
App_Icon_Surface = SDL_LoadBMP(App_Icon);
colorkey = SDL_MapRGB(App_Icon_Surface->format, 255, 0, 255);
SDL_SetColorKey(App_Icon_Surface, SDL_SRCCOLORKEY, colorkey);
SDL_WM_SetIcon(App_Icon_Surface,NULL);
SDL_WM_SetCaption(App_Name, 0);
//SDL_ShowCursor(SDL_DISABLE);
//----------------------------------- SDL Audio --------------------------------
game.log.File_Write("Starting sound system...");
SDL_Init(SDL_INIT_AUDIO);
Mix_AllocateChannels(game.config.Audio_Channels);
Mix_OpenAudio(game.config.Audio_Rate, AUDIO_S16, 2, game.config.Audio_Buffers);
Mix_Volume(-1,game.config.Audio_Sound_Volume);
Mix_VolumeMusic(game.config.Audio_Music_Volume);
game.log.File_Write("Initializing joystick / gamepad...");
SDL_Init(SDL_INIT_JOYSTICK);
game.log.File_Write("Initializing game system...");
init_game(false);
game.log.File_Write("Initializing projectiles...");
init_player_bullets();
game.log.File_Write("Initializing explosions...");
init_explosions();
game.log.File_Write("Initializing NPCs...\n");
init_active_npcs();
init_npc_bullets();
init_npcs(0);
game_o.current_level = 0;
game.log.File_Write("Initializing OpenGL...");
game.graphics.init_gl(game.config.Display_X_Resolution,game.config.Display_Y_Resolution);
seed_rand();
TTF_Init();
game.log.File_Write("Loading resources...");
loading_screen_display("data/textures/misc/loading_screen.png");
load_resources();
game.log.File_Write("Initializing menu system...");
init_menu();
init_in_game_message_class();
init_projectiles(false);
init_powerups();
init_shields(false);
init_game(false);
game.log.File_Write("Starting game...");
game.log.File_Write("---------------\n");
//----------------------------------- Main loop --------------------------------
game.timer.start();
game.LastTicks = game.timer.getticks();
for(int quit = 0; !quit;)
{
game.config.process(false);
if (game.config.mouse_autohide) SDL_ShowCursor(SDL_DISABLE);
else SDL_ShowCursor(SDL_ENABLE);
proc_textures();
//.........这里部分代码省略.........
开发者ID:Paul-Wortmann,项目名称:Star.P.G.,代码行数:101,代码来源:main.cpp
示例12: main
int
main(int argc, char *argv[])
{
int authenticated = 0;
int retcode;
char *username;
int setcred = 1;
if (argc < 2 || argc > 3) {
fprintf(stderr, "Usage: %s [-u] <user>\n", argv[0]);
exit(1);
}
if (argc == 3) {
if (strcmp(argv[1], "-u") != 0) {
fprintf(stderr, "Usage: %s [-u] <user>\n", argv[0]);
exit(1);
}
/* service = "unixtest"; */
setcred = 0;
username = argv[2];
} else {
username = argv[1];
}
if ((retcode =
pam_start(service, username, &pam_conv, &pamh)) != PAM_SUCCESS) {
fprintf(stderr, "PAM error %d\n", retcode);
exit(1);
}
authenticated = ((retcode = pam_authenticate(pamh, 0)) == PAM_SUCCESS);
if (!authenticated) {
fprintf(stderr, "PAM couldn't authenticate you.\n");
pam_end(pamh, PAM_ABORT);
exit(1);
}
if ((retcode = pam_acct_mgmt(pamh, 0)) != PAM_SUCCESS) {
fprintf(stderr, "pam_acct_mgmt returned %d.\n", retcode);
pam_end(pamh, PAM_ABORT);
exit(1);
}
/* pam_open_session */
if (setcred)
if ((retcode = pam_setcred(pamh, PAM_ESTABLISH_CRED)) != PAM_SUCCESS) {
fprintf(stderr, "pam_setcred returned %d.\n", retcode);
pam_end(pamh, PAM_ABORT);
exit(1);
}
if ((retcode = pam_open_session(pamh, PAM_SILENT)) != PAM_SUCCESS) {
fprintf(stderr, "pam_open_session returned %d.\n", retcode);
pam_end(pamh, PAM_ABORT);
exit(1);
}
pam_end(pamh, PAM_SUCCESS);
putenv((char *)new_envstring);
putenv((char *)new_homestring);
if ((retcode = chdir("/tmp")) != 0) {
fprintf(stderr, "chdir returned %d.\n", retcode);
exit(1);
}
printf("Type exit to back out.\n");
return execl("/bin/csh", "/bin/csh", NULL);
}
开发者ID:krichter722,项目名称:openafs,代码行数:71,代码来源:test_pam.c
示例13: zbx_db_connect
//.........这里部分代码省略.........
{
zabbix_errlog(ERR_Z3001, dbname, mysql_errno(conn), mysql_error(conn));
ret = ZBX_DB_FAIL;
}
}
if (ZBX_DB_OK == ret)
{
DBexecute("set names utf8");
}
if (ZBX_DB_FAIL == ret)
{
switch (mysql_errno(conn))
{
case CR_CONN_HOST_ERROR:
case CR_SERVER_GONE_ERROR:
case CR_CONNECTION_ERROR:
case CR_SERVER_LOST:
case ER_SERVER_SHUTDOWN:
case ER_ACCESS_DENIED_ERROR: /* wrong user or password */
case ER_ILLEGAL_GRANT_FOR_TABLE: /* user without any privileges */
case ER_TABLEACCESS_DENIED_ERROR: /* user without some privilege */
case ER_UNKNOWN_ERROR:
ret = ZBX_DB_DOWN;
break;
default:
break;
}
}
#elif defined(HAVE_ORACLE)
#if defined(HAVE_GETENV) && defined(HAVE_PUTENV)
if (NULL == getenv("NLS_LANG"))
putenv("NLS_LANG=.UTF8");
#endif
memset(&oracle, 0, sizeof(oracle));
/* connection string format: [//]host[:port][/service name] */
if ('\0' != *host)
{
connect = zbx_strdcatf(connect, "//%s", host);
if (0 != port)
connect = zbx_strdcatf(connect, ":%d", port);
if (NULL != dbname && '\0' != *dbname)
connect = zbx_strdcatf(connect, "/%s", dbname);
}
else
ret = ZBX_DB_FAIL;
if (ZBX_DB_OK == ret)
{
/* initialize environment */
err = OCIEnvCreate((OCIEnv **)&oracle.envhp, (ub4)OCI_DEFAULT,
(dvoid *)0, (dvoid * (*)(dvoid *,size_t))0,
(dvoid * (*)(dvoid *, dvoid *, size_t))0,
(void (*)(dvoid *, dvoid *))0, (size_t)0, (dvoid **)0);
if (OCI_SUCCESS != err)
{
zabbix_errlog(ERR_Z3001, connect, err, zbx_oci_error(err));
ret = ZBX_DB_FAIL;
}
}
if (ZBX_DB_OK == ret)
开发者ID:diegolima,项目名称:zabbix-uglibc-mips,代码行数:67,代码来源:db.c
示例14: putenv_wrapper
// coverity[ +free : arg-0 ]
int putenv_wrapper(char * var)
{
return putenv(var);
}
开发者ID:dudochkin-victor,项目名称:touch-applauncherd,代码行数:5,代码来源:connection.cpp
示例15: pg_perm_setlocale
/*
* pg_perm_setlocale
*
* This is identical to the libc function setlocale(), with the addition
* that if the operation is successful, the corresponding LC_XXX environment
* variable is set to match. By setting the environment variable, we ensure
* that any subsequent use of setlocale(..., "") will preserve the settings
* made through this routine. Of course, LC_ALL must also be unset to fully
* ensure that, but that has to be done elsewhere after all the individual
* LC_XXX variables have been set correctly. (Thank you Perl for making this
* kluge necessary.)
*/
char *
pg_perm_setlocale(int category, const char *locale)
{
char *result;
const char *envvar;
char *envbuf;
#ifndef WIN32
result = setlocale(category, locale);
#else
/*
* On Windows, setlocale(LC_MESSAGES) does not work, so just assume that
* the given value is good and set it in the environment variables. We
* must ignore attempts to set to "", which means "keep using the old
* environment value".
*/
#ifdef LC_MESSAGES
if (category == LC_MESSAGES)
{
result = (char *) locale;
if (locale == NULL || locale[0] == '\0')
return result;
}
else
#endif
result = setlocale(category, locale);
#endif /* WIN32 */
if (result == NULL)
return result; /* fall out immediately on failure */
switch (category)
{
case LC_COLLATE:
envvar = "LC_COLLATE";
envbuf = lc_collate_envbuf;
break;
case LC_CTYPE:
envvar = "LC_CTYPE";
envbuf = lc_ctype_envbuf;
break;
#ifdef LC_MESSAGES
case LC_MESSAGES:
envvar = "LC_MESSAGES";
envbuf = lc_messages_envbuf;
#ifdef WIN32
result = IsoLocaleName(locale);
if (result == NULL)
result = (char *) locale;
#endif /* WIN32 */
break;
#endif /* LC_MESSAGES */
case LC_MONETARY:
envvar = "LC_MONETARY";
envbuf = lc_monetary_envbuf;
break;
case LC_NUMERIC:
envvar = "LC_NUMERIC";
envbuf = lc_numeric_envbuf;
break;
case LC_TIME:
envvar = "LC_TIME";
envbuf = lc_time_envbuf;
break;
default:
elog(FATAL, "unrecognized LC category: %d", category);
envvar = NULL; /* keep compiler quiet */
envbuf = NULL;
return NULL;
}
snprintf(envbuf, LC_ENV_BUFSIZE - 1, "%s=%s", envvar, result);
if (putenv(envbuf))
return NULL;
return result;
}
开发者ID:Epictetus,项目名称:postgres,代码行数:91,代码来源:pg_locale.c
示例16: main
int main(int argc, char** argv)
{
const char* progname = basename(strdup(argv[0]));
if (argc <= 1)
return usage(progname);
// special case -- if the first arg is "--init.d", then we just build symlinks
if (strcmp(argv[1], "--init.d") == 0)
{
std::list<char*> ns_args;
for (int i = 1; i < argc; ++i)
ns_args.push_back(argv[i]);
int ret = create_symlinks_and_metadata(progname, ns_args);
return ret;
}
// Search **backwards** from the end of the commandline for --
// from end to 1st -- is the environment args (env_args)
// up to 2nd -- is the with namespace args (ns_args)
// rest is the command args (exec_args)
// This also means you need to push to **front**, not **back**.
std::list<char*> env_args, ns_args, exec_args;
int i = argc - 1; // start at 1 since 0 is progname
while (i > 0 && strcmp(argv[i], "--") != 0)
env_args.push_front(argv[i--]);
i--; // skip --
while (i > 0 && strcmp(argv[i], "--") != 0)
ns_args.push_front(argv[i--]);
if (ns_args.size() == 0) // must at least have mount name
return usage(progname);
i--; // skip --
while (i > 0)
exec_args.push_front(argv[i--]);
exec_args.push_back(NULL); // execvp requires final argument be NULL
// detach from our parent's namespace
CHECK(unshare(CLONE_NEWNS) == 0, "%s: unshare failed: %m\n", progname);
// umount the old /with (this mount is now private for us)
// the MNT_DETACH is needed if some joker set getcwd() to /with.
int ret = umount2(WITH_MOUNTPOINT, MNT_DETACH);
CHECK(ret >= 0, "%s: umount2 tmpfs " WITH_MOUNTPOINT " failed: %m\n", progname);
// after the -- is mount_name target1=src1 target2=src2 -- env
char* mount_name = ns_args.front();
assert(mount_name);
ret = mount(mount_name, "/with", "tmpfs", 0, NULL);
CHECK(ret >= 0, "%s: mount tmpfs " WITH_MOUNTPOINT " failed: %m\n", progname);
// build out the symlinks from the namespace
ret = create_symlinks_and_metadata(progname, ns_args);
if (ret != 0) // CHECKs are performed in the function
return ret;
// write env metadata
FILE* fd = fopen(WITH_MOUNTPOINT "/.env", "w");
CHECK(fd >= 0, "%s: unable to write env metadata: %m\n%s\n", progname, WITH_MOUNTPOINT "/.env");
for (std::list<char*>::const_iterator it = env_args.begin(), end = env_args.end(); it != end; ++it)
fprintf(fd, "%s\n", *it);
fclose(fd);
// drop setuid
int uid = getuid(), gid = getgid();
CHECK(setresuid(uid, uid, uid) >= 0 && setresgid(gid, gid, gid) >= 0,
"%s: setresuid/setresgid failed: %m\n", progname);
// now that we've dropped privileges, install the environment
// that was passed on the commandline.
clearenv();
for (std::list<char*>::const_iterator it = env_args.begin(), end = env_args.end(); it != end; ++it)
{
char* env_var = *it;
assert(env_var);
putenv(env_var);
}
// we need to copy exec_args to a vector so it's laid out like an array
std::vector<char*> exec_args_as_array(exec_args.begin(), exec_args.end());
CHECK(execvp(exec_args_as_array[0], &exec_args_as_array[0]) != -1, "%s: cannot exec %s: %m\n", progname, exec_args_as_array[0]);
return 1;
}
开发者ID:athenacr,项目名称:with.namespace,代码行数:81,代码来源:exec_with_namespace.cpp
示例17: main
int
main(int argc, char *argv[])
{
netsnmp_session session, *ss;
netsnmp_pdu *pdu, *response;
oid name[MAX_OID_LEN];
size_t name_length;
int arg;
int status;
char *trap = NULL;
char *prognam;
int exitval = 0;
#ifndef NETSNMP_DISABLE_SNMPV1
char *specific = NULL, *description = NULL, *agent = NULL;
in_addr_t *pdu_in_addr_t;
#endif
prognam = strrchr(argv[0], '/');
if (prognam)
prognam++;
else
prognam = argv[0];
putenv(strdup("POSIXLY_CORRECT=1"));
if (strcmp(prognam, "snmpinform") == 0)
inform = 1;
switch (arg = snmp_parse_args(argc, argv, &session, "C:", optProc)) {
case -2:
exit(0);
case -1:
usage();
exit(1);
default:
break;
}
SOCK_STARTUP;
session.callback = snmp_input;
session.callback_magic = NULL;
if (session.version == SNMP_VERSION_3 && !inform) {
/*
* for traps, we use ourselves as the authoritative engine
* which is really stupid since command line apps don't have a
* notion of a persistent engine. Hence, our boots and time
* values are probably always really wacked with respect to what
* a manager would like to see.
*
* The following should be enough to:
*
* 1) prevent the library from doing discovery for engineid & time.
* 2) use our engineid instead of the remote engineid for
* authoritative & privacy related operations.
* 3) The remote engine must be configured with users for our engineID.
*
* -- Wes
*/
/*
* setup the engineID based on IP addr. Need a different
* algorthim here. This will cause problems with agents on the
* same machine sending traps.
*/
setup_engineID(NULL, NULL);
/*
* pick our own engineID
*/
if (session.securityEngineIDLen == 0 ||
session.securityEngineID == NULL) {
session.securityEngineID =
snmpv3_generate_engineID(&session.securityEngineIDLen);
}
if (session.contextEngineIDLen == 0 ||
session.contextEngineID == NULL) {
session.contextEngineID =
snmpv3_generate_engineID(&session.contextEngineIDLen);
}
/*
* set boots and time, which will cause problems if this
* machine ever reboots and a remote trap receiver has cached our
* boots and time... I'll cause a not-in-time-window report to
* be sent back to this machine.
*/
if (session.engineBoots == 0)
session.engineBoots = 1;
if (session.engineTime == 0) /* not really correct, */
session.engineTime = get_uptime(); /* but it'll work. Sort of. */
}
ss = snmp_add(&session,
netsnmp_transport_open_client("snmptrap
|
请发表评论