On Fri, Nov 14, 2008 at 22:34, Sergey Vlasov <vsu@xxxxxxxxxxx> wrote: > The klibc implementation of getopt_long() behaves slightly different > from the glibc one - in particular, it treats the change of the option > string argument between invocations as start of parsing a different > command line, and resets its state. However, the udevadm code > expected getopt_long() invocations in subcommands to continue parsing > the rest of command line after initial options has been parsed at the > top level; with klibc this broke, causing all udevadm subcommands to > stop recognizing their options. > > Instead of relying on the glibc behavior, reset the getopt_long() > state properly before invoking the subcommand handler: move argv to > point to the subcommand name, decrease argc appropriately, and set > optind = 0. This also fixes a minor bug visible with glibc - without > setting optind = 0 all getopt_long() calls in subcommand handlers were > behaving as if "+" was specified as the first character of the option > string (which disables option reordering), because that state was set > by the first getopt_long() call at the top level, and was not reset > when parsing subcommand options. > > Signed-off-by: Sergey Vlasov <vsu@xxxxxxxxxxx> > --- > udev/udevadm.c | 4 +++- > 1 files changed, 3 insertions(+), 1 deletions(-) Applied. Thanks, Kay -- To unsubscribe from this list: send the line "unsubscribe linux-hotplug" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html