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
|
||||
|
||||
|
||||
pub const (
|
||||
args = []string
|
||||
MAX_PATH = 4096
|
||||
|
@ -6,6 +6,8 @@ pub const (
|
||||
path_separator = '/'
|
||||
)
|
||||
|
||||
fn C.symlink(charptr, charptr) int
|
||||
|
||||
pub fn init_os_args(argc int, argv &byteptr) []string {
|
||||
mut args := []string
|
||||
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('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)
|
||||
}
|
||||
}
|
||||
|
||||
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