Mercurial > dovecot > original-hg > dovecot-1.2
view src/lib/str-sanitize.c @ 9191:b340ecb24469 HEAD
Fix VPATH build of RQUOTA support.
Some rpcgen derive #include "..." paths from the infile argument.
This will be off for VPATH builds, as the generated rquota_xdr.c
code will look in $(srcdir), but we'll generate the rquota.h file in
$(builddir). Play safe and copy rquota.x to $(builddir) first.
This fixes the build on openSUSE 11.1.
author | Matthias Andree <matthias.andree@gmx.de> |
---|---|
date | Tue, 07 Jul 2009 21:01:36 +0200 |
parents | b9faf4db2a9f |
children | 23abbf14279c |
line wrap: on
line source
/* Copyright (c) 2004-2009 Dovecot authors, see the included COPYING file */ #include "lib.h" #include "str.h" #include "str-sanitize.h" static size_t str_sanitize_skip_start(const char *src, size_t max_len) { size_t i; for (i = 0; i < max_len; i++) { if (((unsigned char)src[i] & 0x7f) < 32) break; } return i; } void str_sanitize_append(string_t *dest, const char *src, size_t max_len) { size_t i; i = str_sanitize_skip_start(src, max_len); str_append_n(dest, src, i); for (; i < max_len && src[i] != '\0'; i++) { if (((unsigned char)src[i] & 0x7f) < 32) str_append_c(dest, '?'); else str_append_c(dest, src[i]); } if (src[i] != '\0') { str_truncate(dest, str_len(dest) <= 3 ? 0 : str_len(dest)-3); str_append(dest, "..."); } } const char *str_sanitize(const char *src, size_t max_len) { string_t *str; size_t i; if (src == NULL) return NULL; i = str_sanitize_skip_start(src, max_len); if (src[i] == '\0') return src; str = t_str_new(I_MIN(max_len, 256)); str_append_n(str, src, i); str_sanitize_append(str, src + i, max_len - i); return str_c(str); }