48 lines
1.1 KiB
Odin
48 lines
1.1 KiB
Odin
package sectr
|
|
|
|
import "core:fmt"
|
|
import "core:os"
|
|
import "core:runtime"
|
|
|
|
copy_file_sync :: proc( path_src, path_dst: string ) -> b32
|
|
{
|
|
file_size : i64
|
|
{
|
|
path_info, result := os.stat( path_src, context.temp_allocator )
|
|
if result != os.ERROR_NONE {
|
|
fmt.println("Error getting file info: ", result )
|
|
return false
|
|
}
|
|
file_size = path_info.size
|
|
}
|
|
|
|
src_content, result := os.read_entire_file( path_src, context.temp_allocator )
|
|
if ! result {
|
|
fmt.println( "Failed to read file to copy" )
|
|
runtime.debug_trap()
|
|
return false
|
|
}
|
|
|
|
result = os.write_entire_file( path_dst, src_content, false )
|
|
if ! result {
|
|
fmt.println( "Failed to copy file")
|
|
runtime.debug_trap()
|
|
return false
|
|
}
|
|
return true
|
|
}
|
|
|
|
is_file_locked :: proc( file_path: string ) -> b32 {
|
|
// Try to open the file for read access without sharing.
|
|
// If the file is locked, the call will fail.
|
|
handle, err := os.open(file_path, os.O_RDONLY)
|
|
if err != os.ERROR_NONE {
|
|
// If the error indicates the file is in use, return true.
|
|
return true
|
|
}
|
|
|
|
// If the file opens successfully, close it and return false.
|
|
os.close(handle)
|
|
return false
|
|
}
|