*.c: "const char const *" replaced with the "char const * const"

today I learned that these constructs yields a semantically different
result.

I was playing with a vim plugin for clang, and I noticed a warning
stating duplicate const qualifiers, so I tried it in a dummy application
and it happens to be the case that "const char const *foo" yields a
pointer to some read-only char(s), obviously, but it does not yield a
constant pointer (i.e. 'const char const *foo = "foo"; foo = "bar";')
does not yield any compiler error.

I knew that qualifiers primarily bounded to its leftmost keyword, and
"const char *foo", is a special case where const binds to char
(rightmost keyword) because there is no leftmost keyword to bind to, and
as such I somehow, incorrectly, deduced that "const char const *" would
have the middle const bind to * because it does not make sense to have
duplicate const qualifiers.

so the lesson to take from this is that you should use C++ guidelines
(qualifiers binds to leftmost type) for writing complex qualifier
statements (e.g. all but /(const|volatile|...) TYPE/).