From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 20978 invoked by alias); 17 Nov 2010 10:19:32 -0000 Received: (qmail 20961 invoked by uid 9447); 17 Nov 2010 10:19:31 -0000 Date: Wed, 17 Nov 2010 10:19:00 -0000 Message-ID: <20101117101931.20959.qmail@sourceware.org> From: agk@sourceware.org To: lvm-devel@redhat.com, lvm2-cvs@sourceware.org Subject: LVM2 ./WHATS_NEW lib/misc/lvm-string.c lib/mis ... Mailing-List: contact lvm2-cvs-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Post: List-Help: , Sender: lvm2-cvs-owner@sourceware.org X-SW-Source: 2010-11/txt/msg00024.txt.bz2 CVSROOT: /cvs/lvm2 Module name: LVM2 Changes by: agk@sourceware.org 2010-11-17 10:19:30 Modified files: . : WHATS_NEW lib/misc : lvm-string.c lvm-string.h man : lvm.8.in tools : lvmcmdline.c toollib.c Log message: Remove tag length restriction and allow / = ! : # & characters. Patches: http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/WHATS_NEW.diff?cvsroot=lvm2&r1=1.1797&r2=1.1798 http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/lib/misc/lvm-string.c.diff?cvsroot=lvm2&r1=1.23&r2=1.24 http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/lib/misc/lvm-string.h.diff?cvsroot=lvm2&r1=1.21&r2=1.22 http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/man/lvm.8.in.diff?cvsroot=lvm2&r1=1.5&r2=1.6 http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/tools/lvmcmdline.c.diff?cvsroot=lvm2&r1=1.130&r2=1.131 http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/tools/toollib.c.diff?cvsroot=lvm2&r1=1.211&r2=1.212 --- LVM2/WHATS_NEW 2010/11/12 16:04:52 1.1797 +++ LVM2/WHATS_NEW 2010/11/17 10:19:29 1.1798 @@ -1,5 +1,6 @@ Version 2.02.77 - =================================== + Remove tag length restriction and allow / = ! : # & characters. Support repetition of --addtag and --deltag arguments. Add infrastructure for specific cmdline arguments to be repeated in groups. Split the_args cmdline arguments and values into arg_props and arg_values. --- LVM2/lib/misc/lvm-string.c 2010/09/28 01:29:07 1.23 +++ LVM2/lib/misc/lvm-string.c 2010/11/17 10:19:30 1.24 @@ -286,6 +286,25 @@ } /* + * A-Za-z0-9._-+/=!:&# + */ +int validate_tag(const char *n) +{ + register char c; + register int len = 0; + + if (!n || !*n) + return 0; + + while ((len++, c = *n++)) + if (!isalnum(c) && c != '.' && c != '_' && c != '-' && c != '+' && c != '/' + && c != '=' && c != '!' && c != ':' && c != '&' && c != '#') + return 0; + + return 1; +} + +/* * Device layer names are all of the form --, any * other hyphens that appear in these names are quoted with yet * another hyphen. The top layer of any device has no layer --- LVM2/lib/misc/lvm-string.h 2010/09/23 12:02:34 1.21 +++ LVM2/lib/misc/lvm-string.h 2010/11/17 10:19:30 1.22 @@ -33,6 +33,7 @@ const char *layer); int validate_name(const char *n); +int validate_tag(const char *n); int apply_lvname_restrictions(const char *name); int is_reserved_lvname(const char *name); --- LVM2/man/lvm.8.in 2010/05/20 13:47:22 1.5 +++ LVM2/man/lvm.8.in 2010/11/17 10:19:30 1.6 @@ -205,6 +205,7 @@ .TP \fB--addtag tag\fP Add the tag \fBtag\fP to a PV, VG or LV. +Supply this argument multiple times to add more than one tag at once. A tag is a word that can be used to group LVM2 objects of the same type together. Tags can be given on the command line in place of PV, VG or LV @@ -221,10 +222,13 @@ LVM1 metadata format cannot be tagged because the on-disk format does not support it. Snapshots cannot be tagged. -Characters allowed in tags are: A-Z a-z 0-9 _ + . - +Characters allowed in tags are: A-Z a-z 0-9 _ + . - and +as of version 2.02.78 the following characters are also +accepted: / = ! : # & .TP \fB--deltag tag\fP Delete the tag \fBtag\fP from a PV, VG or LV, if it's present. +Supply this argument multiple times to remove more than one tag at once. .TP \fB--alloc AllocationPolicy\fP The allocation policy to use: \fBcontiguous\fP, \fBcling\fP, \fBnormal\fP, \fBanywhere\fP or \fBinherit\fP. --- LVM2/tools/lvmcmdline.c 2010/11/11 17:29:06 1.130 +++ LVM2/tools/lvmcmdline.c 2010/11/17 10:19:30 1.131 @@ -418,7 +418,7 @@ if (*pos == '@') pos++; - if (!validate_name(pos)) + if (!validate_tag(pos)) return 0; av->value = pos; --- LVM2/tools/toollib.c 2010/11/09 12:34:43 1.211 +++ LVM2/tools/toollib.c 2010/11/17 10:19:30 1.212 @@ -222,7 +222,7 @@ vgname = lv_name; if (*vgname == '@') { - if (!validate_name(vgname + 1)) { + if (!validate_tag(vgname + 1)) { log_error("Skipping invalid tag %s", vgname); continue; @@ -528,7 +528,7 @@ for (; opt < argc; opt++) { vg_name = argv[opt]; if (*vg_name == '@') { - if (!validate_name(vg_name + 1)) { + if (!validate_tag(vg_name + 1)) { log_error("Skipping invalid tag %s", vg_name); if (ret_max < EINVALID_CMD_LINE) @@ -698,7 +698,7 @@ if (at_sign && (at_sign == argv[opt])) { tagname = at_sign + 1; - if (!validate_name(tagname)) { + if (!validate_tag(tagname)) { log_error("Skipping invalid tag %s", tagname); if (ret_max < EINVALID_CMD_LINE) @@ -1113,7 +1113,7 @@ if (at_sign && (at_sign == argv[i])) { tagname = at_sign + 1; - if (!validate_name(tagname)) { + if (!validate_tag(tagname)) { log_error("Skipping invalid tag %s", tagname); continue; }