From: Linus Torvalds <email@example.com> To: Daniel Barkalow <firstname.lastname@example.org> Cc: Paul Eggert <eggert@CS.UCLA.EDU>, Junio C Hamano <email@example.com>, Robert Fitzsimons <firstname.lastname@example.org>, Alex Riesen <email@example.com>, firstname.lastname@example.org, Kai Ruemmler <email@example.com> Subject: Re: [PATCH] Try URI quoting for embedded TAB and LF in pathnames Date: Wed, 12 Oct 2005 12:52:41 -0700 (PDT) Message-ID: <Pine.LNX.firstname.lastname@example.org> (raw) In-Reply-To: <Pine.LNX.email@example.com> On Wed, 12 Oct 2005, Daniel Barkalow wrote: > > I think it's actually sufficient to escape 0x00-0x1f and 0x7f; those > ranges are both easy They are indeed easy. > and, as far as I can tell, include all of the control > characters that do annoying things. Nope. The traditional vt100 escape sequence is "ESC" followed by a character to indicate the type of sequence (the most common one is '['). That's all 7-bit and fine. HOWEVER, they made the 8-bit extension be such that any of these vt100 begin sequences where the second character is in the appropriate range can be instead shortened by one character, by instead using a single 8-bit character of "0x80+(char-0x40)". Ie the traditional "ESC + '['" (\x1b\x5b) can also be written as a single '\x9b' character, aka CSI. In other words, 0x80-0x9f are _all_ just vt100 shorthand for ESC+'@' through ESC+'_'. (I guess it's not strictly "vt100" any more - it's the extended vt220 format). > I think escape, backspace, delete, and > bell are the only ones we'd rather the terminal not get; beyond that, > patches with screwy filenames look screwy, but don't screw up anything > outside of the filename. Try this on a (non-UTF-8) xterm: echo -en '\x9b5B---\x9b1A---\x9b4A\r' and it should do: - move cursor 5 lines down - print "---" - move cursor 1 line up - print "---" - move cursor 4 lines up - return carriage to beginning. In other words, your screen should end up looking something like this: [torvalds@g5 ~]$ echo -en '\x9b5B---\x9b1A---\x9b4A\r' [torvalds@g5 ~]$ --- --- where that "staircase" of two "---" things was done with cursor movements. And that's a _benign_ sequence. You can do all kinds of funky stuff that really screws up the user experience. Including have the thing echo keys to you that you didn't type: echo -en '\x9b5n' or lock the keyboard (I don't think any of the terminal emulators implement the latter, or some of the other stranger sequences - things to do double-wide characters etc). Linus PS. You can do all the same in UTF-8 one, but then you'll have to add a \xc2 before the \x9b: echo -en '\xc2\x9b5B---\xc2\x9b1A---\xc2\x9b4A\r' etc..
next prev parent reply index Thread overview: 33+ messages / expand[flat|nested] mbox.gz Atom feed top 2005-10-07 19:35 [RFC] " Junio C Hamano 2005-10-07 23:29 ` Alex Riesen 2005-10-07 23:44 ` Junio C Hamano 2005-10-08 6:45 ` Alex Riesen 2005-10-08 9:10 ` Junio C Hamano 2005-10-08 13:30 ` [PATCH] Try URI quoting for " Robert Fitzsimons 2005-10-08 18:30 ` Junio C Hamano 2005-10-08 20:19 ` Junio C Hamano 2005-10-11 6:20 ` Paul Eggert 2005-10-11 7:37 ` Junio C Hamano 2005-10-11 15:17 ` Linus Torvalds 2005-10-11 18:03 ` Paul Eggert 2005-10-11 18:37 ` Linus Torvalds 2005-10-11 19:42 ` Paul Eggert 2005-10-11 20:56 ` Linus Torvalds 2005-10-12 6:51 ` Paul Eggert 2005-10-12 14:59 ` Linus Torvalds 2005-10-12 19:07 ` Daniel Barkalow 2005-10-12 19:52 ` Linus Torvalds [this message] 2005-10-12 20:21 ` H. Peter Anvin [not found] ` <firstname.lastname@example.org> 2005-10-12 21:02 ` Junio C Hamano 2005-10-12 21:05 ` Linus Torvalds 2005-10-12 21:09 ` H. Peter Anvin 2005-10-12 21:15 ` Johannes Schindelin 2005-10-12 21:33 ` Junio C Hamano 2005-10-14 0:57 ` Paul Eggert 2005-10-14 5:43 ` Linus Torvalds 2005-10-12 21:24 ` Linus Torvalds 2005-10-14 0:16 ` Paul Eggert 2005-10-14 5:20 ` Linus Torvalds 2005-10-14 17:18 ` H. Peter Anvin 2005-10-14 6:59 ` Junio C Hamano 2005-10-09 10:42 ` Junio C Hamano
Reply instructions: You may reply publically to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=Pine.LNX.email@example.com \ --firstname.lastname@example.org \ --email@example.com \ --cc=eggert@CS.UCLA.EDU \ --firstname.lastname@example.org \ --email@example.com \ --firstname.lastname@example.org \ --email@example.com \ --firstname.lastname@example.org \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: link
Git Mailing List Archive on lore.kernel.org Archives are clonable: git clone --mirror https://lore.kernel.org/git/0 git/git/0.git # If you have public-inbox 1.1+ installed, you may # initialize and index your mirror using the following commands: public-inbox-init -V2 git git/ https://lore.kernel.org/git \ email@example.com public-inbox-index git Example config snippet for mirrors Newsgroup available over NNTP: nntp://nntp.lore.kernel.org/org.kernel.vger.git AGPL code for this site: git clone https://public-inbox.org/public-inbox.git