Greg Stein <[EMAIL PROTECTED]> writes: > So... by stating the parameter is "const char * const *argv", we are saying > what we intend to do (or not do) with the arguments. And I think we really > ought to treat it as if those const qualifiers were on there.
I confess I don't understand the nuance of these `const' usages. The code needs to permute argv; if it can't, we'll have to change the interface, right? If Greg H has to cast internally to get something he can permute, then we might as well not require a const on the castee in the first place. Does the above declaration still permit permutation of the array? (Apologies; I'm rereading my K&R and still not fully understanding what the above does.) That is (using the invocation "svn -d foo bar"), we have argv --------+ | | V [pointer1 , pointer2 , pointer3 , pointer4, pointer5] | | | | | | | | | | | | | | | V V V V V [svn\0] [-d\0] [foo\0] [bar\0] <NULL> So there are three things that could be constified: 1. The variable `argv', which holds a pointer to an array of pointers. 2. The elements of that array, each of which points to a C string. 3. The elements of a given C string. If we're constifying #2, then that's a problem for permutation. Please feel free to bean me if I'm totally missing the point here... Humility is my strong suit, (Oh wait), -K