Commit c29bec2
committed
fix(build,platform): paths with spaces survive both include channels and cmd.exe
Two independent places assumed no path ever contains a space — which on
Windows means assuming nobody installs under C:\Program Files and no user
name has a space in it.
include dirs (#331): the same manifest include_dirs reaches the compiler
through the global blob in flags.cppm and through ninja_backend's per-TU
$local_includes. Only the first shell-quoted; the second applied ninja's $
escaping alone, so ninja un-escaped the space and handed the shell a word
that split. Both now go through mcpp::build::include_token — a shared helper
rather than a second copy of the quoting, because a third channel is exactly
how this happened. That also fixes the plain half of local_include_flags
hardcoding -I while its after-dirs half honoured the dialect.
cmd.exe: argv[0] was emitted raw to survive cmd's /c quote stripping, which
traded 'the path gets mangled' for 'the path is cut at the first space'.
Give cmd the outer quote pair it insists on consuming and the inner quoting
arrives intact, so every token can be quoted. run_exec keeps inheriting
stdio — sealing its stdin would break interactive `mcpp run`.
The Windows command-line shape is now built by host-independent functions so
Linux CI exercises it; that branch is not even compiled on the platforms mcpp
is developed on, which is how the unquoted argv[0] survived this long.1 parent 103780b commit c29bec2
6 files changed
Lines changed: 281 additions & 29 deletions
File tree
- src
- build
- platform
- tests/unit
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
82 | 82 | | |
83 | 83 | | |
84 | 84 | | |
| 85 | + | |
| 86 | + | |
| 87 | + | |
| 88 | + | |
| 89 | + | |
| 90 | + | |
| 91 | + | |
| 92 | + | |
| 93 | + | |
| 94 | + | |
| 95 | + | |
| 96 | + | |
| 97 | + | |
| 98 | + | |
| 99 | + | |
| 100 | + | |
| 101 | + | |
| 102 | + | |
| 103 | + | |
| 104 | + | |
85 | 105 | | |
86 | 106 | | |
87 | 107 | | |
| |||
139 | 159 | | |
140 | 160 | | |
141 | 161 | | |
| 162 | + | |
| 163 | + | |
| 164 | + | |
| 165 | + | |
| 166 | + | |
| 167 | + | |
| 168 | + | |
| 169 | + | |
| 170 | + | |
| 171 | + | |
| 172 | + | |
| 173 | + | |
| 174 | + | |
142 | 175 | | |
143 | 176 | | |
144 | 177 | | |
| |||
222 | 255 | | |
223 | 256 | | |
224 | 257 | | |
225 | | - | |
| 258 | + | |
226 | 259 | | |
227 | 260 | | |
228 | 261 | | |
| |||
233 | 266 | | |
234 | 267 | | |
235 | 268 | | |
236 | | - | |
| 269 | + | |
| 270 | + | |
237 | 271 | | |
238 | 272 | | |
239 | 273 | | |
240 | 274 | | |
241 | | - | |
| 275 | + | |
242 | 276 | | |
243 | 277 | | |
244 | 278 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
105 | 105 | | |
106 | 106 | | |
107 | 107 | | |
108 | | - | |
109 | | - | |
| 108 | + | |
| 109 | + | |
| 110 | + | |
| 111 | + | |
110 | 112 | | |
111 | 113 | | |
112 | | - | |
113 | | - | |
| 114 | + | |
| 115 | + | |
| 116 | + | |
| 117 | + | |
| 118 | + | |
| 119 | + | |
| 120 | + | |
| 121 | + | |
114 | 122 | | |
115 | 123 | | |
116 | 124 | | |
| |||
126 | 134 | | |
127 | 135 | | |
128 | 136 | | |
129 | | - | |
130 | | - | |
| 137 | + | |
| 138 | + | |
| 139 | + | |
| 140 | + | |
131 | 141 | | |
132 | 142 | | |
133 | 143 | | |
| |||
994 | 1004 | | |
995 | 1005 | | |
996 | 1006 | | |
997 | | - | |
| 1007 | + | |
998 | 1008 | | |
999 | 1009 | | |
1000 | 1010 | | |
| |||
1076 | 1086 | | |
1077 | 1087 | | |
1078 | 1088 | | |
1079 | | - | |
| 1089 | + | |
1080 | 1090 | | |
1081 | 1091 | | |
1082 | 1092 | | |
| |||
1128 | 1138 | | |
1129 | 1139 | | |
1130 | 1140 | | |
1131 | | - | |
| 1141 | + | |
1132 | 1142 | | |
1133 | 1143 | | |
1134 | 1144 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
128 | 128 | | |
129 | 129 | | |
130 | 130 | | |
| 131 | + | |
| 132 | + | |
| 133 | + | |
| 134 | + | |
| 135 | + | |
| 136 | + | |
| 137 | + | |
| 138 | + | |
| 139 | + | |
| 140 | + | |
| 141 | + | |
| 142 | + | |
| 143 | + | |
| 144 | + | |
| 145 | + | |
| 146 | + | |
| 147 | + | |
| 148 | + | |
| 149 | + | |
| 150 | + | |
| 151 | + | |
131 | 152 | | |
132 | 153 | | |
133 | 154 | | |
134 | 155 | | |
135 | 156 | | |
136 | 157 | | |
| 158 | + | |
| 159 | + | |
| 160 | + | |
| 161 | + | |
| 162 | + | |
| 163 | + | |
| 164 | + | |
| 165 | + | |
| 166 | + | |
| 167 | + | |
| 168 | + | |
| 169 | + | |
| 170 | + | |
| 171 | + | |
| 172 | + | |
137 | 173 | | |
138 | 174 | | |
139 | 175 | | |
| |||
151 | 187 | | |
152 | 188 | | |
153 | 189 | | |
| 190 | + | |
| 191 | + | |
| 192 | + | |
| 193 | + | |
| 194 | + | |
| 195 | + | |
| 196 | + | |
| 197 | + | |
| 198 | + | |
| 199 | + | |
| 200 | + | |
| 201 | + | |
| 202 | + | |
| 203 | + | |
| 204 | + | |
| 205 | + | |
| 206 | + | |
| 207 | + | |
| 208 | + | |
| 209 | + | |
| 210 | + | |
| 211 | + | |
| 212 | + | |
| 213 | + | |
| 214 | + | |
| 215 | + | |
| 216 | + | |
| 217 | + | |
| 218 | + | |
| 219 | + | |
| 220 | + | |
| 221 | + | |
| 222 | + | |
| 223 | + | |
| 224 | + | |
| 225 | + | |
| 226 | + | |
| 227 | + | |
154 | 228 | | |
155 | 229 | | |
156 | 230 | | |
| |||
227 | 301 | | |
228 | 302 | | |
229 | 303 | | |
230 | | - | |
231 | | - | |
232 | | - | |
233 | | - | |
| 304 | + | |
| 305 | + | |
| 306 | + | |
| 307 | + | |
| 308 | + | |
| 309 | + | |
| 310 | + | |
| 311 | + | |
234 | 312 | | |
235 | | - | |
236 | 313 | | |
237 | | - | |
| 314 | + | |
| 315 | + | |
238 | 316 | | |
| 317 | + | |
239 | 318 | | |
240 | | - | |
241 | 319 | | |
242 | 320 | | |
243 | 321 | | |
244 | 322 | | |
245 | 323 | | |
| 324 | + | |
246 | 325 | | |
247 | 326 | | |
248 | 327 | | |
| |||
253 | 332 | | |
254 | 333 | | |
255 | 334 | | |
256 | | - | |
| 335 | + | |
257 | 336 | | |
258 | 337 | | |
259 | 338 | | |
| |||
306 | 385 | | |
307 | 386 | | |
308 | 387 | | |
309 | | - | |
| 388 | + | |
310 | 389 | | |
311 | 390 | | |
312 | 391 | | |
313 | 392 | | |
314 | 393 | | |
315 | 394 | | |
316 | | - | |
| 395 | + | |
317 | 396 | | |
318 | 397 | | |
319 | 398 | | |
| |||
342 | 421 | | |
343 | 422 | | |
344 | 423 | | |
345 | | - | |
| 424 | + | |
346 | 425 | | |
347 | 426 | | |
348 | 427 | | |
| |||
397 | 476 | | |
398 | 477 | | |
399 | 478 | | |
400 | | - | |
| 479 | + | |
| 480 | + | |
401 | 481 | | |
402 | 482 | | |
403 | 483 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
20 | 20 | | |
21 | 21 | | |
22 | 22 | | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
23 | 30 | | |
24 | 31 | | |
25 | 32 | | |
| |||
36 | 43 | | |
37 | 44 | | |
38 | 45 | | |
39 | | - | |
| 46 | + | |
40 | 47 | | |
41 | 48 | | |
42 | | - | |
43 | 49 | | |
44 | 50 | | |
45 | 51 | | |
46 | 52 | | |
47 | 53 | | |
48 | 54 | | |
49 | | - | |
| 55 | + | |
| 56 | + | |
| 57 | + | |
| 58 | + | |
| 59 | + | |
| 60 | + | |
50 | 61 | | |
51 | 62 | | |
52 | 63 | | |
53 | 64 | | |
54 | 65 | | |
55 | 66 | | |
56 | | - | |
57 | 67 | | |
58 | 68 | | |
59 | 69 | | |
| 70 | + | |
| 71 | + | |
| 72 | + | |
| 73 | + | |
| 74 | + | |
| 75 | + | |
| 76 | + | |
| 77 | + | |
60 | 78 | | |
0 commit comments