mirror of
https://github.com/Ed94/Odin.git
synced 2026-08-03 05:08:14 +00:00
remove ctprintf; use fmt.caprintf; fix pipe_linux that I broke.
This commit is contained in:
@@ -3,8 +3,7 @@ package os2
|
|||||||
|
|
||||||
import "base:intrinsics"
|
import "base:intrinsics"
|
||||||
import "base:runtime"
|
import "base:runtime"
|
||||||
import "core:fmt"
|
|
||||||
import "core:strings"
|
|
||||||
|
|
||||||
// Splits pattern by the last wildcard "*", if it exists, and returns the prefix and suffix
|
// Splits pattern by the last wildcard "*", if it exists, and returns the prefix and suffix
|
||||||
// parts which are split by the last "*"
|
// parts which are split by the last "*"
|
||||||
@@ -48,16 +47,6 @@ temp_cstring :: proc(s: string) -> (cstring, runtime.Allocator_Error) {
|
|||||||
return clone_to_cstring(s, temp_allocator())
|
return clone_to_cstring(s, temp_allocator())
|
||||||
}
|
}
|
||||||
|
|
||||||
@(require_results)
|
|
||||||
ctprintf :: proc(format: string, args: ..any, newline := false) -> cstring {
|
|
||||||
str: strings.Builder
|
|
||||||
strings.builder_init(&str, temp_allocator())
|
|
||||||
fmt.sbprintf(&str, format, ..args, newline=newline)
|
|
||||||
strings.write_byte(&str, 0)
|
|
||||||
s := strings.to_string(str)
|
|
||||||
return cstring(raw_data(s))
|
|
||||||
}
|
|
||||||
|
|
||||||
@(require_results)
|
@(require_results)
|
||||||
string_from_null_terminated_bytes :: proc(b: []byte) -> (res: string) {
|
string_from_null_terminated_bytes :: proc(b: []byte) -> (res: string) {
|
||||||
s := string(b)
|
s := string(b)
|
||||||
|
|||||||
@@ -10,8 +10,8 @@ _pipe :: proc() -> (r, w: ^File, err: Error) {
|
|||||||
return nil, nil,_get_platform_error(errno)
|
return nil, nil,_get_platform_error(errno)
|
||||||
}
|
}
|
||||||
|
|
||||||
r = _new_file(uintptr(fds[0]))
|
r = _new_file(uintptr(fds[0])) or_return
|
||||||
w = _new_file(uintptr(fds[1]))
|
w = _new_file(uintptr(fds[1])) or_return
|
||||||
|
|
||||||
r_impl := (^File_Impl)(r.impl)
|
r_impl := (^File_Impl)(r.impl)
|
||||||
r_impl.kind = .Pipe
|
r_impl.kind = .Pipe
|
||||||
|
|||||||
@@ -330,7 +330,7 @@ _process_start :: proc(desc: Process_Desc) -> (process: Process, err: Error) {
|
|||||||
path_dirs := filepath.split_list(path_env, temp_allocator())
|
path_dirs := filepath.split_list(path_env, temp_allocator())
|
||||||
found: bool
|
found: bool
|
||||||
for dir in path_dirs {
|
for dir in path_dirs {
|
||||||
executable_path = ctprintf("%s/%s", dir, executable_name)
|
executable_path = fmt.caprintf("%s/%s", dir, executable_name, temp_allocator())
|
||||||
fail: bool
|
fail: bool
|
||||||
if fail, errno = linux.faccessat(dir_fd, executable_path, linux.F_OK); errno == .NONE && !fail {
|
if fail, errno = linux.faccessat(dir_fd, executable_path, linux.F_OK); errno == .NONE && !fail {
|
||||||
found = true
|
found = true
|
||||||
@@ -339,7 +339,7 @@ _process_start :: proc(desc: Process_Desc) -> (process: Process, err: Error) {
|
|||||||
}
|
}
|
||||||
if !found {
|
if !found {
|
||||||
// check in cwd to match windows behavior
|
// check in cwd to match windows behavior
|
||||||
executable_path = ctprintf("./%s", name)
|
executable_path = fmt.caprintf("./%s", name, temp_allocator())
|
||||||
fail: bool
|
fail: bool
|
||||||
if fail, errno = linux.faccessat(dir_fd, executable_path, linux.F_OK); errno != .NONE || fail {
|
if fail, errno = linux.faccessat(dir_fd, executable_path, linux.F_OK); errno != .NONE || fail {
|
||||||
return process, .Not_Exist
|
return process, .Not_Exist
|
||||||
|
|||||||
Reference in New Issue
Block a user