tools lib subcmd: Introduce OPTION_ULONG
[linux-2.6-microblaze.git] / tools / lib / subcmd / parse-options.c
index cb7154e..dbb9efb 100644 (file)
@@ -116,6 +116,7 @@ static int get_value(struct parse_opt_ctx_t *p,
                case OPTION_INTEGER:
                case OPTION_UINTEGER:
                case OPTION_LONG:
+               case OPTION_ULONG:
                case OPTION_U64:
                default:
                        break;
@@ -166,6 +167,7 @@ static int get_value(struct parse_opt_ctx_t *p,
                case OPTION_INTEGER:
                case OPTION_UINTEGER:
                case OPTION_LONG:
+               case OPTION_ULONG:
                case OPTION_U64:
                default:
                        break;
@@ -295,6 +297,22 @@ static int get_value(struct parse_opt_ctx_t *p,
                        return opterror(opt, "expects a numerical value", flags);
                return 0;
 
+       case OPTION_ULONG:
+               if (unset) {
+                       *(unsigned long *)opt->value = 0;
+                       return 0;
+               }
+               if (opt->flags & PARSE_OPT_OPTARG && !p->opt) {
+                       *(unsigned long *)opt->value = opt->defval;
+                       return 0;
+               }
+               if (get_arg(p, opt, flags, &arg))
+                       return -1;
+               *(unsigned long *)opt->value = strtoul(arg, (char **)&s, 10);
+               if (*s)
+                       return opterror(opt, "expects a numerical value", flags);
+               return 0;
+
        case OPTION_U64:
                if (unset) {
                        *(u64 *)opt->value = 0;
@@ -703,6 +721,7 @@ static void print_option_help(const struct option *opts, int full)
        case OPTION_ARGUMENT:
                break;
        case OPTION_LONG:
+       case OPTION_ULONG:
        case OPTION_U64:
        case OPTION_INTEGER:
        case OPTION_UINTEGER: