[dovecot-cvs] dovecot/src/lib strescape.c,1.4,1.5 strescape.h,1.4,1.5
cras at procontrol.fi
cras at procontrol.fi
Wed Apr 2 06:05:40 EEST 2003
Update of /home/cvs/dovecot/src/lib
In directory danu:/tmp/cvs-serv7538/lib
Modified Files:
strescape.c strescape.h
Log Message:
Mailbox names are now sent through imap-quoter instead of just escaping it.
This means that mailbox names that would require escapes are instead sent
as literals now.
Index: strescape.c
===================================================================
RCS file: /home/cvs/dovecot/src/lib/strescape.c,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -d -r1.4 -r1.5
--- strescape.c 20 Feb 2003 16:30:51 -0000 1.4
+++ strescape.c 2 Apr 2003 02:05:38 -0000 1.5
@@ -27,28 +27,28 @@
const char *str_escape(const char *str)
{
- char *ret, *p;
- size_t i, esc;
+ const char *p;
+ string_t *ret;
- /* get length of string and number of chars to escape */
- esc = 0;
- for (i = 0; str[i] != '\0'; i++) {
- if (IS_ESCAPED_CHAR(str[i]))
- esc++;
+ /* see if we need to quote it */
+ for (p = str; *p != '\0'; p++) {
+ if (IS_ESCAPED_CHAR(*p))
+ break;
}
- if (esc == 0)
+ if (*p == '\0')
return str;
- /* @UNSAFE: escape them */
- p = ret = t_malloc(i + esc + 1);
- for (; *str != '\0'; str++) {
- if (IS_ESCAPED_CHAR(*str))
- *p++ = '\\';
- *p++ = *str;
+ /* quote */
+ ret = t_str_new((size_t) (p - str) + 128);
+ str_append_n(ret, str, (size_t) (p - str));
+
+ for (; *p != '\0'; p++) {
+ if (IS_ESCAPED_CHAR(*p))
+ str_append_c(ret, '\\');
+ str_append_c(ret, *p);
}
- *p = '\0';
- return ret;
+ return str_c(ret);
}
void str_append_unescaped(string_t *dest, const void *src, size_t src_size)
Index: strescape.h
===================================================================
RCS file: /home/cvs/dovecot/src/lib/strescape.h,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -d -r1.4 -r1.5
--- strescape.h 20 Feb 2003 16:30:51 -0000 1.4
+++ strescape.h 2 Apr 2003 02:05:38 -0000 1.5
@@ -1,9 +1,9 @@
#ifndef __STRESCAPE_H
#define __STRESCAPE_H
-#define IS_ESCAPED_CHAR(c) ((c) == '"' || (c) == '\\')
+#define IS_ESCAPED_CHAR(c) ((c) == '"' || (c) == '\\' || (c) == '\'')
-/* escape all '\' and '"' characters */
+/* escape all '\', '"' and "'" characters */
const char *str_escape(const char *str);
/* remove all '\' characters, append to given string */
More information about the dovecot-cvs
mailing list