1
Fork 0
mirror of https://github.com/RGBCube/uutils-coreutils synced 2025-08-01 21:47:46 +00:00

mkdir: emit error when path is empty

This commit is contained in:
Andrew Liebenow 2024-10-20 10:45:46 -05:00
parent 5b881a0766
commit 80b63931a4
2 changed files with 18 additions and 0 deletions

View file

@ -160,6 +160,13 @@ fn exec(dirs: ValuesRef<OsString>, recursive: bool, mode: u32, verbose: bool) ->
/// To match the GNU behavior, a path with the last directory being a single dot /// To match the GNU behavior, a path with the last directory being a single dot
/// (like `some/path/to/.`) is created (with the dot stripped). /// (like `some/path/to/.`) is created (with the dot stripped).
pub fn mkdir(path: &Path, recursive: bool, mode: u32, verbose: bool) -> UResult<()> { pub fn mkdir(path: &Path, recursive: bool, mode: u32, verbose: bool) -> UResult<()> {
if path.as_os_str().is_empty() {
return Err(USimpleError::new(
1,
"cannot create directory '': No such file or directory".to_owned(),
));
}
// Special case to match GNU's behavior: // Special case to match GNU's behavior:
// mkdir -p foo/. should work and just create foo/ // mkdir -p foo/. should work and just create foo/
// std::fs::create_dir("foo/."); fails in pure Rust // std::fs::create_dir("foo/."); fails in pure Rust

View file

@ -2,6 +2,9 @@
// //
// For the full copyright and license information, please view the LICENSE // For the full copyright and license information, please view the LICENSE
// file that was distributed with this source code. // file that was distributed with this source code.
// spell-checker:ignore bindgen
#![allow(clippy::cast_sign_loss, clippy::cast_possible_truncation)] #![allow(clippy::cast_sign_loss, clippy::cast_possible_truncation)]
use crate::common::util::TestScenario; use crate::common::util::TestScenario;
@ -332,3 +335,11 @@ fn test_umask_compliance() {
test_single_case(i as mode_t); test_single_case(i as mode_t);
} }
} }
#[test]
fn test_empty_argument() {
new_ucmd!()
.arg("")
.fails()
.stderr_only("mkdir: cannot create directory '': No such file or directory\n");
}