diff options
| author | gingerBill <gingerBill@users.noreply.github.com> | 2025-10-27 18:51:57 +0000 |
|---|---|---|
| committer | gingerBill <gingerBill@users.noreply.github.com> | 2025-10-27 18:51:57 +0000 |
| commit | 5a23f52fb6343598307decd77c117b9917dfc639 (patch) | |
| tree | e54429671f4ada167ccf62912702032db3af7b98 | |
| parent | a20c09158aabda90bfb2b66bd3350b3c1178b03a (diff) | |
| parent | fca223202865cdd25ce02c1fb5ab033e2dcb068c (diff) | |
Merge branch 'master' of https://github.com/odin-lang/Odin
| -rw-r--r-- | core/os/os2/file_linux.odin | 8 | ||||
| -rw-r--r-- | core/os/os2/file_posix.odin | 23 | ||||
| -rw-r--r-- | src/build_settings.cpp | 1 | ||||
| -rw-r--r-- | src/main.cpp | 15 |
4 files changed, 34 insertions, 13 deletions
diff --git a/core/os/os2/file_linux.odin b/core/os/os2/file_linux.odin index 92f0c1541..85f639c8b 100644 --- a/core/os/os2/file_linux.odin +++ b/core/os/os2/file_linux.odin @@ -198,7 +198,7 @@ _seek :: proc(f: ^File_Impl, offset: i64, whence: io.Seek_From) -> (ret: i64, er case .NONE: return n, nil case: - return -1, _get_platform_error(errno) + return 0, _get_platform_error(errno) } } @@ -209,7 +209,7 @@ _read :: proc(f: ^File_Impl, p: []byte) -> (i64, Error) { n, errno := linux.read(f.fd, p[:min(len(p), MAX_RW)]) if errno != .NONE { - return -1, _get_platform_error(errno) + return 0, _get_platform_error(errno) } return i64(n), io.Error.EOF if n == 0 else nil } @@ -223,7 +223,7 @@ _read_at :: proc(f: ^File_Impl, p: []byte, offset: i64) -> (i64, Error) { } n, errno := linux.pread(f.fd, p[:min(len(p), MAX_RW)], offset) if errno != .NONE { - return -1, _get_platform_error(errno) + return 0, _get_platform_error(errno) } if n == 0 { return 0, .EOF @@ -276,7 +276,7 @@ _file_size :: proc(f: ^File_Impl) -> (n: i64, err: Error) { s: linux.Stat = --- errno := linux.fstat(f.fd, &s) if errno != .NONE { - return -1, _get_platform_error(errno) + return 0, _get_platform_error(errno) } if s.mode & linux.S_IFMT == linux.S_IFREG { diff --git a/core/os/os2/file_posix.odin b/core/os/os2/file_posix.odin index fed8d766c..a251a3ae7 100644 --- a/core/os/os2/file_posix.odin +++ b/core/os/os2/file_posix.odin @@ -382,12 +382,14 @@ _file_stream_proc :: proc(stream_data: rawptr, mode: io.Stream_Mode, p: []byte, } to_read := uint(min(len(p), MAX_RW)) - n = i64(posix.read(fd, raw_data(p), to_read)) + _n := i64(posix.read(fd, raw_data(p), to_read)) switch { - case n == 0: + case _n == 0: err = .EOF - case n < 0: + case _n < 0: err = .Unknown + case: + n = _n } return @@ -402,12 +404,14 @@ _file_stream_proc :: proc(stream_data: rawptr, mode: io.Stream_Mode, p: []byte, } to_read := uint(min(len(p), MAX_RW)) - n = i64(posix.pread(fd, raw_data(p), to_read, posix.off_t(offset))) + _n := i64(posix.pread(fd, raw_data(p), to_read, posix.off_t(offset))) switch { - case n == 0: + case _n == 0: err = .EOF - case n < 0: + case _n < 0: err = .Unknown + case: + n = _n } return @@ -460,15 +464,18 @@ _file_stream_proc :: proc(stream_data: rawptr, mode: io.Stream_Mode, p: []byte, return } - n = i64(posix.lseek(fd, posix.off_t(offset), posix.Whence(whence))) - if n < 0 { + _n := i64(posix.lseek(fd, posix.off_t(offset), posix.Whence(whence))) + if _n < 0 { #partial switch posix.get_errno() { case .EINVAL: err = .Invalid_Offset case: err = .Unknown } + return } + + n = _n return case .Size: diff --git a/src/build_settings.cpp b/src/build_settings.cpp index 7a0952583..757df95f7 100644 --- a/src/build_settings.cpp +++ b/src/build_settings.cpp @@ -509,6 +509,7 @@ struct BuildContext { bool show_more_timings; bool show_defineables; String export_defineables_file; + bool ignore_unused_defineables; bool show_system_calls; bool keep_temp_files; bool ignore_unknown_attributes; diff --git a/src/main.cpp b/src/main.cpp index 4cc53f319..0af589339 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -334,6 +334,7 @@ enum BuildFlagKind { BuildFlag_ShowDefineables, BuildFlag_ExportDefineables, + BuildFlag_IgnoreUnusedDefineables, BuildFlag_Vet, BuildFlag_VetShadowing, @@ -563,6 +564,7 @@ gb_internal bool parse_build_flags(Array<String> args) { add_flag(&build_flags, BuildFlag_ShowDefineables, str_lit("show-defineables"), BuildFlagParam_None, Command__does_check); add_flag(&build_flags, BuildFlag_ExportDefineables, str_lit("export-defineables"), BuildFlagParam_String, Command__does_check); + add_flag(&build_flags, BuildFlag_IgnoreUnusedDefineables, str_lit("ignore-unused-defineables"), BuildFlagParam_None, Command__does_check); add_flag(&build_flags, BuildFlag_Vet, str_lit("vet"), BuildFlagParam_None, Command__does_check); add_flag(&build_flags, BuildFlag_VetUnused, str_lit("vet-unused"), BuildFlagParam_None, Command__does_check); @@ -945,6 +947,11 @@ gb_internal bool parse_build_flags(Array<String> args) { break; } + case BuildFlag_IgnoreUnusedDefineables: { + GB_ASSERT(value.kind == ExactValue_Invalid); + build_context.ignore_unused_defineables = true; + break; + } case BuildFlag_ShowSystemCalls: { GB_ASSERT(value.kind == ExactValue_Invalid); build_context.show_system_calls = true; @@ -2882,6 +2889,10 @@ gb_internal int print_show_help(String const arg0, String command, String option print_usage_line(2, "Shows an overview of all the #config/#defined usages in the project."); } + if (print_flag("-ignore-unused-defineables")) { + print_usage_line(2, "Silence warning/error if a -define doesn't have at least one #config/#defined usage."); + } + if (print_flag("-show-system-calls")) { print_usage_line(2, "Prints the whole command and arguments for calls to external tools like linker and assembler."); } @@ -3891,7 +3902,9 @@ int main(int arg_count, char const **arg_ptr) { MAIN_TIME_SECTION("type check"); check_parsed_files(checker); - check_defines(&build_context, checker); + if (!build_context.ignore_unused_defineables) { + check_defines(&build_context, checker); + } if (any_errors()) { print_all_errors(); return 1; |