support multiple fs
- use RamFS as rootfs, mount SEFS at /test - for testing convenience, set default cwd to /test - fix spawn path and change_cwd
This commit is contained in:
parent
30265261cf
commit
29278db8f4
2
deps/sefs
vendored
2
deps/sefs
vendored
@ -1 +1 @@
|
|||||||
Subproject commit 4fc745c541dc32d2d674d8bd087e83d72a7e42db
|
Subproject commit 1be96ad39575361037b456f4e5c1eb7b4fbfacec
|
57
src/libos/Cargo.lock
generated
57
src/libos/Cargo.lock
generated
@ -6,9 +6,11 @@ version = "0.0.1"
|
|||||||
dependencies = [
|
dependencies = [
|
||||||
"bitflags 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)",
|
"bitflags 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"derive_builder 0.7.2 (registry+https://github.com/rust-lang/crates.io-index)",
|
"derive_builder 0.7.2 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"lazy_static 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
"lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)",
|
"log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"rcore-fs 0.1.0",
|
"rcore-fs 0.1.0",
|
||||||
|
"rcore-fs-mountfs 0.1.0",
|
||||||
|
"rcore-fs-ramfs 0.1.0",
|
||||||
"rcore-fs-sefs 0.1.0",
|
"rcore-fs-sefs 0.1.0",
|
||||||
"sgx_trts 1.0.6",
|
"sgx_trts 1.0.6",
|
||||||
"sgx_tstd 1.0.6",
|
"sgx_tstd 1.0.6",
|
||||||
@ -50,7 +52,7 @@ dependencies = [
|
|||||||
"proc-macro2 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)",
|
"proc-macro2 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"quote 0.6.12 (registry+https://github.com/rust-lang/crates.io-index)",
|
"quote 0.6.12 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"strsim 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
"strsim 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"syn 0.15.38 (registry+https://github.com/rust-lang/crates.io-index)",
|
"syn 0.15.39 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
@ -60,7 +62,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
|||||||
dependencies = [
|
dependencies = [
|
||||||
"darling_core 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
"darling_core 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"quote 0.6.12 (registry+https://github.com/rust-lang/crates.io-index)",
|
"quote 0.6.12 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"syn 0.15.38 (registry+https://github.com/rust-lang/crates.io-index)",
|
"syn 0.15.39 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
@ -72,7 +74,7 @@ dependencies = [
|
|||||||
"derive_builder_core 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
"derive_builder_core 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"proc-macro2 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)",
|
"proc-macro2 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"quote 0.6.12 (registry+https://github.com/rust-lang/crates.io-index)",
|
"quote 0.6.12 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"syn 0.15.38 (registry+https://github.com/rust-lang/crates.io-index)",
|
"syn 0.15.39 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
@ -83,7 +85,7 @@ dependencies = [
|
|||||||
"darling 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
"darling 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"proc-macro2 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)",
|
"proc-macro2 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"quote 0.6.12 (registry+https://github.com/rust-lang/crates.io-index)",
|
"quote 0.6.12 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"syn 0.15.38 (registry+https://github.com/rust-lang/crates.io-index)",
|
"syn 0.15.39 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
@ -98,11 +100,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "lazy_static"
|
name = "lazy_static"
|
||||||
version = "1.1.0"
|
version = "1.3.0"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"spin 0.4.9 (registry+https://github.com/rust-lang/crates.io-index)",
|
"spin 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"version_check 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)",
|
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
@ -132,6 +133,28 @@ dependencies = [
|
|||||||
[[package]]
|
[[package]]
|
||||||
name = "rcore-fs"
|
name = "rcore-fs"
|
||||||
version = "0.1.0"
|
version = "0.1.0"
|
||||||
|
dependencies = [
|
||||||
|
"spin 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "rcore-fs-mountfs"
|
||||||
|
version = "0.1.0"
|
||||||
|
dependencies = [
|
||||||
|
"lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
|
"log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
|
"rcore-fs 0.1.0",
|
||||||
|
"spin 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "rcore-fs-ramfs"
|
||||||
|
version = "0.1.0"
|
||||||
|
dependencies = [
|
||||||
|
"log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
|
"rcore-fs 0.1.0",
|
||||||
|
"spin 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "rcore-fs-sefs"
|
name = "rcore-fs-sefs"
|
||||||
@ -207,6 +230,11 @@ name = "spin"
|
|||||||
version = "0.4.9"
|
version = "0.4.9"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "spin"
|
||||||
|
version = "0.5.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "static_assertions"
|
name = "static_assertions"
|
||||||
version = "0.3.1"
|
version = "0.3.1"
|
||||||
@ -219,7 +247,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "syn"
|
name = "syn"
|
||||||
version = "0.15.38"
|
version = "0.15.39"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"proc-macro2 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)",
|
"proc-macro2 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
@ -232,11 +260,6 @@ name = "unicode-xid"
|
|||||||
version = "0.1.0"
|
version = "0.1.0"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "version_check"
|
|
||||||
version = "0.1.4"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "xmas-elf"
|
name = "xmas-elf"
|
||||||
version = "0.6.2"
|
version = "0.6.2"
|
||||||
@ -260,14 +283,14 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
|||||||
"checksum derive_builder_core 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)" = "0288a23da9333c246bb18c143426074a6ae96747995c5819d2947b64cd942b37"
|
"checksum derive_builder_core 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)" = "0288a23da9333c246bb18c143426074a6ae96747995c5819d2947b64cd942b37"
|
||||||
"checksum fnv 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)" = "2fad85553e09a6f881f739c29f0b00b0f01357c743266d478b68951ce23285f3"
|
"checksum fnv 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)" = "2fad85553e09a6f881f739c29f0b00b0f01357c743266d478b68951ce23285f3"
|
||||||
"checksum ident_case 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)" = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39"
|
"checksum ident_case 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)" = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39"
|
||||||
"checksum lazy_static 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ca488b89a5657b0a2ecd45b95609b3e848cf1755da332a0da46e2b2b1cb371a7"
|
"checksum lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "bc5729f27f159ddd61f4df6228e827e86643d4d3e7c32183cb30a1c08f604a14"
|
||||||
"checksum log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)" = "c84ec4b527950aa83a329754b01dbe3f58361d1c5efacd1f6d68c494d08a17c6"
|
"checksum log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)" = "c84ec4b527950aa83a329754b01dbe3f58361d1c5efacd1f6d68c494d08a17c6"
|
||||||
"checksum proc-macro2 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)" = "cf3d2011ab5c909338f7887f4fc896d35932e29146c12c8d01da6b22a80ba759"
|
"checksum proc-macro2 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)" = "cf3d2011ab5c909338f7887f4fc896d35932e29146c12c8d01da6b22a80ba759"
|
||||||
"checksum quote 0.6.12 (registry+https://github.com/rust-lang/crates.io-index)" = "faf4799c5d274f3868a4aae320a0a182cbd2baee377b378f080e16a23e9d80db"
|
"checksum quote 0.6.12 (registry+https://github.com/rust-lang/crates.io-index)" = "faf4799c5d274f3868a4aae320a0a182cbd2baee377b378f080e16a23e9d80db"
|
||||||
"checksum spin 0.4.9 (registry+https://github.com/rust-lang/crates.io-index)" = "37b5646825922b96b5d7d676b5bb3458a54498e96ed7b0ce09dc43a07038fea4"
|
"checksum spin 0.4.9 (registry+https://github.com/rust-lang/crates.io-index)" = "37b5646825922b96b5d7d676b5bb3458a54498e96ed7b0ce09dc43a07038fea4"
|
||||||
|
"checksum spin 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)" = "44363f6f51401c34e7be73db0db371c04705d35efbe9f7d6082e03a921a32c55"
|
||||||
"checksum static_assertions 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "389ce475f424f267dbed6479cbd8f126c5e1afb053b0acdaa019c74305fc65d1"
|
"checksum static_assertions 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "389ce475f424f267dbed6479cbd8f126c5e1afb053b0acdaa019c74305fc65d1"
|
||||||
"checksum strsim 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "bb4f380125926a99e52bc279241539c018323fab05ad6368b56f93d9369ff550"
|
"checksum strsim 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "bb4f380125926a99e52bc279241539c018323fab05ad6368b56f93d9369ff550"
|
||||||
"checksum syn 0.15.38 (registry+https://github.com/rust-lang/crates.io-index)" = "37ea458a750f59ab679b47fef9b6722c586c5742f4cfe18a120bbc807e5e01fd"
|
"checksum syn 0.15.39 (registry+https://github.com/rust-lang/crates.io-index)" = "b4d960b829a55e56db167e861ddb43602c003c7be0bee1d345021703fac2fb7c"
|
||||||
"checksum unicode-xid 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "fc72304796d0818e357ead4e000d19c9c174ab23dc11093ac919054d20a6a7fc"
|
"checksum unicode-xid 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "fc72304796d0818e357ead4e000d19c9c174ab23dc11093ac919054d20a6a7fc"
|
||||||
"checksum version_check 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)" = "7716c242968ee87e5542f8021178248f267f295a5c4803beae8b8b7fd9bc6051"
|
|
||||||
"checksum zero 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "5f1bc8a6b2005884962297587045002d8cfb8dcec9db332f4ca216ddc5de82c5"
|
"checksum zero 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "5f1bc8a6b2005884962297587045002d8cfb8dcec9db332f4ca216ddc5de82c5"
|
||||||
|
@ -13,6 +13,8 @@ lazy_static = { version = "1.1.0", features = ["spin_no_std"] } # Implies nightl
|
|||||||
derive_builder = "0.7.2"
|
derive_builder = "0.7.2"
|
||||||
rcore-fs = { path = "../../deps/sefs/rcore-fs" }
|
rcore-fs = { path = "../../deps/sefs/rcore-fs" }
|
||||||
rcore-fs-sefs = { path = "../../deps/sefs/rcore-fs-sefs" }
|
rcore-fs-sefs = { path = "../../deps/sefs/rcore-fs-sefs" }
|
||||||
|
rcore-fs-ramfs = { path = "../../deps/sefs/rcore-fs-ramfs" }
|
||||||
|
rcore-fs-mountfs = { path = "../../deps/sefs/rcore-fs-mountfs" }
|
||||||
|
|
||||||
[features]
|
[features]
|
||||||
default = ["integrity_only_opt", "sgx_file_cache"]
|
default = ["integrity_only_opt", "sgx_file_cache"]
|
||||||
|
@ -378,6 +378,7 @@ impl File for StdoutFile {
|
|||||||
nlinks: 0,
|
nlinks: 0,
|
||||||
uid: 0,
|
uid: 0,
|
||||||
gid: 0,
|
gid: 0,
|
||||||
|
rdev: 0,
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -494,6 +495,7 @@ impl File for StdinFile {
|
|||||||
nlinks: 0,
|
nlinks: 0,
|
||||||
uid: 0,
|
uid: 0,
|
||||||
gid: 0,
|
gid: 0,
|
||||||
|
rdev: 0,
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,5 +1,7 @@
|
|||||||
use rcore_fs::vfs::{FileSystem, FsError, INode};
|
use rcore_fs::vfs::{FileSystem, FsError, INode};
|
||||||
use rcore_fs_sefs::SEFS;
|
use rcore_fs_sefs::SEFS;
|
||||||
|
use rcore_fs_ramfs::RamFS;
|
||||||
|
use rcore_fs_mountfs::MountFS;
|
||||||
use std::fmt;
|
use std::fmt;
|
||||||
|
|
||||||
use super::sgx_impl::SgxStorage;
|
use super::sgx_impl::SgxStorage;
|
||||||
@ -8,10 +10,22 @@ use super::*;
|
|||||||
lazy_static! {
|
lazy_static! {
|
||||||
/// The root of file system
|
/// The root of file system
|
||||||
pub static ref ROOT_INODE: Arc<INode> = {
|
pub static ref ROOT_INODE: Arc<INode> = {
|
||||||
|
// ramfs as rootfs
|
||||||
|
let rootfs = MountFS::new(RamFS::new());
|
||||||
|
let root = rootfs.root_inode();
|
||||||
|
let bin = root.create("test", FileType::Dir, 0o777)
|
||||||
|
.expect("failed to mkdir: /test");
|
||||||
|
|
||||||
|
// sefs
|
||||||
let device = Box::new(SgxStorage::new("sefs"));
|
let device = Box::new(SgxStorage::new("sefs"));
|
||||||
let sefs = SEFS::open(device, &time::OcclumTimeProvider)
|
let sefs = SEFS::open(device, &time::OcclumTimeProvider)
|
||||||
.expect("failed to open SEFS");
|
.expect("failed to open SEFS");
|
||||||
sefs.root_inode()
|
|
||||||
|
// mount sefs at /test
|
||||||
|
bin.mount(sefs)
|
||||||
|
.expect("failed to mount SEFS");
|
||||||
|
|
||||||
|
root
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -187,6 +201,11 @@ impl From<FsError> for Error {
|
|||||||
FsError::DirNotEmpty => ENOTEMPTY,
|
FsError::DirNotEmpty => ENOTEMPTY,
|
||||||
FsError::WrongFs => EINVAL,
|
FsError::WrongFs => EINVAL,
|
||||||
FsError::DeviceError => EIO,
|
FsError::DeviceError => EIO,
|
||||||
|
FsError::SymLoop => ELOOP,
|
||||||
|
FsError::NoDevice => ENXIO,
|
||||||
|
FsError::IOCTLError => EINVAL,
|
||||||
|
FsError::Again => EAGAIN,
|
||||||
|
FsError::Busy => EBUSY,
|
||||||
};
|
};
|
||||||
Error::new(errno, "")
|
Error::new(errno, "")
|
||||||
}
|
}
|
||||||
|
@ -115,6 +115,7 @@ impl File for SocketFile {
|
|||||||
nlinks: 0,
|
nlinks: 0,
|
||||||
uid: 0,
|
uid: 0,
|
||||||
gid: 0,
|
gid: 0,
|
||||||
|
rdev: 0,
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -78,6 +78,7 @@ impl File for UnixSocketFile {
|
|||||||
nlinks: 0,
|
nlinks: 0,
|
||||||
uid: 0,
|
uid: 0,
|
||||||
gid: 0,
|
gid: 0,
|
||||||
|
rdev: 0,
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -24,6 +24,8 @@ extern crate lazy_static;
|
|||||||
extern crate log;
|
extern crate log;
|
||||||
extern crate rcore_fs;
|
extern crate rcore_fs;
|
||||||
extern crate rcore_fs_sefs;
|
extern crate rcore_fs_sefs;
|
||||||
|
extern crate rcore_fs_ramfs;
|
||||||
|
extern crate rcore_fs_mountfs;
|
||||||
#[macro_use]
|
#[macro_use]
|
||||||
extern crate derive_builder;
|
extern crate derive_builder;
|
||||||
|
|
||||||
|
@ -13,7 +13,7 @@ lazy_static! {
|
|||||||
pgid: 1,
|
pgid: 1,
|
||||||
tgid: 0,
|
tgid: 0,
|
||||||
exit_status: 0,
|
exit_status: 0,
|
||||||
cwd: "/".to_owned(),
|
cwd: "/test".to_owned(), // FIXME: hack for test
|
||||||
clear_child_tid: None,
|
clear_child_tid: None,
|
||||||
parent: None,
|
parent: None,
|
||||||
children: Vec::new(),
|
children: Vec::new(),
|
||||||
@ -99,6 +99,7 @@ impl Process {
|
|||||||
self.cwd = path.to_owned();
|
self.cwd = path.to_owned();
|
||||||
} else {
|
} else {
|
||||||
// relative
|
// relative
|
||||||
|
self.cwd += "/";
|
||||||
self.cwd += path;
|
self.cwd += path;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -40,8 +40,8 @@ pub fn do_spawn<P: AsRef<Path>>(
|
|||||||
parent_ref: &ProcessRef,
|
parent_ref: &ProcessRef,
|
||||||
) -> Result<u32, Error> {
|
) -> Result<u32, Error> {
|
||||||
let mut elf_buf = {
|
let mut elf_buf = {
|
||||||
let path = elf_path.as_ref().to_str().unwrap().trim_start_matches('/');
|
let path = elf_path.as_ref().to_str().unwrap();
|
||||||
let inode = ROOT_INODE.lookup(path)?;
|
let inode = parent_ref.lock().unwrap().lookup_inode(path)?;
|
||||||
inode.read_as_vec()?
|
inode.read_as_vec()?
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -7,7 +7,7 @@
|
|||||||
|
|
||||||
int main(int argc, const char* argv[]) {
|
int main(int argc, const char* argv[]) {
|
||||||
|
|
||||||
const int BUF_SIZE = 10;
|
const int BUF_SIZE = 20;
|
||||||
char buf[10];
|
char buf[10];
|
||||||
int ret;
|
int ret;
|
||||||
|
|
||||||
@ -17,14 +17,14 @@ int main(int argc, const char* argv[]) {
|
|||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
const char expect_cwd[] = "/";
|
const char expect_cwd[] = "/test";
|
||||||
if(strcmp(buf, expect_cwd)) {
|
if(strcmp(buf, expect_cwd)) {
|
||||||
printf("incorrect cwd \"%s\". expect \"%s\".\n", buf, expect_cwd);
|
printf("incorrect cwd \"%s\". expect \"%s\".\n", buf, expect_cwd);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
const char DIR_NAME[] = "test_dir";
|
const char DIR_NAME[] = "test_dir";
|
||||||
const char DIR_PATH[] = "/test_dir";
|
const char DIR_PATH[] = "/test/test_dir";
|
||||||
const int DIR_MODE = 0664;
|
const int DIR_MODE = 0664;
|
||||||
ret = mkdir(DIR_NAME, DIR_MODE);
|
ret = mkdir(DIR_NAME, DIR_MODE);
|
||||||
if(ret < 0) {
|
if(ret < 0) {
|
||||||
|
Loading…
Reference in New Issue
Block a user