From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 747 invoked by alias); 22 Sep 2009 00:04:28 -0000 Received: (qmail 591 invoked by uid 22791); 22 Sep 2009 00:04:27 -0000 X-SWARE-Spam-Status: No, hits=-2.4 required=5.0 tests=AWL,BAYES_00,SPF_PASS X-Spam-Check-By: sourceware.org Received: from viper.snap.net.nz (HELO viper.snap.net.nz) (202.37.101.25) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Tue, 22 Sep 2009 00:04:22 +0000 Received: from totara (215.29.255.123.dynamic.snap.net.nz [123.255.29.215]) by viper.snap.net.nz (Postfix) with ESMTP id 73F263DA3BD; Tue, 22 Sep 2009 12:04:15 +1200 (NZST) Received: by totara (Postfix, from userid 1000) id D4CAEC167; Tue, 22 Sep 2009 12:04:12 +1200 (NZST) MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit Message-ID: <19128.5244.844945.680565@totara.tehura.co.nz> Date: Tue, 22 Sep 2009 00:04:00 -0000 To: Vladimir Prus , gdb-patches@sources.redhat.com Subject: Re: [PATCH:gdb/mi] Update a specified list of variable objects In-Reply-To: <19128.3154.796642.554720@totara.tehura.co.nz> References: <19127.27863.973393.962895@totara.tehura.co.nz> <19128.3154.796642.554720@totara.tehura.co.nz> From: nickrob@snap.net.nz (Nick Roberts) X-IsSubscribed: yes Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org X-SW-Source: 2009-09/txt/msg00693.txt.bz2 > I've tried to address this point below. It's even in unified diff format! Actually it's probably better to use isdigit like below -- Nick http://www.inet.net.nz/~nickrob --- mi-cmd-var.c.~1.61~ 2009-09-16 18:30:24.000000000 +1200 +++ mi-cmd-var.c 2009-09-22 11:59:40.000000000 +1200 @@ -660,19 +660,57 @@ mi_cmd_var_update (char *command, char * struct cleanup *cleanup; char *name; enum print_values print_values; + int optind = 0; + char *optarg; + struct varobj *var; + + enum opt + { + NO_VALUES, SIMPLE_VALUES, ALL_VALUES + }; - if (argc != 1 && argc != 2) - error (_("mi_cmd_var_update: Usage: [PRINT_VALUES] NAME.")); + static struct mi_opt opts[] = + { + { "-no-values", NO_VALUES, 0 }, + { "-simple-values", SIMPLE_VALUES, 0 }, + { "-all-values", ALL_VALUES, 0 }, + { 0, 0, 0 } + }; if (argc == 1) - name = argv[0]; + print_values = PRINT_NO_VALUES; + else if (argc == 2 && isdigit (*argv[0])) + { + optind = 1; + print_values = mi_parse_values_option (argv[0]); + } else - name = (argv[1]); + { + while (1) + { + int opt = mi_getopt ("mi_cmd_var_update", + argc, argv, opts, &optind, &optarg); + if (opt < 0) + break; + switch ((enum opt) opt) + { + case NO_VALUES: + print_values = PRINT_NO_VALUES; + break; + case SIMPLE_VALUES: + print_values = PRINT_SIMPLE_VALUES; + break; + case ALL_VALUES: + print_values = PRINT_ALL_VALUES; + break; + } + } - if (argc == 2) - print_values = mi_parse_values_option (argv[0]); - else - print_values = PRINT_NO_VALUES; + if (optind >= argc) + error (_("mi_cmd_var_update: Usage: [PRINT_VALUES] NAME1 NAME2 ...")); + } + + name = argv[optind]; if (mi_version (uiout) <= 1) cleanup = make_cleanup_ui_out_tuple_begin_end (uiout, "changelist"); @@ -697,10 +735,15 @@ mi_cmd_var_update (char *command, char * } else { - /* Get varobj handle, if a valid var obj name was specified */ - struct varobj *var = varobj_get_handle (name); + int index = optind; + while (argv[index]) + { + /* Get varobj handle, if a valid var obj name was specified */ + var = varobj_get_handle (argv[index]); - varobj_update_one (var, print_values, 1 /* explicit */); + varobj_update_one (var, print_values, 1 /* explicit */); + index++; + } } do_cleanups (cleanup);