On Sat, Jan 14, 2023 at 8:13 AM Miguel Ojeda <miguel.ojeda.sandonis@xxxxxxxxx> wrote: > > On Thu, Jan 12, 2023 at 6:32 AM Masahiro Yamada <masahiroy@xxxxxxxxxx> wrote: > > > > +set -- ${bindgen_libclang_output#**clang version} > > +bindgen_libclang_cversion=$(get_canonical_version $1) > > bindgen_libclang_min_version=$($min_tool_version llvm) > > -bindgen_libclang_cversion=$(get_canonical_version $bindgen_libclang_version) > > Nice trick :) To be honest, I am not really fond of `set`, and in this > case it means the command is not symmetric (we remove the prefix using > parameter expansion, and the suffix via positional argument > selection), but if you prefer it that way, I think it would be fine. I just tend to write efficient code. (scripts/{cc,ld,as}-version.sh do not use sed or grep at all.) Especially, I avoid unneeded process forks in the process forks. > However, why the double asterisk? One already matches any string, > including spaces, no? Sorry, it is my mistake. I meant double pound. set -- ${bindgen_libclang_output##*clang version} The double pound strips "the longest matching pattern", just in case "clang version" is contained in the file path. (but if a space is contained in the directory path, it would have failed earlier. > > Cheers, > Miguel -- Best Regards Masahiro Yamada