From 7ca25e58e99abb3d640b6012d7cbfc9bc9087849 Mon Sep 17 00:00:00 2001 From: Pierre Ossman Date: Wed, 17 May 2006 17:30:49 +0000 Subject: Move utf8 to the public part (libpolyp). git-svn-id: file:///home/lennart/svn/public/pulseaudio/trunk@909 fefdeb5f-60dc-0310-8127-8f9354f1896f --- src/polypcore/protocol-esound.c | 2 +- src/polypcore/protocol-native.c | 2 +- src/polypcore/sink-input.c | 2 +- src/polypcore/sink.c | 2 +- src/polypcore/source-output.c | 2 +- src/polypcore/source.c | 2 +- src/polypcore/utf8.c | 165 ---------------------------------------- src/polypcore/utf8.h | 28 ------- 8 files changed, 6 insertions(+), 199 deletions(-) delete mode 100644 src/polypcore/utf8.c delete mode 100644 src/polypcore/utf8.h (limited to 'src/polypcore') diff --git a/src/polypcore/protocol-esound.c b/src/polypcore/protocol-esound.c index 86a8c9e3..8f53694e 100644 --- a/src/polypcore/protocol-esound.c +++ b/src/polypcore/protocol-esound.c @@ -31,6 +31,7 @@ #include #include +#include #include #include @@ -46,7 +47,6 @@ #include #include #include -#include #include "endianmacros.h" diff --git a/src/polypcore/protocol-native.c b/src/polypcore/protocol-native.c index b0ad5955..338db002 100644 --- a/src/polypcore/protocol-native.c +++ b/src/polypcore/protocol-native.c @@ -30,6 +30,7 @@ #include #include +#include #include #include @@ -53,7 +54,6 @@ #include #include #include -#include #include "protocol-native.h" diff --git a/src/polypcore/sink-input.c b/src/polypcore/sink-input.c index 5c0caa21..bd2a1dcd 100644 --- a/src/polypcore/sink-input.c +++ b/src/polypcore/sink-input.c @@ -28,12 +28,12 @@ #include #include +#include #include #include #include #include -#include #include "sink-input.h" diff --git a/src/polypcore/sink.c b/src/polypcore/sink.c index a873c00a..6931d396 100644 --- a/src/polypcore/sink.c +++ b/src/polypcore/sink.c @@ -29,6 +29,7 @@ #include #include +#include #include #include @@ -37,7 +38,6 @@ #include #include #include -#include #include "sink.h" diff --git a/src/polypcore/source-output.c b/src/polypcore/source-output.c index c8db870b..8ac3a33d 100644 --- a/src/polypcore/source-output.c +++ b/src/polypcore/source-output.c @@ -28,11 +28,11 @@ #include #include +#include #include #include #include -#include #include "source-output.h" diff --git a/src/polypcore/source.c b/src/polypcore/source.c index 4d96622b..c53bf079 100644 --- a/src/polypcore/source.c +++ b/src/polypcore/source.c @@ -28,6 +28,7 @@ #include #include +#include #include #include @@ -35,7 +36,6 @@ #include #include #include -#include #include "source.h" diff --git a/src/polypcore/utf8.c b/src/polypcore/utf8.c deleted file mode 100644 index 01fbfccd..00000000 --- a/src/polypcore/utf8.c +++ /dev/null @@ -1,165 +0,0 @@ -/* $Id */ - -/* This file is based on the GLIB utf8 validation functions. The - * original license text follows. */ - -/* gutf8.c - Operations on UTF-8 strings. - * - * Copyright (C) 1999 Tom Tromey - * Copyright (C) 2000 Red Hat, Inc. - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. - */ - -#ifdef HAVE_CONFIG_H -#include -#endif - -#include -#include -#include -#include - -#include - -#include "utf8.h" - -#define FILTER_CHAR '_' - -static inline int is_unicode_valid(uint32_t ch) { - if (ch >= 0x110000) /* End of unicode space */ - return 0; - if ((ch & 0xFFFFF800) == 0xD800) /* Reserved area for UTF-16 */ - return 0; - if ((ch >= 0xFDD0) && (ch <= 0xFDEF)) /* Reserved */ - return 0; - if ((ch & 0xFFFE) == 0xFFFE) /* BOM (Byte Order Mark) */ - return 0; - return 1; -} - -static inline int is_continuation_char(uint8_t ch) { - if ((ch & 0xc0) != 0x80) /* 10xxxxxx */ - return 0; - return 1; -} - -static inline void merge_continuation_char(uint32_t *u_ch, uint8_t ch) { - *u_ch <<= 6; - *u_ch |= ch & 0x3f; -} - -static char* utf8_validate(const char *str, char *output) { - uint32_t val = 0; - uint32_t min = 0; - const uint8_t *p, *last; - int size; - uint8_t *o; - - o = (uint8_t*) output; - for (p = (const uint8_t*) str; *p; p++) { - if (*p < 128) { - if (o) - *o = *p; - } else { - last = p; - - if ((*p & 0xe0) == 0xc0) { /* 110xxxxx two-char seq. */ - size = 2; - min = 128; - val = *p & 0x1e; - goto ONE_REMAINING; - } else if ((*p & 0xf0) == 0xe0) { /* 1110xxxx three-char seq.*/ - size = 3; - min = (1 << 11); - val = *p & 0x0f; - goto TWO_REMAINING; - } else if ((*p & 0xf8) == 0xf0) { /* 11110xxx four-char seq */ - size = 4; - min = (1 << 16); - val = *p & 0x07; - } else { - size = 1; - goto error; - } - - p++; - if (!is_continuation_char(*p)) - goto error; - merge_continuation_char(&val, *p); - -TWO_REMAINING: - p++; - if (!is_continuation_char(*p)) - goto error; - merge_continuation_char(&val, *p); - -ONE_REMAINING: - p++; - if (!is_continuation_char(*p)) - goto error; - merge_continuation_char(&val, *p); - - if (val < min) - goto error; - - if (!is_unicode_valid(val)) - goto error; - - if (o) { - memcpy(o, last, size); - o += size - 1; - } - - if (o) - o++; - - continue; - -error: - if (o) { - *o = FILTER_CHAR; - p = last; /* We retry at the next character */ - } else - goto failure; - } - - if (o) - o++; - } - - if (o) { - *o = '\0'; - return output; - } - - return (char*) str; - -failure: - return NULL; -} - -const char* pa_utf8_valid (const char *str) { - return utf8_validate(str, NULL); -} - -char* pa_utf8_filter (const char *str) { - char *new_str; - - new_str = pa_xnew(char, strlen(str) + 1); - - return utf8_validate(str, new_str); -} diff --git a/src/polypcore/utf8.h b/src/polypcore/utf8.h deleted file mode 100644 index 6d1e4a7d..00000000 --- a/src/polypcore/utf8.h +++ /dev/null @@ -1,28 +0,0 @@ -#ifndef fooutf8hfoo -#define fooutf8hfoo - -/* $Id$ */ - -/*** - This file is part of polypaudio. - - polypaudio is free software; you can redistribute it and/or modify - it under the terms of the GNU Lesser General Public License as - published by the Free Software Foundation; either version 2.1 of the - License, or (at your option) any later version. - - polypaudio is distributed in the hope that it will be useful, but - WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with polypaudio; if not, write to the Free Software - Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - USA. -***/ - -const char *pa_utf8_valid(const char *str); -char *pa_utf8_filter(const char *str); - -#endif -- cgit