X-Git-Url: https://git.gag.com/?a=blobdiff_plain;f=src%2Ftransform.c;h=155d369810d967e61090654e1cefdb97cc722ee0;hb=HEAD;hp=77aa0a299eb722a0deee32556d848ace239d7a5a;hpb=bc973a082dddfe8c66baf7352df0433f83479ce1;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; }