mirror of
https://github.com/uutils/coreutils
synced 2025-01-22 01:45:24 +00:00
Merge pull request #4878 from cakebaker/mktemp_4874
mktemp: prioritize TMPDIR over -p when using -t
This commit is contained in:
commit
e5419ade96
2 changed files with 25 additions and 1 deletions
|
@ -42,6 +42,11 @@ static OPT_T: &str = "t";
|
||||||
|
|
||||||
static ARG_TEMPLATE: &str = "template";
|
static ARG_TEMPLATE: &str = "template";
|
||||||
|
|
||||||
|
#[cfg(not(windows))]
|
||||||
|
const TMPDIR_ENV_VAR: &str = "TMPDIR";
|
||||||
|
#[cfg(windows)]
|
||||||
|
const TMPDIR_ENV_VAR: &str = "TMP";
|
||||||
|
|
||||||
#[derive(Debug)]
|
#[derive(Debug)]
|
||||||
enum MkTempError {
|
enum MkTempError {
|
||||||
PersistError(PathBuf),
|
PersistError(PathBuf),
|
||||||
|
@ -191,7 +196,9 @@ impl Options {
|
||||||
(tmpdir, template.to_string())
|
(tmpdir, template.to_string())
|
||||||
}
|
}
|
||||||
Some(template) => {
|
Some(template) => {
|
||||||
let tmpdir = if matches.contains_id(OPT_TMPDIR) {
|
let tmpdir = if env::var(TMPDIR_ENV_VAR).is_ok() && matches.get_flag(OPT_T) {
|
||||||
|
env::var(TMPDIR_ENV_VAR).ok()
|
||||||
|
} else if matches.contains_id(OPT_TMPDIR) {
|
||||||
matches.get_one::<String>(OPT_TMPDIR).map(String::from)
|
matches.get_one::<String>(OPT_TMPDIR).map(String::from)
|
||||||
} else if matches.get_flag(OPT_T) {
|
} else if matches.get_flag(OPT_T) {
|
||||||
// mktemp -t foo.xxx should export in TMPDIR
|
// mktemp -t foo.xxx should export in TMPDIR
|
||||||
|
|
|
@ -884,3 +884,20 @@ fn test_default_issue_4821_t_tmpdir_p() {
|
||||||
println!("stdout = {stdout}");
|
println!("stdout = {stdout}");
|
||||||
assert!(stdout.contains(&pathname));
|
assert!(stdout.contains(&pathname));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn test_t_ensure_tmpdir_has_higher_priority_than_p() {
|
||||||
|
let scene = TestScenario::new(util_name!());
|
||||||
|
let pathname = scene.fixtures.as_string();
|
||||||
|
let result = scene
|
||||||
|
.ucmd()
|
||||||
|
.env(TMPDIR, &pathname)
|
||||||
|
.arg("-t")
|
||||||
|
.arg("-p")
|
||||||
|
.arg("should_not_attempt_to_write_in_this_nonexisting_dir")
|
||||||
|
.arg("foo.XXXX")
|
||||||
|
.succeeds();
|
||||||
|
let stdout = result.stdout_str();
|
||||||
|
println!("stdout = {stdout}");
|
||||||
|
assert!(stdout.contains(&pathname));
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in a new issue