ww output: match Go exact -o parsing

This commit is contained in:
2026-08-22 01:59:02 +09:00
parent 4b9968e4e6
commit d61805262e
7 changed files with 701 additions and 36 deletions

View File

@@ -8853,19 +8853,25 @@ fn dobuild(selfdir: *u8, argv: **u8, argc: i32, start: i32) i32 = {
};
libs[nlibs] = nm;
nlibs += 1;
} else { if (p[1u64] == 111u8) { // '-o'
if (p[2u64] != 0u8) {
outflag = p + 2u64;
} else { if (cstreqlit(p, "-o") || cstreqlit(p, "--o")
|| (p[1u64] == 111u8 && p[2u64] == 61u8)
|| (p[1u64] == 45u8 && p[2u64] == 111u8
&& p[3u64] == 61u8)) {
if (p[1u64] == 111u8 && p[2u64] == 61u8) {
outflag = p + 3u64;
} else { if (p[1u64] == 45u8
&& p[2u64] == 111u8 && p[3u64] == 61u8) {
outflag = p + 4u64;
} else {
if (i + 1 >= argc) {
cerr("ww build: -o needs an argument\n");
return 2;
};
i += 1;
outflag = argv[i];
};
if (!clipathfits("build", "-o", outflag)) { return 2; };
} else { if (p[1u64] == 119u8) { // '-w'
outflag = argv[i];
}; };
if (!clipathfits("build", "-o", outflag)) { return 2; };
} else { if (p[1u64] == 119u8) { // '-w'
if (p[2u64] != 0u8) {
workdir = p + 2u64;
} else {
@@ -8892,6 +8898,7 @@ fn dobuild(selfdir: *u8, argv: **u8, argc: i32, start: i32) i32 = {
};
i += 1;
};
if (outflag != nil && outflag[0u64] == 0u8) { outflag = nil; };
if (src == nil) {
let dot: [2]u8 = ['.': u8, 0u8];
@@ -9656,19 +9663,26 @@ fn dotest(selfdir: *u8, argv: **u8, argc: i32, start: i32) i32 = {
&& ps.len > 12) {
packageopts = true; i += 1; continue;
};
if (p[1u64] == 111u8) { // '-o'
if (p[2u64] != 0u8) {
outstem = p + 2u64;
if (cstreqlit(p, "-o") || cstreqlit(p, "--o")
|| (p[1u64] == 111u8 && p[2u64] == 61u8)
|| (p[1u64] == 45u8 && p[2u64] == 111u8
&& p[3u64] == 61u8)) {
if (p[1u64] == 111u8 && p[2u64] == 61u8) {
outstem = p + 3u64;
} else { if (p[1u64] == 45u8
&& p[2u64] == 111u8 && p[3u64] == 61u8) {
outstem = p + 4u64;
} else {
if (i + 1 >= argc) {
cerr("ww test: -o needs an argument\n");
return 2;
};
i += 1;
outstem = argv[i];
outstem = argv[i];
};
if (!clipathfits("test", "-o", outstem)) { return 2; };
i += 1; continue;
};
if (!clipathfits("test", "-o", outstem)) { return 2; };
i += 1; continue;
};
if (p[1u64] == 119u8) { // '-w'
if (p[2u64] != 0u8) {
@@ -9691,6 +9705,7 @@ fn dotest(selfdir: *u8, argv: **u8, argc: i32, start: i32) i32 = {
};
i += 1;
};
if (outstem != nil && outstem[0u64] == 0u8) { outstem = nil; };
if (target == nil) {
let dot: [2]u8 = ['.': u8, 0u8];
target = &dot[0];