[systemd-devel] [PATCH v3] tools: add static-nodes tool
Lucas De Marchi
lucas.demarchi at profusion.mobi
Tue Apr 16 11:51:14 PDT 2013
On Tue, Apr 16, 2013 at 10:49 AM, Thomas Bächler <thomas at archlinux.org> wrote:
> 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.
>
Agree. Otherwise looks good.
Kay, what's your opinion regarding this command? Is this sufficient to
drop CAP_MKNOD from udev?
Lucas De Marchi
More information about the systemd-devel
mailing list