mirror of
https://github.com/vlang/v.git
synced 2023-08-10 21:13:21 +03:00
os: add os.symlink() function
This commit is contained in:
parent
7518d2d0dc
commit
06fba73ab9
@ -23,7 +23,6 @@ struct C.dirent {
|
|||||||
|
|
||||||
fn C.readdir(voidptr) C.dirent
|
fn C.readdir(voidptr) C.dirent
|
||||||
|
|
||||||
|
|
||||||
pub const (
|
pub const (
|
||||||
args = []string
|
args = []string
|
||||||
MAX_PATH = 4096
|
MAX_PATH = 4096
|
||||||
|
@ -6,6 +6,8 @@ pub const (
|
|||||||
path_separator = '/'
|
path_separator = '/'
|
||||||
)
|
)
|
||||||
|
|
||||||
|
fn C.symlink(charptr, charptr) int
|
||||||
|
|
||||||
pub fn init_os_args(argc int, argv &byteptr) []string {
|
pub fn init_os_args(argc int, argv &byteptr) []string {
|
||||||
mut args := []string
|
mut args := []string
|
||||||
for i in 0 .. argc {
|
for i in 0 .. argc {
|
||||||
@ -98,3 +100,8 @@ pub fn exec(cmd string) ?Result {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub fn symlink(origin, target string) ?bool {
|
||||||
|
res := C.symlink(origin.str, target.str)
|
||||||
|
if res == 0 { return true }
|
||||||
|
return error(get_error_msg(C.errno))
|
||||||
|
}
|
||||||
|
@ -237,3 +237,14 @@ fn cleanup_leftovers(){
|
|||||||
os.rm('ex1.txt')
|
os.rm('ex1.txt')
|
||||||
os.rm('ex2.txt')
|
os.rm('ex2.txt')
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fn test_symlink() {
|
||||||
|
$if windows { return }
|
||||||
|
os.mkdir('symlink') or { panic(err) }
|
||||||
|
os.symlink('symlink', 'symlink2') or { panic(err) }
|
||||||
|
assert os.exists('symlink2')
|
||||||
|
|
||||||
|
// cleanup
|
||||||
|
os.rm('symlink')
|
||||||
|
os.rm('symlink2')
|
||||||
|
}
|
||||||
|
@ -285,3 +285,13 @@ pub fn exec(cmd string) ?Result {
|
|||||||
exit_code: int(exit_code)
|
exit_code: int(exit_code)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fn C.CreateSymbolicLinkW(&u16, &u16, u32) int
|
||||||
|
|
||||||
|
pub fn symlink(origin, target string) ?bool {
|
||||||
|
flags := if os.is_dir(origin) { 1 } else { 0 }
|
||||||
|
if C.CreateSymbolicLinkW(origin.to_wide(), target.to_wide(), u32(flags)) != 0 {
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
return error(get_error_msg(int(C.GetLastError())))
|
||||||
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user