Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions src/uu/mktemp/locales/en-US.ftl
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ mktemp-error-invalid-template = invalid template, { $template }; with --tmpdir,
mktemp-error-too-many-templates = too many templates
mktemp-error-not-found = failed to create { $template_type } via template { $template }: No such file or directory
mktemp-error-failed-print = failed to print directory name
mktemp-error-failed-to-create-file-via-template = failed to create file via template '{ $path }': { $error }

# Template types
mktemp-template-type-directory = directory
Expand Down
1 change: 1 addition & 0 deletions src/uu/mktemp/locales/fr-FR.ftl
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ mktemp-error-invalid-template = modèle invalide, { $template } ; avec --tmpdir,
mktemp-error-too-many-templates = trop de modèles
mktemp-error-not-found = échec de la création de { $template_type } via le modèle { $template } : Aucun fichier ou répertoire de ce type
mktemp-error-failed-print = échec de l'affichage du nom de répertoire
mktemp-error-failed-to-create-file-via-template = fichier à créer à partir d'un modèle '{ $path }': { $error }

# Types de modèle
mktemp-template-type-directory = répertoire
Expand Down
9 changes: 8 additions & 1 deletion src/uu/mktemp/src/mktemp.rs
Original file line number Diff line number Diff line change
Expand Up @@ -599,7 +599,14 @@ fn make_temp_file(dir: &Path, prefix: &str, rand: usize, suffix: &str) -> UResul
let path = Path::new(dir).join(filename);
Err(MkTempError::NotFound(translate!("mktemp-template-type-file"), path).into())
}
Err(e) => Err(e.into()),
Err(e) => {
let filename = format!("{prefix}{}{suffix}", "X".repeat(rand));
let path = Path::new(dir).join(filename);
Err(uucore::error::USimpleError::new(
1,
translate!("mktemp-error-failed-to-create-file-via-template", "path" => path.display(), "error" => uucore::error::strip_errno(&e)),
))
}
}
}

Expand Down
12 changes: 12 additions & 0 deletions tests/by-util/test_mktemp.rs
Original file line number Diff line number Diff line change
Expand Up @@ -1209,3 +1209,15 @@ fn test_mktemp_hidden_file_single_dot() {
template_name.len()
);
}

#[test]
#[cfg(unix)]
fn test_permission_denied_no_os_error() {
let scene = TestScenario::new(util_name!());

let result = scene.ucmd().arg("-p").arg("/").run();

assert!(!result.succeeded());

assert!(!result.stderr_str().contains("os error"));
}
Loading