[systemd-devel] [PATCH v3] tools: add static-nodes tool

Thomas Bächler thomas at archlinux.org
Tue Apr 16 06:49:16 PDT 2013


Am 16.04.2013 15:12, schrieb Tom Gundersen:
> +static void write_human(FILE *out, char module[], char devname[], char type, unsigned int maj, unsigned int min)

[...]

> +static void write_tmpfile(FILE *out, char devname[], char type, unsigned int maj, unsigned int min)

[...]

> +static int do_static_nodes(int argc, char *argv[])
> +{
> +        struct utsname kernel;
> +        char modules[PATH_MAX];
> +        FILE *in = NULL, *out = stdout;
> +        bool human_readable = 1;

This code emphasizes that there is actually only one format available
and needs to be changed again when another one is added. Why not

void (*write_output)((FILE *, char[], char[], char, unsigned int,
unsigned int) = write_human;

? Then ...

> +                case 'f':
> +                        if (!streq(optarg, "tmpfiles")) {
> +                                fprintf(stderr, "Unknown format: '%s'.\n", argv[1]);
> +                                help();
> +                                ret = EXIT_FAILURE;
> +                                goto finish;
> +                        }
> +                        human_readable = 0;
> +                        break;

case 'f':
    if (streq(optarg, "tmpfiles")) {
         write_output = write_tmpfiles;
    }
    else {
        fprintf(stderr, "Unknown format: '%s'.\n", argv[1]);
        [...]
    }
    break;

And in the end:

> +                if (human_readable)
> +                        write_human(out, module, devname, type, maj, min);
> +                else
> +                        write_tmpfile(out, devname, type, maj, min);

write_output(out, module, devname, type, maj, min);

Maybe even add an array with output name and function pointer pairs, so
that we could get a list of available formats using --format=?. For
consistency, --format=human should also work. Just seems nicer to me, in
case someone actually plans to extend this later.


-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 901 bytes
Desc: OpenPGP digital signature
URL: <http://lists.freedesktop.org/archives/systemd-devel/attachments/20130416/b1a188c9/attachment.pgp>


More information about the systemd-devel mailing list