| # File src/library/base/R/getenv.R |
| # Part of the R package, https://www.R-project.org |
| # |
| # Copyright (C) 1995-2014 The R Core Team |
| # |
| # 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. |
| # |
| # A copy of the GNU General Public License is available at |
| # https://www.R-project.org/Licenses/ |
| |
| Sys.getenv <- function(x = NULL, unset = "", names = NA) |
| { |
| if (is.null(x)) { |
| ## This presumes that '=' does not appear as part of the name |
| ## of an environment variable. That used to happen on Windows. |
| x <- strsplit(.Internal(Sys.getenv(character(), "")), "=", fixed=TRUE) |
| v <- n <- character(LEN <- length(x)) |
| for (i in 1L:LEN) { |
| n[i] <- x[[i]][1L] |
| v[i] <- paste(x[[i]][-1L], collapse = "=") |
| } |
| if (isFALSE(names)) |
| v[sort.list(n)] |
| else { # with names |
| v <- structure(v, names = n) |
| structure(class = "Dlist", # with nice print method |
| v[sort.list(n)]) |
| } |
| } else { |
| v <- .Internal(Sys.getenv(as.character(x), as.character(unset))) |
| if (isTRUE(names) || (length(x) > 1L && !isFALSE(names))) |
| structure(v, names = x) |
| else v |
| } |
| } |
| |
| Sys.setenv <- function(...) |
| { |
| x <- list(...) |
| nm <- names(x) |
| if(is.null(nm) || "" %in% nm) |
| stop("all arguments must be named") |
| .Internal(Sys.setenv(nm, as.character(unlist(x)))) |
| } |
| |
| Sys.unsetenv <- function(x) .Internal(Sys.unsetenv(as.character(x))) |
| |
| Sys.getpid <- function() .Internal(Sys.getpid()) |