aboutsummaryrefslogtreecommitdiff
path: root/doc
diff options
context:
space:
mode:
authorPhaseMage <phasemage@live.com>2022-01-30 11:27:52 -0800
committerGitHub <noreply@github.com>2022-01-30 21:27:52 +0200
commit8a97807d6812f62db4c3088fecd04a98a84b9943 (patch)
treea7658f7e1d412aa5bcede21c21b455b939074174 /doc
parent336aa3c332067ad7109a60a1276ce7a8f193ed0e (diff)
downloadzig-8a97807d6812f62db4c3088fecd04a98a84b9943.tar.gz
zig-8a97807d6812f62db4c3088fecd04a98a84b9943.zip
Full response file (*.rsp) support
I hit the "quotes in an RSP file" issue when trying to compile gRPC using "zig cc". As a fun exercise, I decided to see if I could fix it myself. I'm fully open to this code being flat-out rejected. Or I can take feedback to fix it up. This modifies (and renames) _ArgIteratorWindows_ in process.zig such that it works with arbitrary strings (or the contents of an RSP file). In main.zig, this new _ArgIteratorGeneral_ is used to address the "TODO" listed in _ClangArgIterator_. This change closes #4833. **Pros:** - It has the nice attribute of handling "RSP file" arguments in the same way it handles "cmd_line" arguments. - High Performance, minimal allocations - Fixed bug in previous _ArgIteratorWindows_, where final trailing backslashes in a command line were entirely dropped - Added a test case for the above bug - Harmonized the _ArgIteratorXxxx._initWithAllocator()_ and _next()_ interface across Windows/Posix/Wasi (Moved Windows errors to _initWithAllocator()_ rather than _next()_) - Likely perf benefit on Windows by doing _utf16leToUtf8AllocZ()_ only once for the entire cmd_line **Cons:** - Breaking Change in std library on Windows: Call _ArgIterator.initWithAllocator()_ instead of _ArgIterator.init()_ - PhaseMage is new with contributions to Zig, might need a lot of hand-holding - PhaseMage is a Windows person, non-Windows stuff will need to be double-checked **Testing Done:** - Wrote a few new test cases in process.zig - zig.exe build test -Dskip-release (no new failures seen) - zig cc now builds gRPC without error
Diffstat (limited to 'doc')
-rw-r--r--doc/docgen.zig10
1 files changed, 5 insertions, 5 deletions
diff --git a/doc/docgen.zig b/doc/docgen.zig
index 341863fb4a..760ebb71d3 100644
--- a/doc/docgen.zig
+++ b/doc/docgen.zig
@@ -23,21 +23,21 @@ pub fn main() !void {
const allocator = arena.allocator();
- var args_it = process.args();
+ var args_it = try process.argsWithAllocator(allocator);
if (!args_it.skip()) @panic("expected self arg");
- const zig_exe = (try args_it.next(allocator)) orelse @panic("expected zig exe arg");
+ const zig_exe = args_it.next() orelse @panic("expected zig exe arg");
defer allocator.free(zig_exe);
- const in_file_name = (try args_it.next(allocator)) orelse @panic("expected input arg");
+ const in_file_name = args_it.next() orelse @panic("expected input arg");
defer allocator.free(in_file_name);
- const out_file_name = (try args_it.next(allocator)) orelse @panic("expected output arg");
+ const out_file_name = args_it.next() orelse @panic("expected output arg");
defer allocator.free(out_file_name);
var do_code_tests = true;
- if (try args_it.next(allocator)) |arg| {
+ if (args_it.next()) |arg| {
if (mem.eql(u8, arg, "--skip-code-tests")) {
do_code_tests = false;
} else {