jdk
1/*
2* Copyright (c) 2020, 2021, Oracle and/or its affiliates. All rights reserved.
3* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4*
5* This code is free software; you can redistribute it and/or modify it
6* under the terms of the GNU General Public License version 2 only, as
7* published by the Free Software Foundation. Oracle designates this
8* particular file as subject to the "Classpath" exception as provided
9* by Oracle in the LICENSE file that accompanied this code.
10*
11* This code is distributed in the hope that it will be useful, but WITHOUT
12* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
13* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
14* version 2 for more details (a copy is included in the LICENSE file that
15* accompanied this code).
16*
17* You should have received a copy of the GNU General Public License version
18* 2 along with this work; if not, write to the Free Software Foundation,
19* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
20*
21* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
22* or visit www.oracle.com if you need additional information or have any
23* questions.
24*/
25
26#include <stdlib.h>27#include "SysInfo.h"28#include "UnixSysInfo.h"29#include "ErrorHandling.h"30
31namespace SysInfo {32
33tstring getEnvVariable(const tstring& name) {34char *value = ::getenv(name.c_str());35if (!value) {36JP_THROW(tstrings::any() << "getenv("37<< name38<< ") failed. Variable not set");39}40return tstring(value);41}
42
43
44tstring getEnvVariable(const std::nothrow_t&, const tstring& name,45const tstring& defValue) {46char *value = ::getenv(name.c_str());47if (value) {48return tstring(value);49}50return defValue;51}
52
53
54bool isEnvVariableSet(const tstring& name) {55return ::getenv(name.c_str()) != 0;56}
57
58void setEnvVariable(const tstring& name, const tstring& value) {59if (::setenv(name.c_str(), value.c_str(), 1) != 0) {60JP_THROW(tstrings::any() << "setenv(" << name << ", " << value61<< ") failed. Error: " << lastCRTError());62}63}
64
65
66int argc = 0;67char** argv = 0;68
69} // end of namespace SysInfo70