Skip to content
  • Christian Couder's avatar
    git-compat-util: introduce skip_to_optional_arg() · afaef55e
    Christian Couder authored and Junio C Hamano's avatar Junio C Hamano committed
    
    
    We often accept both a "--key" option and a "--key=<val>" option.
    
    These options currently are parsed using something like:
    
    if (!strcmp(arg, "--key")) {
    	/* do something */
    } else if (skip_prefix(arg, "--key=", &arg)) {
    	/* do something with arg */
    }
    
    which is a bit cumbersome compared to just:
    
    if (skip_to_optional_arg(arg, "--key", &arg)) {
    	/* do something with arg */
    }
    
    This also introduces skip_to_optional_arg_default() for the few
    cases where something different should be done when the first
    argument is exactly "--key" than when it is exactly "--key=".
    
    In general it is better for UI consistency and simplicity if
    "--key" and "--key=" do the same thing though, so that using
    skip_to_optional_arg() should be encouraged compared to
    skip_to_optional_arg_default().
    
    Note that these functions can be used to parse any "key=value"
    string where "key" is also considered as valid, not just
    command line options.
    
    Signed-off-by: default avatarChristian Couder <chriscool@tuxfamily.org>
    Signed-off-by: default avatarJunio C Hamano <gitster@pobox.com>
    afaef55e