From 88a8507dd813ffd9b3e90cddfbe1f8a410f72a09 Mon Sep 17 00:00:00 2001 From: Delyan Angelov Date: Wed, 16 Dec 2020 11:02:36 +0200 Subject: [PATCH] os: vfmt most of `os`, add it to `v test-cleancode` --- cmd/tools/vtest-cleancode.v | 15 ++- vlib/os/const.v | 12 +- vlib/os/const_windows.c.v | 230 ++++++++++++++++++------------------ vlib/os/environment.c.v | 10 +- vlib/os/environment_test.v | 4 +- vlib/os/inode.c.v | 16 +-- vlib/os/inode_test.v | 8 +- vlib/os/os.v | 4 +- vlib/os/os_c.v | 1 - vlib/os/os_darwin.c.v | 16 +-- vlib/os/os_linux.c.v | 10 +- vlib/os/os_nix.c.v | 39 +++--- vlib/os/os_test.v | 113 +++++------------- vlib/os/os_windows.c.v | 6 +- 14 files changed, 208 insertions(+), 276 deletions(-) diff --git a/cmd/tools/vtest-cleancode.v b/cmd/tools/vtest-cleancode.v index be94a677f9..8f787640c4 100644 --- a/cmd/tools/vtest-cleancode.v +++ b/cmd/tools/vtest-cleancode.v @@ -18,7 +18,7 @@ const ( 'nonexistant', ] vfmt_verify_list = [ - 'cmd/tools/vdoc.v' + 'cmd/tools/vdoc.v', 'cmd/v/v.v', 'vlib/builtin/array.v', 'vlib/builtin/map.v', @@ -58,6 +58,19 @@ const ( 'vlib/v/vet/', 'vlib/v/vmod/', 'vlib/gg/gg.v', + 'vlib/os/const.v', + 'vlib/os/const_windows.c.v', + 'vlib/os/environment.c.v', + 'vlib/os/environment_test.v', + 'vlib/os/inode.c.v', + 'vlib/os/inode_test.v', + 'vlib/os/os.v', + 'vlib/os/os_c.v', + 'vlib/os/os_darwin.c.v', + 'vlib/os/os_linux.c.v', + 'vlib/os/os_nix.c.v', + 'vlib/os/os_test.v', + 'vlib/os/os_windows.c.v', ] ) diff --git a/vlib/os/const.v b/vlib/os/const.v index 1e4735a3d0..85d08f38f0 100644 --- a/vlib/os/const.v +++ b/vlib/os/const.v @@ -1,18 +1,18 @@ module os -// (Must be realized in Syscall) (Must be specified) +// (Must be realized in Syscall) (Must be specified) // ref: http://www.ccfit.nsu.ru/~deviv/courses/unix/unix/ng7c229.html const ( s_ifmt = 0xF000 // type of file s_ifdir = 0x4000 // directory s_iflnk = 0xa000 // link - s_ixusr = 0o100 // is executable by the owner - s_ixgrp = 0o010 // is executable by group - s_ixoth = 0o001 // is executable by others + s_ixusr = 0o100 // is executable by the owner + s_ixgrp = 0o010 // is executable by group + s_ixoth = 0o001 // is executable by others ) const ( - std_input_handle = -10 + std_input_handle = -10 std_output_handle = -11 - std_error_handle = -12 + std_error_handle = -12 ) diff --git a/vlib/os/const_windows.c.v b/vlib/os/const_windows.c.v index 985458ac07..4b87c8bf62 100644 --- a/vlib/os/const_windows.c.v +++ b/vlib/os/const_windows.c.v @@ -2,164 +2,160 @@ module os // Ref - winnt.h const ( - success = 0x0000 // ERROR_SUCCESS - error_insufficient_buffer = 0x0082 + success = 0x0000 // ERROR_SUCCESS + error_insufficient_buffer = 0x0082 ) const ( - handle_generic_read = 0x80000000 - handle_open_existing = 0x00000003 + handle_generic_read = 0x80000000 + handle_open_existing = 0x00000003 ) const ( - file_share_read = 0x01 - file_share_write = 0x02 - file_share_delete = 0x04 + file_share_read = 0x01 + file_share_write = 0x02 + file_share_delete = 0x04 ) const ( - file_notify_change_file_name = 0x01 - file_notify_change_dir_name = 0x02 - file_notify_change_attributes = 0x04 - file_notify_change_size = 0x08 - file_notify_change_last_write = 0x10 - file_notify_change_last_access = 0x20 - file_notify_change_creation = 0x40 - file_notify_change_security = 0x80 + file_notify_change_file_name = 0x01 + file_notify_change_dir_name = 0x02 + file_notify_change_attributes = 0x04 + file_notify_change_size = 0x08 + file_notify_change_last_write = 0x10 + file_notify_change_last_access = 0x20 + file_notify_change_creation = 0x40 + file_notify_change_security = 0x80 ) const ( - file_action_added = 0x01 - file_action_removed = 0x02 - file_action_modified = 0x03 - file_action_renamed_old_name = 0x04 - file_action_renamed_new_name = 0x05 + file_action_added = 0x01 + file_action_removed = 0x02 + file_action_modified = 0x03 + file_action_renamed_old_name = 0x04 + file_action_renamed_new_name = 0x05 ) const ( - file_attr_readonly = 0x00000001 - file_attr_hidden = 0x00000002 - file_attr_system = 0x00000004 - file_attr_directory = 0x00000010 - file_attr_archive = 0x00000020 - file_attr_device = 0x00000040 - file_attr_normal = 0x00000080 - file_attr_temporary = 0x00000100 - file_attr_sparse_file = 0x00000200 - file_attr_reparse_point = 0x00000400 - file_attr_compressed = 0x00000800 - file_attr_offline = 0x00001000 - file_attr_not_content_indexed = 0x00002000 - file_attr_encrypted = 0x00004000 - file_attr_integrity_stream = 0x00008000 - file_attr_virtual = 0x00010000 - file_attr_no_scrub_data = 0x00020000 - // file_attr_recall_on_open = u32(0x...) - // file_attr_recall_on_data_access = u32(0x...) + file_attr_readonly = 0x00000001 + file_attr_hidden = 0x00000002 + file_attr_system = 0x00000004 + file_attr_directory = 0x00000010 + file_attr_archive = 0x00000020 + file_attr_device = 0x00000040 + file_attr_normal = 0x00000080 + file_attr_temporary = 0x00000100 + file_attr_sparse_file = 0x00000200 + file_attr_reparse_point = 0x00000400 + file_attr_compressed = 0x00000800 + file_attr_offline = 0x00001000 + file_attr_not_content_indexed = 0x00002000 + file_attr_encrypted = 0x00004000 + file_attr_integrity_stream = 0x00008000 + file_attr_virtual = 0x00010000 + file_attr_no_scrub_data = 0x00020000 + // file_attr_recall_on_open = u32(0x...) + // file_attr_recall_on_data_access = u32(0x...) ) const ( - file_type_unknown = 0x00 - file_type_disk = 0x01 - file_type_char = 0x02 - file_type_pipe = 0x03 + file_type_unknown = 0x00 + file_type_disk = 0x01 + file_type_char = 0x02 + file_type_pipe = 0x03 ) const ( file_invalid_file_id = (-1) ) -const( +const ( invalid_handle_value = voidptr(-1) ) // https://docs.microsoft.com/en-us/windows/console/setconsolemode const ( - // Input Buffer - enable_echo_input = 0x0004 - enable_extended_flags = 0x0080 - enable_insert_mode = 0x0020 - enable_line_input = 0x0002 - enable_mouse_input = 0x0010 - enable_processed_input = 0x0001 - enable_quick_edit_mode = 0x0040 - enable_window_input = 0x0008 - enable_virtual_terminal_input = 0x0200 - // Output Screen Buffer - enable_processed_output = 0x01 - enable_wrap_at_eol_output = 0x02 - enable_virtual_terminal_processing = 0x04 - disable_newline_auto_return = 0x08 - enable_lvb_grid_worldwide = 0x10 + // Input Buffer + enable_echo_input = 0x0004 + enable_extended_flags = 0x0080 + enable_insert_mode = 0x0020 + enable_line_input = 0x0002 + enable_mouse_input = 0x0010 + enable_processed_input = 0x0001 + enable_quick_edit_mode = 0x0040 + enable_window_input = 0x0008 + enable_virtual_terminal_input = 0x0200 + // Output Screen Buffer + enable_processed_output = 0x01 + enable_wrap_at_eol_output = 0x02 + enable_virtual_terminal_processing = 0x04 + disable_newline_auto_return = 0x08 + enable_lvb_grid_worldwide = 0x10 ) // File modes const ( - o_rdonly = 0x0000 // open the file read-only. - o_wronly = 0x0001 // open the file write-only. - o_rdwr = 0x0002 // open the file read-write. - o_append = 0x0008 // append data to the file when writing. - o_create = 0x0100 // create a new file if none exists. - o_binary = 0x8000 // input and output is not translated. - o_trunc = 0x0200 // truncate regular writable file when opened. - o_excl = 0x0400 // used with o_create, file must not exist. - o_sync = 0x0000 // open for synchronous I/O (ignored on Windows) - o_noctty = 0x0000 // make file non-controlling tty (ignored on Windows) - o_nonblock = 0x0000 // don't block on opening file (ignored on Windows) + o_rdonly = 0x0000 // open the file read-only. + o_wronly = 0x0001 // open the file write-only. + o_rdwr = 0x0002 // open the file read-write. + o_append = 0x0008 // append data to the file when writing. + o_create = 0x0100 // create a new file if none exists. + o_binary = 0x8000 // input and output is not translated. + o_trunc = 0x0200 // truncate regular writable file when opened. + o_excl = 0x0400 // used with o_create, file must not exist. + o_sync = 0x0000 // open for synchronous I/O (ignored on Windows) + o_noctty = 0x0000 // make file non-controlling tty (ignored on Windows) + o_nonblock = 0x0000 // don't block on opening file (ignored on Windows) ) const ( - status_access_violation = 0xC0000005 - status_in_page_error = 0xC0000006 - status_invalid_handle = 0xC0000008 - status_invalid_parameter = 0xC000000D - status_no_memory = 0xC0000017 - status_illegal_instruction = 0xC000001D - status_noncontinuable_exception = 0xC0000025 - status_invalid_disposition = 0xC0000026 - status_array_bounds_exceeded = 0xC000008C - status_float_denormal_operand = 0xC000008D - status_float_divide_by_zero = 0xC000008E - status_float_inexact_result = 0xC000008F - status_float_invalid_operation = 0xC0000090 - status_float_overflow = 0xC0000091 - status_float_stack_check = 0xC0000092 - status_float_underflow = 0xC0000093 - status_integer_divide_by_zero = 0xC0000094 - status_integer_overflow = 0xC0000095 - status_privileged_instruction = 0xC0000096 - status_stack_overflow = 0xC00000FD - status_dll_not_found = 0xC0000135 - status_ordinal_not_found = 0xC0000138 - status_entrypoint_not_found = 0xC0000139 - status_control_c_exit = 0xC000013A - status_dll_init_failed = 0xC0000142 - status_float_multiple_faults = 0xC00002B4 - status_float_multiple_traps = 0xC00002B5 - status_reg_nat_consumption = 0xC00002C9 - status_heap_corruption = 0xC0000374 - status_stack_buffer_overrun = 0xC0000409 - status_invalid_cruntime_parameter = 0xC0000417 - status_assertion_failure = 0xC0000420 + status_access_violation = 0xC0000005 + status_in_page_error = 0xC0000006 + status_invalid_handle = 0xC0000008 + status_invalid_parameter = 0xC000000D + status_no_memory = 0xC0000017 + status_illegal_instruction = 0xC000001D + status_noncontinuable_exception = 0xC0000025 + status_invalid_disposition = 0xC0000026 + status_array_bounds_exceeded = 0xC000008C + status_float_denormal_operand = 0xC000008D + status_float_divide_by_zero = 0xC000008E + status_float_inexact_result = 0xC000008F + status_float_invalid_operation = 0xC0000090 + status_float_overflow = 0xC0000091 + status_float_stack_check = 0xC0000092 + status_float_underflow = 0xC0000093 + status_integer_divide_by_zero = 0xC0000094 + status_integer_overflow = 0xC0000095 + status_privileged_instruction = 0xC0000096 + status_stack_overflow = 0xC00000FD + status_dll_not_found = 0xC0000135 + status_ordinal_not_found = 0xC0000138 + status_entrypoint_not_found = 0xC0000139 + status_control_c_exit = 0xC000013A + status_dll_init_failed = 0xC0000142 + status_float_multiple_faults = 0xC00002B4 + status_float_multiple_traps = 0xC00002B5 + status_reg_nat_consumption = 0xC00002C9 + status_heap_corruption = 0xC0000374 + status_stack_buffer_overrun = 0xC0000409 + status_invalid_cruntime_parameter = 0xC0000417 + status_assertion_failure = 0xC0000420 ) // Windows Registry Constants - pub const ( - hkey_local_machine = voidptr(0x80000002) - hkey_current_user = voidptr(0x80000001) - - key_query_value = 0x0001 - key_set_value = 0x0002 - key_enumerate_sub_keys = 0x0008 - key_wow64_32key = 0x0200 + hkey_local_machine = voidptr(0x80000002) + hkey_current_user = voidptr(0x80000001) + key_query_value = 0x0001 + key_set_value = 0x0002 + key_enumerate_sub_keys = 0x0008 + key_wow64_32key = 0x0200 ) // Windows Messages - pub const ( - hwnd_broadcast = voidptr(0xFFFF) - - wm_settingchange = 0x001A - smto_abortifhung = 0x0002 -) \ No newline at end of file + hwnd_broadcast = voidptr(0xFFFF) + wm_settingchange = 0x001A + smto_abortifhung = 0x0002 +) diff --git a/vlib/os/environment.c.v b/vlib/os/environment.c.v index d2a9a17920..0b76bdf8b7 100644 --- a/vlib/os/environment.c.v +++ b/vlib/os/environment.c.v @@ -4,11 +4,12 @@ module os fn C.getenv(charptr) &char + // C.GetEnvironmentStringsW & C.FreeEnvironmentStringsW are defined only on windows fn C.GetEnvironmentStringsW() &u16 - fn C.FreeEnvironmentStringsW(&u16) int + // `getenv` returns the value of the environment variable named by the key. pub fn getenv(key string) string { $if windows { @@ -53,7 +54,7 @@ pub fn setenv(name string, value string, overwrite bool) int { // os.unsetenv clears an environment variable with `name`. pub fn unsetenv(name string) int { $if windows { - format := '${name}=' + format := '$name=' return C._putenv(charptr(format.str)) } $else { return C.unsetenv(charptr(name.str)) @@ -64,7 +65,7 @@ pub fn unsetenv(name string) int { // See: https://docs.microsoft.com/bg-bg/windows/win32/api/processenv/nf-processenv-getenvironmentstrings // os.environ returns a map of all the current environment variables pub fn environ() map[string]string { - mut res := map[string]string + mut res := map[string]string{} $if windows { mut estrings := C.GetEnvironmentStringsW() mut eline := '' @@ -74,8 +75,7 @@ pub fn environ() map[string]string { if eq_index > 0 { res[eline[0..eq_index]] = eline[eq_index + 1..] } - unsafe - { + unsafe { c = c + eline.len + 1 } } diff --git a/vlib/os/environment_test.v b/vlib/os/environment_test.v index 8ebf1b1e04..532437124f 100644 --- a/vlib/os/environment_test.v +++ b/vlib/os/environment_test.v @@ -36,13 +36,13 @@ fn test_environ() { assert all['myvar_not_defined'] == '' } -fn test_setenv_var_not_exists(){ +fn test_setenv_var_not_exists() { key := time.new_time(time.now()).unix os.setenv('foo$key', 'bar', false) assert os.getenv('foo$key') == 'bar' } -fn test_getenv_empty_var(){ +fn test_getenv_empty_var() { key := time.new_time(time.now()).unix os.setenv('empty$key', '""', false) assert os.getenv('empty$key') == '""' diff --git a/vlib/os/inode.c.v b/vlib/os/inode.c.v index 88ff85e1bb..df800aff22 100644 --- a/vlib/os/inode.c.v +++ b/vlib/os/inode.c.v @@ -15,16 +15,16 @@ enum FileType { struct FilePermission { pub: - read bool - write bool + read bool + write bool execute bool } struct FileMode { pub: - typ FileType - owner FilePermission - group FilePermission + typ FileType + owner FilePermission + group FilePermission others FilePermission } @@ -32,10 +32,7 @@ pub: // it supports windows for regular files but it doesn't matter if you use owner, group or others when checking permissions on windows pub fn inode(path string) FileMode { mut attr := C.stat{} - unsafe { - C.stat(charptr(path.str), &attr) - } - + unsafe {C.stat(charptr(path.str), &attr)} mut typ := FileType.regular if attr.st_mode & u32(C.S_IFMT) == u32(C.S_IFDIR) { typ = .directory @@ -53,7 +50,6 @@ pub fn inode(path string) FileMode { typ = .socket } } - $if windows { return FileMode{ typ: typ diff --git a/vlib/os/inode_test.v b/vlib/os/inode_test.v index 4a95796886..c2b5aa781d 100644 --- a/vlib/os/inode_test.v +++ b/vlib/os/inode_test.v @@ -24,9 +24,7 @@ fn testsuite_end() { fn test_inode_file_type() { filename := './test1.txt' - mut file := os.open_file(filename, 'w', 0o600) or { - return - } + mut file := os.open_file(filename, 'w', 0o600) or { return } file.close() mode := os.inode(filename) os.rm(filename) @@ -35,9 +33,7 @@ fn test_inode_file_type() { fn test_inode_file_owner_permission() { filename := './test2.txt' - mut file := os.open_file(filename, 'w', 0o600) or { - return - } + mut file := os.open_file(filename, 'w', 0o600) or { return } file.close() mode := os.inode(filename) os.rm(filename) diff --git a/vlib/os/os.v b/vlib/os/os.v index 8135e6e7ae..1bc76575b1 100644 --- a/vlib/os/os.v +++ b/vlib/os/os.v @@ -11,8 +11,8 @@ pub: } pub const ( - args = []string{} - max_path_len = 4096 + args = []string{} + max_path_len = 4096 wd_at_startup = getwd() ) diff --git a/vlib/os/os_c.v b/vlib/os/os_c.v index 3d62b6d88e..228da3a619 100644 --- a/vlib/os/os_c.v +++ b/vlib/os/os_c.v @@ -202,7 +202,6 @@ pub fn fileno(cfile voidptr) int { } } - // open_append opens `path` file for appending. pub fn open_append(path string) ?File { mut file := File{} diff --git a/vlib/os/os_darwin.c.v b/vlib/os/os_darwin.c.v index 3adec20dfc..0d04f6cec0 100644 --- a/vlib/os/os_darwin.c.v +++ b/vlib/os/os_darwin.c.v @@ -1,18 +1,14 @@ // Copyright (c) 2019-2020 Alexander Medvednikov. All rights reserved. // Use of this source code is governed by an MIT license // that can be found in the LICENSE file. - module os pub const ( - sys_write = 4 - sys_open = 5 - sys_close = 6 - sys_mkdir = 136 - sys_creat = 8 + sys_write = 4 + sys_open = 5 + sys_close = 6 + sys_mkdir = 136 + sys_creat = 8 sys_open_nocancel = 398 - sys_stat64 = 338 + sys_stat64 = 338 ) - - - diff --git a/vlib/os/os_linux.c.v b/vlib/os/os_linux.c.v index 3dc29e7cf3..67006de291 100644 --- a/vlib/os/os_linux.c.v +++ b/vlib/os/os_linux.c.v @@ -1,20 +1,18 @@ // Copyright (c) 2019-2020 Alexander Medvednikov. All rights reserved. // Use of this source code is governed by an MIT license // that can be found in the LICENSE file. - module os const ( - prot_read = 1 - prot_write = 2 - - map_private = 0x02 + prot_read = 1 + prot_write = 2 + map_private = 0x02 map_anonymous = 0x20 ) pub const ( sys_write = 1 - sys_open = 2 + sys_open = 2 sys_close = 3 sys_mkdir = 83 sys_creat = 85 diff --git a/vlib/os/os_nix.c.v b/vlib/os/os_nix.c.v index af591d9a13..71a32fd6a2 100644 --- a/vlib/os/os_nix.c.v +++ b/vlib/os/os_nix.c.v @@ -52,9 +52,7 @@ fn init_os_args(argc int, argv &&byte) []string { // mut args := []string{len:argc} for i in 0 .. argc { // args [i] = argv[i].vstring() - unsafe { - args << byteptr(argv[i]).vstring() - } + unsafe {args << byteptr(argv[i]).vstring()} } return args } @@ -110,8 +108,8 @@ pub fn mkdir(path string) ?bool { } */ apath := real_path(path) - //defer { - //apath.free() + // defer { + // apath.free() //} /* $if linux { @@ -124,10 +122,7 @@ pub fn mkdir(path string) ?bool { } } */ - r := unsafe { - C.mkdir(charptr(apath.str), 511) - } - + r := unsafe {C.mkdir(charptr(apath.str), 511)} if r == -1 { return error(posix_get_error_msg(C.errno)) } @@ -162,20 +157,19 @@ pub fn exec(cmd string) ?Result { } } -pub struct Command { +pub struct Command { mut: - f voidptr + f voidptr pub mut: - eof bool + eof bool pub: - path string + path string redirect_stdout bool } -//pub fn command(cmd Command) Command { +// pub fn command(cmd Command) Command { //} - -pub fn (mut c Command) start()? { +pub fn (mut c Command) start() ? { pcmd := '$c.path 2>&1' c.f = vpopen(pcmd) if isnil(c.f) { @@ -190,7 +184,7 @@ pub fn (mut c Command) read_line() string { for C.fgets(charptr(buf), 4096, c.f) != 0 { bufbp := byteptr(buf) len := vstrlen(bufbp) - for i in 0..len { + for i in 0 .. len { if int(bufbp[i]) == `\n` { res.write_bytes(bufbp, i) return res.str() @@ -203,7 +197,7 @@ pub fn (mut c Command) read_line() string { return res.str() } -pub fn (c &Command) close()? { +pub fn (c &Command) close() ? { exit_code := vpclose(c.f) if exit_code == 127 { return error_with_code('error', 127) @@ -245,15 +239,16 @@ pub fn debugger_present() bool { } fn C.mkstemp(stemplate byteptr) int + // `is_writable_folder` - `folder` exists and is writable to the process pub fn is_writable_folder(folder string) ?bool { - if !os.exists(folder) { + if !exists(folder) { return error('`$folder` does not exist') } - if !os.is_dir(folder) { + if !is_dir(folder) { return error('`folder` is not a folder') } - tmp_perm_check := os.join_path(folder, 'XXXXXX') + tmp_perm_check := join_path(folder, 'XXXXXX') unsafe { x := C.mkstemp(charptr(tmp_perm_check.str)) if -1 == x { @@ -261,7 +256,7 @@ pub fn is_writable_folder(folder string) ?bool { } C.close(x) } - os.rm(tmp_perm_check) + rm(tmp_perm_check) return true } diff --git a/vlib/os/os_test.v b/vlib/os/os_test.v index 38990fb6d5..c7c66b15e2 100644 --- a/vlib/os/os_test.v +++ b/vlib/os/os_test.v @@ -30,15 +30,11 @@ fn test_open_file() { assert err == 'No such file or directory' os.File{} } - mut file := os.open_file(filename, 'w+', 0o666) or { - panic(err) - } + mut file := os.open_file(filename, 'w+', 0o666) or { panic(err) } file.write_str(hello) file.close() assert hello.len == os.file_size(filename) - read_hello := os.read_file(filename) or { - panic('error reading file $filename') - } + read_hello := os.read_file(filename) or { panic('error reading file $filename') } assert hello == read_hello os.rm(filename) } @@ -50,16 +46,12 @@ fn test_open_file_binary() { assert err == 'No such file or directory' os.File{} } - mut file := os.open_file(filename, 'wb+', 0o666) or { - panic(err) - } + mut file := os.open_file(filename, 'wb+', 0o666) or { panic(err) } bytes := hello.bytes() file.write_bytes(bytes.data, bytes.len) file.close() assert hello.len == os.file_size(filename) - read_hello := os.read_bytes(filename) or { - panic('error reading file $filename') - } + read_hello := os.read_bytes(filename) or { panic('error reading file $filename') } assert bytes == read_hello os.rm(filename) } @@ -84,13 +76,10 @@ fn test_open_file_binary() { // assert line1 == 'line 1\n' // assert line2 == 'line 2' // } - fn test_create_file() { filename := './test1.txt' hello := 'hello world!' - mut f := os.create(filename) or { - panic(err) - } + mut f := os.create(filename) or { panic(err) } f.write_str(hello) f.close() assert hello.len == os.file_size(filename) @@ -132,9 +121,7 @@ fn test_write_and_read_string_to_file() { hello := 'hello world!' os.write_file(filename, hello) assert hello.len == os.file_size(filename) - read_hello := os.read_file(filename) or { - panic('error reading file $filename') - } + read_hello := os.read_file(filename) or { panic('error reading file $filename') } assert hello == read_hello os.rm(filename) } @@ -177,13 +164,9 @@ fn test_write_and_read_bytes() { fn test_create_and_delete_folder() { folder := './test1' - os.mkdir(folder) or { - panic(err) - } + os.mkdir(folder) or { panic(err) } assert os.is_dir(folder) - folder_contents := os.ls(folder) or { - panic(err) - } + folder_contents := os.ls(folder) or { panic(err) } assert folder_contents.len == 0 os.rmdir(folder) folder_exists := os.is_dir(folder) @@ -199,9 +182,7 @@ fn walk_callback(file string) { fn test_walk() { folder := 'test_walk' - os.mkdir(folder) or { - panic(err) - } + os.mkdir(folder) or { panic(err) } file1 := folder + os.path_separator + 'test1' os.write_file(file1, 'test-1') os.walk(folder, walk_callback) @@ -213,15 +194,9 @@ fn test_cp() { old_file_name := 'cp_example.txt' new_file_name := 'cp_new_example.txt' os.write_file(old_file_name, 'Test data 1 2 3, V is awesome #$%^[]!~⭐') - os.cp(old_file_name, new_file_name) or { - panic('$err: errcode: $errcode') - } - old_file := os.read_file(old_file_name) or { - panic(err) - } - new_file := os.read_file(new_file_name) or { - panic(err) - } + os.cp(old_file_name, new_file_name) or { panic('$err: errcode: $errcode') } + old_file := os.read_file(old_file_name) or { panic(err) } + new_file := os.read_file(new_file_name) or { panic(err) } assert old_file == new_file os.rm(old_file_name) os.rm(new_file_name) @@ -272,37 +247,19 @@ 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') or { - panic(err) - } - os.cp_all('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) - } + os.mkdir('ex') or { panic(err) } + os.cp_all('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') or { - panic(err) - } + os.mkdir('ex/ex2') or { panic(err) } os.write_file('ex2.txt', 'great!') - os.cp_all('ex2.txt', 'ex/ex2', false) or { - panic(err) - } - old2 := os.read_file('ex2.txt') or { - panic(err) - } - new2 := os.read_file('ex/ex2/ex2.txt') or { - panic(err) - } + os.cp_all('ex2.txt', 'ex/ex2', false) or { panic(err) } + old2 := os.read_file('ex2.txt') or { panic(err) } + new2 := os.read_file('ex/ex2/ex2.txt') or { panic(err) } assert old2 == new2 // recurring on dir -> local dir - os.cp_all('ex', './', true) or { - panic(err) - } + os.cp_all('ex', './', true) or { panic(err) } } fn test_tmpdir() { @@ -313,9 +270,7 @@ fn test_tmpdir() { os.rm(tfile) // just in case tfile_content := 'this is a temporary file' os.write_file(tfile, tfile_content) - tfile_content_read := os.read_file(tfile) or { - panic(err) - } + tfile_content_read := os.read_file(tfile) or { panic(err) } assert tfile_content_read == tfile_content os.rm(tfile) } @@ -339,12 +294,8 @@ fn test_make_symlink_check_is_link_and_remove_symlink() { symlink := 'tsymlink' os.rm(symlink) os.rm(folder) - os.mkdir(folder) or { - panic(err) - } - folder_contents := os.ls(folder) or { - panic(err) - } + os.mkdir(folder) or { panic(err) } + folder_contents := os.ls(folder) or { panic(err) } assert folder_contents.len == 0 os.system('ln -s $folder $symlink') assert os.is_link(symlink) == true @@ -381,12 +332,8 @@ fn test_symlink() { $if windows { return } - os.mkdir('symlink') or { - panic(err) - } - os.symlink('symlink', 'symlink2') or { - panic(err) - } + os.mkdir('symlink') or { panic(err) } + os.symlink('symlink', 'symlink2') or { panic(err) } assert os.exists('symlink2') // cleanup os.rm('symlink') @@ -485,9 +432,7 @@ fn test_write_file_array_bytes() { arr[i] = 65 + byte(i) } os.write_file_array(fpath, arr) - rarr := os.read_bytes(fpath) or { - panic(err) - } + rarr := os.read_bytes(fpath) or { panic(err) } assert arr == rarr // eprintln(arr.str()) // eprintln(rarr.str()) @@ -508,7 +453,7 @@ fn test_write_file_array_structs() { fn test_stdout_capture() { /* -mut cmd := os.Command{ + mut cmd := os.Command{ path:'cat' redirect_stdout: true } @@ -518,5 +463,5 @@ for !cmd.eof { println('line="$line"') } cmd.close() -*/ + */ } diff --git a/vlib/os/os_windows.c.v b/vlib/os/os_windows.c.v index 5e49be5ffc..55437bb32e 100644 --- a/vlib/os/os_windows.c.v +++ b/vlib/os/os_windows.c.v @@ -143,9 +143,7 @@ pub fn mkdir(path string) ?bool { // Ref - https://docs.microsoft.com/en-us/cpp/c-runtime-library/reference/get-osfhandle?view=vs-2019 // get_file_handle retrieves the operating-system file handle that is associated with the specified file descriptor. pub fn get_file_handle(path string) HANDLE { - cfile := vfopen(path, 'rb') or { - return HANDLE(invalid_handle_value) - } + cfile := vfopen(path, 'rb') or { return HANDLE(invalid_handle_value) } handle := HANDLE(C._get_osfhandle(fileno(cfile))) // CreateFile? - hah, no -_- return handle } @@ -341,7 +339,7 @@ pub: context_record &ContextRecord } -pub type VectoredExceptionHandler = fn ( &ExceptionPointers) u32 +pub type VectoredExceptionHandler = fn (&ExceptionPointers) u32 // This is defined in builtin because we use vectored exception handling // for our unhandled exception handler on windows