@@ -77,16 +77,26 @@ configure_file <- function(
77
77
rhs = " @" ,
78
78
verbose = configure_verbose())
79
79
{
80
+ # read source file
80
81
contents <- readLines(source , warn = FALSE )
82
+
83
+ # replace defined variables
81
84
enumerate(config , function (key , val ) {
82
85
needle <- paste(lhs , key , rhs , sep = " " )
83
86
replacement <- val
84
87
contents <<- gsub(needle , replacement , contents , fixed = TRUE )
85
88
})
86
89
87
90
ensure_directory(dirname(target ))
88
- writeLines(contents , con = target )
89
91
92
+ # write configured file to target location
93
+ # prefer unix newlines for Makevars
94
+ mode <- if (target %in% " Makevars" ) " wb" else " w"
95
+ conn <- file(target , open = mode )
96
+ on.exit(close(conn ), add = TRUE )
97
+ writeLines(contents , con = conn )
98
+
99
+ # copy over source permissions
90
100
info <- file.info(source )
91
101
Sys.chmod(target , mode = info $ mode )
92
102
@@ -580,8 +590,9 @@ if (!interactive()) {
580
590
581
591
# switch working directory to the calling scripts's directory as set
582
592
# by the shell, in case the R working directory was set to something else
583
- basedir <- Sys.getenv(" PWD" , unset = " ." )
584
- setwd(basedir )
593
+ basedir <- Sys.getenv(" PWD" , unset = NA )
594
+ if (! is.na(basedir ))
595
+ setwd(basedir )
585
596
586
597
# report start of execution
587
598
package <- Sys.getenv(" R_PACKAGE_NAME" , unset = " <unknown>" )
0 commit comments