Glibc provides the argp_parse() function for parsing command line
arguments [1].
Indicate that argc/argv are read from and arg_index is written to.
Strictly speaking, we also need to indicate that argp is read from,
but this would require describing its layout, and most people use a
static initializer there, so it's not worth the effort.
[1] https://www.gnu.org/software/libc/manual/html_node/Argp.html
I guess it should be always internal_strlen(argv[i]) + 1 ?
!strict_string_checks allows to pass non true C strings in API if we know that parser can return early.
Here I don't see why we should permit non zero terminate strings.