From: Mikael Magnusson <mikachu@gmail.com>
To: zsh-workers@zsh.org
Subject: PATCH: Remeta one frame earlier
Date: Mon, 23 Feb 2015 14:51:09 +0100 [thread overview]
Message-ID: <1424699469-11744-1-git-send-email-mikachu@gmail.com> (raw)
In-Reply-To: <CAHYJk3RuZiWpi-_ZnEfdS9HHww1OvFj1AegZBiXeMDH0zceieg@mail.gmail.com>
I realized I generated the last patch on top of yours since I applied it
with git-am, so here's a proper patch send from git send-mail instead,
against upstream git master.
---
Src/hist.c | 62 ++++++++++++++++++++++++++++----------------------------------
1 file changed, 28 insertions(+), 34 deletions(-)
diff --git a/Src/hist.c b/Src/hist.c
index 689a793..c5cf43e 100644
--- a/Src/hist.c
+++ b/Src/hist.c
@@ -2502,11 +2502,38 @@ readhistfile(char *fn, int err, int readflags)
newflags |= HIST_MAKEUNIQUE;
while (fpos = ftell(in), (l = readhistline(0, &buf, &bufsiz, in))) {
char *pt = buf;
+ char *ptr;
+ int remeta;
if (l < 0) {
zerr("corrupt history file %s", fn);
break;
}
+
+ /*
+ * Handle the special case that we're reading from an
+ * old shell with fewer meta characters, so we need to
+ * metafy some more. (It's not clear why the history
+ * file is metafied at all; some would say this is plain
+ * stupid. But we're stuck with it now without some
+ * hairy workarounds for compatibility).
+ *
+ * This is rare so doesn't need to be that efficient; just
+ * allocate space off the heap.
+ */
+ for (ptr = pt; *ptr; ptr++) {
+ if (*ptr == Meta && ptr[1])
+ ptr++;
+ else if (imeta(*ptr)) {
+ remeta = 1;
+ break;
+ }
+ }
+ if (remeta) {
+ unmetafy(pt, &remeta);
+ pt = metafy(pt, remeta, META_USEHEAP);
+ }
+
if (*pt == ':') {
pt++;
stim = zstrtol(pt, NULL, 0);
@@ -3380,40 +3407,7 @@ histsplitwords(char *lineptr, short **wordsp, int *nwordsp, int *nwordposp,
if (uselex) {
LinkList wordlist;
LinkNode wordnode;
- int nwords_max, remeta = 0;
- char *ptr;
-
- /*
- * Handle the special case that we're reading from an
- * old shell with fewer meta characters, so we need to
- * metafy some more. (It's not clear why the history
- * file is metafied at all; some would say this is plain
- * stupid. But we're stuck with it now without some
- * hairy workarounds for compatibility).
- *
- * This is rare so doesn't need to be that efficient; just
- * allocate space off the heap.
- *
- * Note that our it's currently believed this all comes out in
- * the wash in the non-uselex case owing to where unmetafication
- * and metafication happen.
- */
- for (ptr = lineptr; *ptr; ptr++) {
- if (*ptr != Meta && imeta(*ptr))
- remeta++;
- }
- if (remeta) {
- char *ptr2, *line2;
- ptr2 = line2 = (char *)zhalloc((ptr - lineptr) + remeta + 1);
- for (ptr = lineptr; *ptr; ptr++) {
- if (*ptr != Meta && imeta(*ptr)) {
- *ptr2++ = Meta;
- *ptr2++ = *ptr ^ 32;
- } else
- *ptr2++ = *ptr;
- }
- lineptr = line2;
- }
+ int nwords_max;
wordlist = bufferwords(NULL, lineptr, NULL,
LEXFLAGS_COMMENTS_KEEP);
--
2.2.0.GIT
next prev parent reply other threads:[~2015-02-23 13:51 UTC|newest]
Thread overview: 24+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-02-19 10:13 PATCH: parse from even deeper in hell Peter Stephenson
2015-02-19 21:47 ` Mikael Magnusson
2015-02-19 22:03 ` Peter Stephenson
2015-02-20 3:16 ` Mikael Magnusson
2015-02-20 3:22 ` Mikael Magnusson
2015-02-20 3:33 ` Mikael Magnusson
2015-02-20 3:43 ` Mikael Magnusson
2015-02-20 4:19 ` Ray Andrews
2015-02-20 9:54 ` Peter Stephenson
2015-02-20 10:00 ` Peter Stephenson
2015-02-20 10:12 ` Mikael Magnusson
2015-02-22 18:26 ` Peter Stephenson
2015-02-23 9:54 ` Peter Stephenson
2015-02-23 10:11 ` Peter Stephenson
2015-02-23 11:35 ` Mikael Magnusson
2015-02-23 12:36 ` Peter Stephenson
2015-02-23 12:57 ` Peter Stephenson
2015-02-23 13:38 ` Mikael Magnusson
2015-02-23 13:46 ` Mikael Magnusson
2015-02-23 13:51 ` Mikael Magnusson [this message]
2015-02-23 13:58 ` PATCH: Remeta one frame earlier Peter Stephenson
2015-02-23 14:05 ` Peter Stephenson
2015-02-23 14:32 ` Mikael Magnusson
2015-02-23 17:32 ` Peter Stephenson
Reply instructions:
You may reply publicly 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=1424699469-11744-1-git-send-email-mikachu@gmail.com \
--to=mikachu@gmail.com \
--cc=zsh-workers@zsh.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
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this public inbox
https://git.vuxu.org/mirror/zsh/
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).