diff options
author | Ivo Hinkelmann <ihi@openoffice.org> | 2006-08-01 10:27:06 +0000 |
---|---|---|
committer | Ivo Hinkelmann <ihi@openoffice.org> | 2006-08-01 10:27:06 +0000 |
commit | a14fbd07e57a6b2e62c325c6a17389541e725d93 (patch) | |
tree | 6019f4d4b6790eac30f9c627f9da600331197925 /shell/source/unix/misc/uri-encode.c | |
parent | 856325dd6d69b3f8a5888d6faf2691cfa1be97cc (diff) |
INTEGRATION: CWS sb60 (1.1.2); FILE ADDED
2006/07/24 15:04:33 sb 1.1.2.1: #b6448495# Replaced uri-encode awk script with C program, as awk (at least on Solaris) appears to pre-process non-ASCII bytes in its input.
Diffstat (limited to 'shell/source/unix/misc/uri-encode.c')
-rw-r--r-- | shell/source/unix/misc/uri-encode.c | 58 |
1 files changed, 58 insertions, 0 deletions
diff --git a/shell/source/unix/misc/uri-encode.c b/shell/source/unix/misc/uri-encode.c new file mode 100644 index 000000000000..719feb5415b3 --- /dev/null +++ b/shell/source/unix/misc/uri-encode.c @@ -0,0 +1,58 @@ +/************************************************************************* + * + * OpenOffice.org - a multi-platform office productivity suite + * + * $RCSfile: uri-encode.c,v $ + * + * $Revision: 1.2 $ + * + * last change: $Author: ihi $ $Date: 2006-08-01 11:27:06 $ + * + * The Contents of this file are made available subject to + * the terms of GNU Lesser General Public License Version 2.1. + * + * + * GNU Lesser General Public License Version 2.1 + * ============================================= + * Copyright 2006 by Sun Microsystems, Inc. + * 901 San Antonio Road, Palo Alto, CA 94303, USA + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License version 2.1, as published by the Free Software Foundation. + * + * 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 + * + ************************************************************************/ + +#include <ctype.h> +#include <errno.h> +#include <stdio.h> +#include <stdlib.h> +#include <string.h> + +int main() { + for (;;) { + int c; + errno = 0; + c = getchar(); + if (c == EOF) { + exit(errno == 0 ? EXIT_SUCCESS : EXIT_FAILURE); + } else if (isalnum(c) || strchr("!$'()*+,-.:=@_~/\n", c) != NULL) { + /* valid RFC 2396 pchar characters + '/' + newline */ + if (putchar(c) == EOF) { + exit(EXIT_FAILURE); + } + } else if (printf("%%%02X", (unsigned char) (char) c) < 0) { + exit(EXIT_FAILURE); + } + } +} |