diff options
author | marius <marius@FreeBSD.org> | 2004-04-30 20:33:08 +0000 |
---|---|---|
committer | marius <marius@FreeBSD.org> | 2004-04-30 20:33:08 +0000 |
commit | 9fc948cd79a9d70e00c23f1b95ec9da3dc4f7852 (patch) | |
tree | 03e30298ca0e732e53f45971a881ba527ebfad7b /contrib/patch/quotearg.c | |
parent | 54564c74e31dd64140489ef3c4c566d7b7385011 (diff) | |
download | FreeBSD-src-9fc948cd79a9d70e00c23f1b95ec9da3dc4f7852.zip FreeBSD-src-9fc948cd79a9d70e00c23f1b95ec9da3dc4f7852.tar.gz |
This commit was generated by cvs2svn to compensate for changes in r128777,
which included commits to RCS files with non-trunk default branches.
Diffstat (limited to 'contrib/patch/quotearg.c')
-rw-r--r-- | contrib/patch/quotearg.c | 125 |
1 files changed, 0 insertions, 125 deletions
diff --git a/contrib/patch/quotearg.c b/contrib/patch/quotearg.c deleted file mode 100644 index e4926e4..0000000 --- a/contrib/patch/quotearg.c +++ /dev/null @@ -1,125 +0,0 @@ -/* Shell command argument quoting. - Copyright (C) 1994, 1995, 1997 Free Software Foundation, Inc. - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2, or (at your option) - any later version. - - This program 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 General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; see the file COPYING. - If not, write to the Free Software Foundation, - 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ - -/* Written by Paul Eggert <eggert@twinsun.com> */ - -#if HAVE_CONFIG_H -# include <config.h> -#endif - -#include <sys/types.h> -#include <quotearg.h> - -/* Place into QUOTED a quoted version of ARG suitable for `system'. - Return the length of the resulting string (which is not null-terminated). - If QUOTED is null, return the length without any side effects. */ - -size_t -quote_system_arg (quoted, arg) - char *quoted; - char const *arg; -{ - char const *a; - size_t len = 0; - - /* Scan ARG, copying it to QUOTED if QUOTED is not null, - looking for shell metacharacters. */ - - for (a = arg; ; a++) - { - char c = *a; - switch (c) - { - case 0: - /* ARG has no shell metacharacters. */ - return len; - - case '=': - if (*arg == '-') - break; - /* Fall through. */ - case '\t': case '\n': case ' ': - case '!': case '"': case '#': case '$': case '%': case '&': case '\'': - case '(': case ')': case '*': case ';': - case '<': case '>': case '?': case '[': case '\\': - case '^': case '`': case '|': case '~': - { - /* ARG has a shell metacharacter. - Start over, quoting it this time. */ - - len = 0; - c = *arg++; - - /* If ARG is an option, quote just its argument. - This is not necessary, but it looks nicer. */ - if (c == '-' && arg < a) - { - c = *arg++; - - if (quoted) - { - quoted[len] = '-'; - quoted[len + 1] = c; - } - len += 2; - - if (c == '-') - while (arg < a) - { - c = *arg++; - if (quoted) - quoted[len] = c; - len++; - if (c == '=') - break; - } - c = *arg++; - } - - if (quoted) - quoted[len] = '\''; - len++; - - for (; c; c = *arg++) - { - if (c == '\'') - { - if (quoted) - { - quoted[len] = '\''; - quoted[len + 1] = '\\'; - quoted[len + 2] = '\''; - } - len += 3; - } - if (quoted) - quoted[len] = c; - len++; - } - - if (quoted) - quoted[len] = '\''; - return len + 1; - } - } - - if (quoted) - quoted[len] = c; - len++; - } -} |