Linus Torvalds wrote: > > On Sun, 23 Oct 2005, H. Peter Anvin wrote: > >>If this is meant to dequote shell-quoted paths, it really should be modal. > > It _only_ accepts quoted strings, so it "is" modal. It has one mode: > string. And it's a bitch about enforcing it, too (it just dies if it > wasn't one). > That wasn't what I meant. '...' is a modal escape in the shell. Thus, something like this which actually mimics the state machine, at least for the potential characters we care about. #define EMIT(x) { ( ++len < n ) && *dst++ = (x) ) int unquote(char *dst, size_t n, const char *src) { enum state st = { st_zero, st_quote, st_escape }; int len = 0; char c; while ( (c = *src++) ) { switch ( st ) { case st_zero: if ( c == '\'' ) st = st_quote; else if ( c == '\\' ) st = st_escape; else EMIT(c); break; case st_quote: if ( c == '\'' ) st = st_zero; else EMIT(c); break; case st_escape: EMIT(c); st = st_zero; break; } } if ( n ) *dst = 0; return (st == st_zero) ? len : -1; } - To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.htmlReceived on Mon Oct 24 11:44:58 2005
This archive was generated by hypermail 2.1.8 : 2005-10-24 11:45:01 EST