]> git.ipfire.org Git - thirdparty/strongswan.git/commitdiff
Support field with specifiers in %N printf hook
authorMartin Willi <martin@revosec.ch>
Mon, 8 Oct 2012 10:35:44 +0000 (12:35 +0200)
committerMartin Willi <martin@revosec.ch>
Wed, 24 Oct 2012 09:34:30 +0000 (11:34 +0200)
src/libstrongswan/enum.c

index 2dc7c5dde1436f070d08b7dad81fb93a855b5744..9b3c4d56623ffcbb9385abd18e5b90cf61473593 100644 (file)
@@ -65,15 +65,17 @@ int enum_printf_hook(printf_hook_data_t *data, printf_hook_spec_t *spec,
 {
        enum_name_t *ed = *((enum_name_t**)(args[0]));
        int val = *((int*)(args[1]));
+       char *name, buf[32];
 
-       char *name = enum_to_name(ed, val);
-
+       name = enum_to_name(ed, val);
        if (name == NULL)
        {
-               return print_in_hook(data, "(%d)", val);
+               snprintf(buf, sizeof(buf), "(%d)", val);
+               name = buf;
        }
-       else
+       if (spec->minus)
        {
-               return print_in_hook(data, "%s", name);
+               return print_in_hook(data, "%-*s", spec->width, name);
        }
+       return print_in_hook(data, "%*s", spec->width, name);
 }