[Libguestfs] [nbdkit PATCH v2] server: Permit - in plugin names
Richard W.M. Jones
rjones at redhat.com
Mon Aug 10 18:26:10 UTC 2020
On Mon, Aug 10, 2020 at 11:25:31AM -0500, Eric Blake wrote:
> Use of - does not need shell quoting, and aids legibility in
> multi-word plugin or filter names. Permitting both - and _ would be
> ambiguous (not to mention that things like 'man nbdkit-foo_bar-plugin'
> would look ugly), so prefer only the character that is easier for
> human use. Permitting a leading - would be ambiguous with options,
> but restricting to a letter as the first character would rule out any
> existing plugins such as a theoretical '9p' plugin for interaction
> with the 9p filesystem.
>
> Signed-off-by: Eric Blake <eblake at redhat.com>
> ---
>
> After a bit more IRC chat, I think this is more what we want.
>
> docs/nbdkit-filter.pod | 3 ++-
> docs/nbdkit-plugin.pod | 3 ++-
> server/backend.c | 15 +++++++++++----
> 3 files changed, 15 insertions(+), 6 deletions(-)
>
> diff --git a/docs/nbdkit-filter.pod b/docs/nbdkit-filter.pod
> index 12343dbf..93601088 100644
> --- a/docs/nbdkit-filter.pod
> +++ b/docs/nbdkit-filter.pod
> @@ -201,7 +201,8 @@ methods.
> const char *name;
>
> This field (a string) is required, and B<must> contain only ASCII
> -alphanumeric characters and be unique amongst all filters.
> +alphanumeric characters or non-leading dashes, and be unique amongst
> +all filters.
>
> =head2 C<.longname>
>
> diff --git a/docs/nbdkit-plugin.pod b/docs/nbdkit-plugin.pod
> index 9341f282..a661680c 100644
> --- a/docs/nbdkit-plugin.pod
> +++ b/docs/nbdkit-plugin.pod
> @@ -471,7 +471,8 @@ an indication of failure. It has the following prototype:
> const char *name;
>
> This field (a string) is required, and B<must> contain only ASCII
> -alphanumeric characters and be unique amongst all plugins.
> +alphanumeric characters or non-leading dashes, and be unique amongst
> +all filters.
>
> =head2 C<.version>
>
> diff --git a/server/backend.c b/server/backend.c
> index 75ca53be..b001a9a9 100644
> --- a/server/backend.c
> +++ b/server/backend.c
> @@ -98,13 +98,20 @@ backend_load (struct backend *b, const char *name, void (*load) (void))
> program_name, b->filename, b->type);
> exit (EXIT_FAILURE);
> }
> - for (i = 0; i < len; ++i) {
> + if (! ascii_isalnum (*name)) {
> + fprintf (stderr,
> + "%s: %s: %s.name ('%s') field must begin with an "
> + "ASCII alphanumeric\n",
> + program_name, b->filename, b->type, name);
> + exit (EXIT_FAILURE);
> + }
> + for (i = 1; i < len; ++i) {
> unsigned char c = name[i];
>
> - if (! ascii_isalnum (c)) {
> + if (! ascii_isalnum (c) && c != '-') {
> fprintf (stderr,
> - "%s: %s: %s.name ('%s') field "
> - "must contain only ASCII alphanumeric characters\n",
> + "%s: %s: %s.name ('%s') field must contain only "
> + "ASCII alphanumeric or dash characters\n",
> program_name, b->filename, b->type, name);
> exit (EXIT_FAILURE);
> }
ACK
Rich.
--
Richard Jones, Virtualization Group, Red Hat http://people.redhat.com/~rjones
Read my programming and virtualization blog: http://rwmj.wordpress.com
virt-builder quickly builds VMs from scratch
http://libguestfs.org/virt-builder.1.html
More information about the Libguestfs
mailing list