static void kod_set_os (char *arg, int from_tty, struct cmd_list_element *command) { char *p; /* If we had already had an open OS, close it. */ if (gdb_kod_close) (*gdb_kod_close) (); /* Also remove the old OS's command. */ if (old_operating_system) { delete_cmd (old_operating_system, &infolist); xfree (old_operating_system); } if (! operating_system || ! *operating_system) { /* If user set operating system to empty, we want to forget we had a module open. Setting these variables is just nice for debugging and clarity. */ gdb_kod_open = NULL; gdb_kod_request = NULL; gdb_kod_close = NULL; } else { char *kodlib; old_operating_system = xstrdup (operating_system); load_kod_library (operating_system); kodlib = (*gdb_kod_open) (gdb_kod_display, gdb_kod_query); /* Add kod related info commands to gdb. */ add_info (operating_system, info_kod_command, _("Displays information about Kernel Objects.")); p = strrchr (kodlib, '-'); if (p != NULL) p++; else p = "Unknown KOD library"; printf_filtered ("%s - %s\n", operating_system, p); xfree (kodlib); } }
static void kod_set_os (char *arg, int from_tty, struct cmd_list_element *command) { char *p; /* NOTE: cagney/2002-03-17: The add_show_from_set() function clones the set command passed as a parameter. The clone operation will include (BUG?) any ``set'' command callback, if present. Commands like ``info set'' call all the ``show'' command callbacks. Unfortunately, for ``show'' commands cloned from ``set'', this includes callbacks belonging to ``set'' commands. Making this worse, this only occures if add_show_from_set() is called after add_cmd_sfunc() (BUG?). */ if (cmd_type (command) != set_cmd) return; /* If we had already had an open OS, close it. */ if (gdb_kod_close) (*gdb_kod_close) (); /* Also remove the old OS's command. */ if (old_operating_system) { delete_cmd (old_operating_system, &infolist); xfree (old_operating_system); } if (! operating_system || ! *operating_system) { /* If user set operating system to empty, we want to forget we had a module open. Setting these variables is just nice for debugging and clarity. */ gdb_kod_open = NULL; gdb_kod_request = NULL; gdb_kod_close = NULL; } else { char *kodlib; old_operating_system = xstrdup (operating_system); load_kod_library (operating_system); kodlib = (*gdb_kod_open) (gdb_kod_display, gdb_kod_query); /* Add kod related info commands to gdb. */ add_info (operating_system, info_kod_command, "Displays information about Kernel Objects."); p = strrchr (kodlib, '-'); if (p != NULL) p++; else p = "Unknown KOD library"; printf_filtered ("%s - %s\n", operating_system, p); xfree (kodlib); } }