X-Git-Url: https://git.gag.com/?a=blobdiff_plain;f=src%2Ftransform.c;h=155d369810d967e61090654e1cefdb97cc722ee0;hb=d30babc23b4f25be970ada2e63a50220a3672281;hp=77aa0a299eb722a0deee32556d848ace239d7a5a;hpb=1a44d77d50f4fb37c0410eed04b82303624ea2ec;p=debian%2Ftar
diff --git a/src/transform.c b/src/transform.c
index 77aa0a29..155d3698 100644
--- a/src/transform.c
+++ b/src/transform.c
@@ -1,5 +1,5 @@
/* This file is part of GNU tar.
- Copyright (C) 2006, 2007, 2008 Free Software Foundation, Inc.
+ Copyright 2006-2008, 2013-2014, 2016 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
@@ -12,8 +12,7 @@
Public License for more details.
You should have received a copy of the GNU General Public License along
- with this program; if not, write to the Free Software Foundation, Inc.,
- 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+ with this program. If not, see . */
#include
#include
@@ -71,7 +70,7 @@ struct transform
-int transform_flags = XFORM_ALL;
+static int transform_flags = XFORM_ALL;
static struct transform *transform_head, *transform_tail;
static struct transform *
@@ -347,7 +346,7 @@ parse_transform_expr (const char *expr)
break;
case 'L':
- /* Turn the replacement to lowercase until a `\U' or `\E'
+ /* Turn the replacement to lowercase until a '\U' or '\E'
is found, */
add_case_ctl_segment (tf, ctl_locase);
cur++;
@@ -360,7 +359,7 @@ parse_transform_expr (const char *expr)
break;
case 'U':
- /* Turn the replacement to uppercase until a `\L' or `\E'
+ /* Turn the replacement to uppercase until a '\L' or '\E'
is found, */
add_case_ctl_segment (tf, ctl_upcase);
cur++;
@@ -373,19 +372,21 @@ parse_transform_expr (const char *expr)
break;
case 'E':
- /* Stop case conversion started by `\L' or `\U'. */
+ /* Stop case conversion started by '\L' or '\U'. */
add_case_ctl_segment (tf, ctl_stop);
cur++;
break;
default:
- /* Try to be nice */
- {
- char buf[2];
- buf[0] = '\\';
- buf[1] = *cur;
- add_literal_segment (tf, buf, buf + 2);
- }
+ if (*cur == delim)
+ add_char_segment (tf, delim);
+ else
+ {
+ char buf[2];
+ buf[0] = '\\';
+ buf[1] = *cur;
+ add_literal_segment (tf, buf, buf + 2);
+ }
cur++;
break;
}