ygrek / mldonkey

cross-platform multi-network p2p daemon
http://mldonkey.sourceforge.net/
Other
235 stars 43 forks source link

Fix option ED2K-port and similar #64

Open nagius opened 3 years ago

nagius commented 3 years ago

This PR fix the option parsing issue reported in https://github.com/ygrek/mldonkey/issues/34.

It basically split the option name in two with the separator - to keep only the right part. Fall back on previous way in case of error.

lulol commented 3 years ago

List.nth won't keep only the right part but only the nth element of the split string. This works because there are no simple options containing an '-'.

And String.split_on_char is only available since 4.04.0 so will fail compiling with older 3.x versions?

May be you could use instead something like this that will address both issues:

let name = String.sub oi.M.option_name (String.index oi.M.option_name '-' + 1) (String.length oi.M.option_name - 1 - String.index oi.M.option_name '-')

But don't ask me to make it less ugly because I'm clueless about OCaml.

nagius commented 3 years ago

Yes indeed, List.nth will keep de second element of the string, but there is only one - in every option names. The separator used in the option names is _, so that seems to be a reasonable shortcut.

No idea about the OCaml version, I compiled it with the last version available on Ubuntu 20.20 using docker (see https://github.com/ygrek/mldonkey/pull/65). Do we want to keep compatibility with older OCaml ?

TBH, OCaml looks alien to me, I'm surprised I succeeded to compile this patch.