On 04/03/2017 04:20 PM, Tim Rühsen wrote:
I like this. We can have this without changing much of Wget2's option
processing code. Add --plugin to Wget2 (we will have a list/array of
plugin names than).
Define a option name scheme to identify options for a certain plugin,
e.g. --plugin-foo-<option-name>=value. Make as as simple as possible,
e.g. a value is mandatory (bool is 1|0 or y|n or whatever).

When the current option processing doesn't find an option in it's list,
we special check for --plugin-<plugin-name>-<option-name> and give the
key/value pair <option-name>/<value> to a function that is provided by
the plugin (e.g. wget_plugin_set_option(const char *option_name, const
char *value).

With this you can provide CLI options to plugins without changing much
in Wget2's code.

Regards, Tim

This could be done with the following:
  -  Add condition to set_long_option() in option.c checking if
     _option_ begins with --plugin- (4-5 lines), if yes strip
     the leading "plugin-" and call another function, say
     set_plugin_option(option, value)
  -  set_plugin_option() will look up maximum length matching
     "<plugin-name>-" using a variant of binary search.
  -  If the plugin discovered has opted in to receive options,
     strip "<plugin-name>-" _option_ and pass  the remaining
     option and value to plugin-registered function.
To implement this all we need to maintain is a sorted list
of plugins. No extra memory allocations will be needed for
option processing.

I could still change proposal before 16:00 GMT. So what do you people
think?

(Also a friendly reminder to everyone that final proposals can be
reuploaded till 16:00 GMT, so don't wait till last moment. )

Regards,
Akash Rawal

Reply via email to