[clang] [clang-format] Add null-terminated path option (#123921) (PR #123926)

Nikolaos Chatzikonstantinou via cfe-commits cfe-commits at lists.llvm.org
Fri Jan 24 03:25:00 PST 2025


================
@@ -205,6 +205,12 @@ def main():
             "commits"
         ),
     )
+    p.add_argument(
+        "-0",
+        "--null",
+        action="store_true",
+        help="print the affected paths with null-terminated characters",
----------------
createyourpersonalaccount wrote:

> > I'm wondering if `-0` should turn off all informational messaging as well and _only_ print the paths. As it is, it will print things like _Running clang-format on the following files:_, even if a null-separated list of files follows.
> > So right now the usage would be (example)
> > ```shell
> > git clang-format --staged -0 | tail -n +2 | xargs -0 git add
> > ```
> >
> > but perhaps it should not print informational messages and have the usage be simplified:
> > ```shell
> > git clang-format --staged -0 | xargs -0 git add
> > ```
> 
> Aren't you really asking, just give me a list of all the files that have been changed by clang format, in which case -0 isn't really that descriptive, what not
> 
> ```
> --modified  or -m (similar to git ls-files)
> ```
> 
> or `-- affected (might avoid becausee of affected/effected spelling issues people have)`

The list is already printed. The `-0` flag is printing a null separated list of files, see for example https://github.com/llvm/llvm-project/issues/123921. This allows to safely parse the list, avoiding issues with e.g. newlines in file names.

> if you plan on dropping other text output (which I think perhaps you should other wise it needs to be grep -v'd or tailed to make it work correctly, I would perhaps rather we had a better named command line switch than -0 or --null

Okay, I will drop all other text except the list of files. Why do you say that `-0` and `--null` are bad? The standard is `-0` and `-z`, I think whichever works, but given that this will most likely be used with xargs, it makes sense to use `-0`.

> I know this is likely how xargs or find works, but I think we can do a little better than those tools in terms of clarity.

What other tool is there? GNU Parallel also works with `-0` and generally any other tool that does what these tools do will have either `-0` or `-z`.

https://github.com/llvm/llvm-project/pull/123926


More information about the cfe-commits mailing list