aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--ChangeLog8
-rw-r--r--linein.c43
2 files changed, 35 insertions, 16 deletions
diff --git a/ChangeLog b/ChangeLog
index 6e99e96..2f71407 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2001-12-07 Hironori Sakamoto <hsaka@mth.biglobe.ne.jp>
+
+ * [w3m-dev 02640]
+ * linein.c (escape_spaces): rewrite
+ * linein.c (unescape_spaces): rewrite
+
2001-12-07 Tsutomu Okada <okada@furuno.co.jp>
* [w3m-dev 02638] completion for ! and/or @
@@ -1080,4 +1086,4 @@
* release-0-2-1
* import w3m-0.2.1
-$Id: ChangeLog,v 1.112 2001/12/07 07:20:26 ukai Exp $
+$Id: ChangeLog,v 1.113 2001/12/07 07:24:22 ukai Exp $
diff --git a/linein.c b/linein.c
index 3d33505..219b93c 100644
--- a/linein.c
+++ b/linein.c
@@ -1,4 +1,4 @@
-/* $Id: linein.c,v 1.13 2001/12/07 07:20:26 ukai Exp $ */
+/* $Id: linein.c,v 1.14 2001/12/07 07:24:22 ukai Exp $ */
#include "fm.h"
#include "local.h"
#include "myctype.h"
@@ -855,37 +855,50 @@ next_dcompl(int next)
}
}
+
Str
escape_spaces(Str s)
{
+ Str tmp = NULL;
char *p;
if (s == NULL)
- return;
- p = s->ptr;
- s = Strnew();
- while(*p) {
- if (*p == ' ')
- Strcat_char(s, '\\');
- Strcat_char(s, *p++);
+ return s;
+ for (p = s->ptr; *p; p++) {
+ if (*p == ' ' || *p == CTRL_I) {
+ if (tmp == NULL)
+ tmp = Strnew_charp_n(s->ptr, (int)(p - s->ptr));
+ Strcat_char(tmp, '\\');
+ }
+ if (tmp)
+ Strcat_char(tmp, *p);
}
+ if (tmp)
+ return tmp;
return s;
}
+
Str
unescape_spaces(Str s)
{
+ Str tmp = NULL;
char *p;
if (s == NULL)
- return;
- p = s->ptr;
- s = Strnew();
- while (*p) {
- if (!(*p == '\\' && *(p+1) && *(p+1) == ' '))
- Strcat_char(s, *p);
- p++;
+ return s;
+ for (p = s->ptr; *p; p++) {
+ if (*p == '\\' && (*(p+1) == ' ' || *(p+1) == CTRL_I)) {
+ if (tmp == NULL)
+ tmp = Strnew_charp_n(s->ptr, (int)(p - s->ptr));
+ }
+ else {
+ if (tmp)
+ Strcat_char(tmp, *p);
+ }
}
+ if (tmp)
+ return tmp;
return s;
}