Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(70)

Side by Side Diff: gdb/osdata.c

Issue 11969036: Merge GDB 7.5.1 (Closed) Base URL: http://git.chromium.org/native_client/nacl-gdb.git@master
Patch Set: Created 7 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « gdb/osdata.h ('k') | gdb/p-exp.c » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* Routines for handling XML generic OS data provided by target. 1 /* Routines for handling XML generic OS data provided by target.
2 2
3 Copyright (C) 2008-2012 Free Software Foundation, Inc. 3 Copyright (C) 2008-2012 Free Software Foundation, Inc.
4 4
5 This file is part of GDB. 5 This file is part of GDB.
6 6
7 This program is free software; you can redistribute it and/or modify 7 This program is free software; you can redistribute it and/or modify
8 it under the terms of the GNU General Public License as published by 8 it under the terms of the GNU General Public License as published by
9 the Free Software Foundation; either version 3 of the License, or 9 the Free Software Foundation; either version 3 of the License, or
10 (at your option) any later version. 10 (at your option) any later version.
(...skipping 270 matching lines...) Expand 10 before | Expand all | Expand 10 after
281 for (ix_cols = 0; 281 for (ix_cols = 0;
282 VEC_iterate (osdata_column_s, item->columns, 282 VEC_iterate (osdata_column_s, item->columns,
283 ix_cols, col); 283 ix_cols, col);
284 ix_cols++) 284 ix_cols++)
285 if (strcmp (col->name, name) == 0) 285 if (strcmp (col->name, name) == 0)
286 return col->value; 286 return col->value;
287 287
288 return NULL; 288 return NULL;
289 } 289 }
290 290
291 static void 291 void
292 info_osdata_command (char *type, int from_tty) 292 info_osdata_command (char *type, int from_tty)
293 { 293 {
294 struct ui_out *uiout = current_uiout; 294 struct ui_out *uiout = current_uiout;
295 struct osdata *osdata = NULL; 295 struct osdata *osdata = NULL;
296 struct osdata_item *last = NULL; 296 struct osdata_item *last = NULL;
297 struct cleanup *old_chain; 297 struct cleanup *old_chain;
298 int ncols = 0; 298 int ncols = 0;
299 int nrows; 299 int nrows;
300 int col_to_skip = -1;
300 301
301 osdata = get_osdata (type); 302 osdata = get_osdata (type);
302 old_chain = make_cleanup_osdata_free (osdata); 303 old_chain = make_cleanup_osdata_free (osdata);
303 304
304 nrows = VEC_length (osdata_item_s, osdata->items); 305 nrows = VEC_length (osdata_item_s, osdata->items);
305 306
306 if (!type && nrows == 0) 307 if (!type && nrows == 0)
307 error (_("Available types of OS data not reported.")); 308 error (_("Available types of OS data not reported."));
308 309
309 if (!VEC_empty (osdata_item_s, osdata->items)) 310 if (!VEC_empty (osdata_item_s, osdata->items))
310 { 311 {
311 last = VEC_last (osdata_item_s, osdata->items); 312 last = VEC_last (osdata_item_s, osdata->items);
312 if (last->columns) 313 if (last->columns)
313 ncols = VEC_length (osdata_column_s, last->columns); 314 ncols = VEC_length (osdata_column_s, last->columns);
315
316 /* As a special case, scan the listing of available data types
317 for a column named "Title", and only include it with MI
318 output; this column's normal use is for titles for interface
319 elements like menus, and it clutters up CLI output. */
320 if (!type && !ui_out_is_mi_like_p (uiout))
321 {
322 struct osdata_column *col;
323 int ix;
324
325 for (ix = 0;
326 VEC_iterate (osdata_column_s, last->columns, ix, col);
327 ix++)
328 {
329 if (strcmp (col->name, "Title") == 0)
330 col_to_skip = ix;
331 }
332 /* Be sure to reduce the total column count, otherwise
333 internal errors ensue. */
334 if (col_to_skip >= 0)
335 --ncols;
336 }
314 } 337 }
315 338
316 make_cleanup_ui_out_table_begin_end (uiout, ncols, nrows, 339 make_cleanup_ui_out_table_begin_end (uiout, ncols, nrows,
317 "OSDataTable"); 340 "OSDataTable");
318 341
319 /* With no columns/items, we just output an empty table, but we 342 /* With no columns/items, we just output an empty table, but we
320 still output the table. This matters for MI. */ 343 still output the table. This matters for MI. */
321 if (ncols == 0) 344 if (ncols == 0)
322 { 345 {
323 do_cleanups (old_chain); 346 do_cleanups (old_chain);
324 return; 347 return;
325 } 348 }
326 349
327 if (last && last->columns) 350 if (last && last->columns)
328 { 351 {
329 struct osdata_column *col; 352 struct osdata_column *col;
330 int ix; 353 int ix;
331 354
332 for (ix = 0; 355 for (ix = 0;
333 VEC_iterate (osdata_column_s, last->columns, 356 VEC_iterate (osdata_column_s, last->columns,
334 ix, col); 357 ix, col);
335 ix++) 358 ix++)
336 { 359 {
337 char col_name[32]; 360 char col_name[32];
338 » 361
362 » if (ix == col_to_skip)
363 » continue;
364
339 snprintf (col_name, 32, "col%d", ix); 365 snprintf (col_name, 32, "col%d", ix);
340 ui_out_table_header (uiout, 10, ui_left, 366 ui_out_table_header (uiout, 10, ui_left,
341 col_name, col->name); 367 col_name, col->name);
342 } 368 }
343 } 369 }
344 370
345 ui_out_table_body (uiout); 371 ui_out_table_body (uiout);
346 372
347 if (nrows != 0) 373 if (nrows != 0)
348 { 374 {
349 struct osdata_item *item; 375 struct osdata_item *item;
350 int ix_items; 376 int ix_items;
351 377
352 for (ix_items = 0; 378 for (ix_items = 0;
353 VEC_iterate (osdata_item_s, osdata->items, 379 VEC_iterate (osdata_item_s, osdata->items,
354 ix_items, item); 380 ix_items, item);
355 ix_items++) 381 ix_items++)
356 { 382 {
357 struct cleanup *old_chain; 383 struct cleanup *old_chain;
358 struct ui_stream *stb;
359 int ix_cols; 384 int ix_cols;
360 struct osdata_column *col; 385 struct osdata_column *col;
361 386
362 stb = ui_out_stream_new (uiout); 387 old_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "item");
363 old_chain = make_cleanup_ui_out_stream_delete (stb);
364 make_cleanup_ui_out_tuple_begin_end (uiout, "item");
365 388
366 for (ix_cols = 0; 389 for (ix_cols = 0;
367 VEC_iterate (osdata_column_s, item->columns, 390 VEC_iterate (osdata_column_s, item->columns,
368 ix_cols, col); 391 ix_cols, col);
369 ix_cols++) 392 ix_cols++)
370 { 393 {
371 char col_name[32]; 394 char col_name[32];
372 » 395
396 » if (ix_cols == col_to_skip)
397 » continue;
398
373 snprintf (col_name, 32, "col%d", ix_cols); 399 snprintf (col_name, 32, "col%d", ix_cols);
374 ui_out_field_string (uiout, col_name, col->value); 400 ui_out_field_string (uiout, col_name, col->value);
375 } 401 }
376 402
377 do_cleanups (old_chain); 403 do_cleanups (old_chain);
378 404
379 ui_out_text (uiout, "\n"); 405 ui_out_text (uiout, "\n");
380 } 406 }
381 } 407 }
382 408
383 do_cleanups (old_chain); 409 do_cleanups (old_chain);
384 } 410 }
385 411
386 extern initialize_file_ftype _initialize_osdata; /* -Wmissing-prototypes */ 412 extern initialize_file_ftype _initialize_osdata; /* -Wmissing-prototypes */
387 413
388 void 414 void
389 _initialize_osdata (void) 415 _initialize_osdata (void)
390 { 416 {
391 add_info ("os", info_osdata_command, 417 add_info ("os", info_osdata_command,
392 _("Show OS data ARG.")); 418 _("Show OS data ARG."));
393 } 419 }
OLDNEW
« no previous file with comments | « gdb/osdata.h ('k') | gdb/p-exp.c » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698