1
0
mirror of https://github.com/vlang/v.git synced 2023-08-10 21:13:21 +03:00

os: mkdir() error handling

This commit is contained in:
Don Alfons Nisnoni 2019-11-24 00:55:18 +08:00 committed by Alexander Medvednikov
parent 0fb0c43c0a
commit 3a6ccf7f31
12 changed files with 32 additions and 32 deletions

View File

@ -196,7 +196,7 @@ fn (gen_vc mut GenVC) generate() {
// check if gen_vc dir exists
if !os.dir_exists(gen_vc.options.work_dir) {
// try create
os.mkdir(gen_vc.options.work_dir)
os.mkdir(gen_vc.options.work_dir) or { panic(err) }
// still dosen't exist... we have a problem
if !os.dir_exists(gen_vc.options.work_dir) {
gen_vc.logger.error('error creating directory: $gen_vc.options.work_dir')

View File

@ -48,7 +48,7 @@ fn main() {
c.description = os.get_line()
println('Initialising ...')
if (os.is_dir(c.name)) { cerror('folder already exists') exit(3) }
os.mkdir(c.name)
os.mkdir(c.name) or { panic(err) }
c.write_vmod()
c.write_main()
println('Complete !')

View File

@ -154,7 +154,7 @@ fn ensure_vmodules_dir_exist() {
home_vmodules := get_vmodules_dir_path()
if !os.dir_exists( home_vmodules ) {
println('Creating $home_vmodules/ ...')
os.mkdir(home_vmodules)
os.mkdir(home_vmodules) or { panic(err) }
}
}

View File

@ -108,7 +108,7 @@ fn (v mut V) cc() {
}
if v.pref.ccompiler == 'cc' && os.file_exists(tcc_path) {
// TODO tcc bug, needs an empty libtcc1.a fila
//os.mkdir('/var/tmp/tcc/lib/tcc/')
//os.mkdir('/var/tmp/tcc/lib/tcc/') or { panic(err) }
//os.create('/var/tmp/tcc/lib/tcc/libtcc1.a')
v.pref.ccompiler = tcc_path
a << '-m64'

View File

@ -843,8 +843,8 @@ pub fn (v &V) log(s string) {
pub fn new_v(args[]string) &V {
// Create modules dirs if they are missing
if !os.dir_exists(v_modules_path) {
os.mkdir(v_modules_path)
os.mkdir('$v_modules_path${os.path_separator}cache')
os.mkdir(v_modules_path) or { panic(err) }
os.mkdir('$v_modules_path${os.path_separator}cache') or { panic(err) }
}
// Location of all vlib files
@ -903,7 +903,7 @@ pub fn new_v(args[]string) &V {
// Cross compiling? Use separate dirs for each os
/*
if target_os != os.user_os() {
os.mkdir('$TmpPath/vlib/$target_os')
os.mkdir('$TmpPath/vlib/$target_os') or { panic(err) }
out_name = '$TmpPath/vlib/$target_os/${base}.o'
println('target_os=$target_os user_os=${os.user_os()}')
println('!Cross compiling $out_name')
@ -939,7 +939,7 @@ pub fn new_v(args[]string) &V {
d := out_name.all_before_last(os.path_separator)
if !os.dir_exists(d) {
println('creating a new directory "$d"')
os.mkdir(d)
os.mkdir(d) or { panic(err) }
}
}
mut _os := OS.mac

View File

@ -36,7 +36,7 @@ fn generate_vh(mod string) {
pdir := dir.all_before_last(os.path_separator)
if !os.dir_exists(pdir) {
os.mkdir_all(pdir)
// os.mkdir(os.realpath(dir))
// os.mkdir(os.realpath(dir)) or { panic(err) }
}
out := os.create(path) or { panic(err) }
mod_path := mod.replace("\\", "/")
@ -169,5 +169,3 @@ fn (g mut VhGen) generate_type() {
//g.i = old
//g.i--
}

View File

@ -10,7 +10,7 @@ import filepath
pub fn get_vtmp_folder() string {
vtmp := filepath.join(os.tmpdir(),'v')
if !os.dir_exists( vtmp ) {
os.mkdir(vtmp)
os.mkdir(vtmp) or { panic(err) }
}
return vtmp
}

View File

@ -198,7 +198,7 @@ pub fn cp_r(osource_path, odest_path string, overwrite bool) ?bool{
sp := filepath.join(source_path, file)
dp := filepath.join(dest_path, file)
if os.is_dir(sp) {
os.mkdir(dp)
os.mkdir(dp) or { panic(err) }
}
cp_r(sp, dp, overwrite) or {
os.rmdir(dp)
@ -991,7 +991,7 @@ pub fn mkdir_all(path string) {
for subdir in path.split(os.path_separator) {
p += subdir + os.path_separator
if !os.dir_exists(p) {
os.mkdir(p)
os.mkdir(p) or { panic(err) }
}
}
}

View File

@ -61,12 +61,14 @@ pub fn dir_exists(path string) bool {
}
// mkdir creates a new directory with the specified path.
pub fn mkdir(path string) {
//$if linux {
//C.syscall(83, path.str, 511) // sys_mkdir
//} $else {
C.mkdir(path.str, 511)// S_IRWXU | S_IRWXG | S_IRWXO
//}
pub fn mkdir(path string) ?bool {
if path == '.' { return true }
apath := os.realpath( path )
r := int(C.mkdir(apath.str, 511))
if r == -1 {
return error(get_error_msg(C.errno))
}
return true
}
// exec starts the specified command, waits for it to complete, and returns its output.

View File

@ -75,7 +75,7 @@ fn test_write_and_read_bytes() {
fn test_create_and_delete_folder() {
folder := './test1'
os.mkdir(folder)
os.mkdir(folder) or { panic(err) }
assert os.dir_exists(folder)
folder_contents := os.ls(folder) or { panic(err) }
@ -106,7 +106,7 @@ fn walk_callback(file string) {
fn test_walk() {
folder := 'test_walk'
os.mkdir(folder)
os.mkdir(folder) or { panic(err) }
file1 := folder+os.path_separator+'test1'
@ -137,12 +137,12 @@ fn test_cp_r() {
//fileX -> dir/fileX
// NB: clean up of the files happens inside the cleanup_leftovers function
os.write_file('ex1.txt', 'wow!')
os.mkdir('ex')
os.mkdir('ex') or { panic(err) }
os.cp_r('ex1.txt', 'ex', false) or { panic(err) }
old := os.read_file('ex1.txt') or { panic(err) }
new := os.read_file('ex/ex1.txt') or { panic(err) }
assert old == new
os.mkdir('ex/ex2')
os.mkdir('ex/ex2') or { panic(err) }
os.write_file('ex2.txt', 'great!')
os.cp_r('ex2.txt', 'ex/ex2', false) or { panic(err) }
old2 := os.read_file('ex2.txt') or { panic(err) }

View File

@ -131,14 +131,14 @@ pub fn dir_exists(path string) bool {
}
// mkdir creates a new directory with the specified path.
pub fn mkdir(path string) {
_path := path.replace('/', '\\')
// Windows doesnt recursively create the folders
// so we need to help it out here
if _path.last_index('\\') != -1 {
mkdir(_path.all_before_last('\\'))
pub fn mkdir(path string) ?bool {
if path == '.' { return true }
apath := os.realpath( path )
r := int(C.CreateDirectory(apath.to_wide(), 0))
if r == 0 {
return error('mkdir failed for "$apath", because CreateDirectory returned ' + get_error_msg(int(C.GetLastError())))
}
C.CreateDirectory(_path.to_wide(), 0)
return true
}
// Ref - https://docs.microsoft.com/en-us/cpp/c-runtime-library/reference/get-osfhandle?view=vs-2019

View File

@ -103,7 +103,7 @@ fn (am mut AssetManager) combine(asset_type string, to_file bool) string {
return out
}
if !os.dir_exists(am.cache_dir) {
os.mkdir(am.cache_dir)
os.mkdir(am.cache_dir) or { panic(err) }
}
file := os.create(out_file) or {
panic(err)