topic 10772 src/simh/scp.c struct topic *parent; topic 10773 src/simh/scp.c struct topic **children; topic 10803 src/simh/scp.c static void appendText (TOPIC *topic, const char *text, size_t len) topic 10810 src/simh/scp.c newt = (char *)realloc (topic->text, topic->len + len +1); topic 10816 src/simh/scp.c topic->text = newt; topic 10817 src/simh/scp.c memcpy (newt + topic->len, text, len); topic 10818 src/simh/scp.c topic->len +=len; topic 10819 src/simh/scp.c newt[topic->len] = '\0'; topic 10825 src/simh/scp.c static void cleanHelp (TOPIC *topic) topic 10830 src/simh/scp.c FREE (topic->title); topic 10831 src/simh/scp.c FREE (topic->text); topic 10832 src/simh/scp.c FREE (topic->label); topic 10833 src/simh/scp.c for (i = 0; i < topic->kids; i++) { topic 10834 src/simh/scp.c child = topic->children[i]; topic 10838 src/simh/scp.c FREE (topic->children); topic 10845 src/simh/scp.c static TOPIC *buildHelp (TOPIC *topic, DEVICE *dptr, topic 10885 src/simh/scp.c appendText (topic, " ", 4); /* Basic indentation */ topic 10889 src/simh/scp.c appendText (topic, " ", 4); topic 10900 src/simh/scp.c appendText (topic, start, htext - start); /* Flush up to escape */ topic 10907 src/simh/scp.c appendText (topic, buf, strlen (buf)); topic 10912 src/simh/scp.c appendText (topic, dptr->name, strlen (dptr->name)); topic 10915 src/simh/scp.c appendText (topic, sim_name, strlen (sim_name)); topic 10918 src/simh/scp.c appendText (topic, "%", 1); topic 10921 src/simh/scp.c appendText (topic, "+", 1); topic 10950 src/simh/scp.c appendText (topic, start, ep - start); topic 10954 src/simh/scp.c appendText (topic, " ", 4); topic 10961 src/simh/scp.c appendText (topic, start, ep-start); topic 10973 src/simh/scp.c appendText (topic, start, htext - start); topic 10991 src/simh/scp.c FAIL (SCPE_ARG, Invalid topic heading, htext); topic 10994 src/simh/scp.c if (n <= topic->level) { /* Find level for new topic */ topic 10995 src/simh/scp.c while (n <= topic->level) topic 10996 src/simh/scp.c topic = topic->parent; topic 10999 src/simh/scp.c if (n > topic->level + 1) { /* Skipping down more than 1 */ topic 11009 src/simh/scp.c FAIL (SCPE_ARG, Missing topic name, htext); topic 11017 src/simh/scp.c FAIL (SCPE_ARG, Null topic name, htext); topic 11063 src/simh/scp.c children = (TOPIC **) realloc (topic->children, topic 11064 src/simh/scp.c (topic->kids +1) * sizeof (TOPIC *)); topic 11072 src/simh/scp.c topic->children = children; topic 11073 src/simh/scp.c topic->children[topic->kids++] = newt; topic 11075 src/simh/scp.c newt->parent = topic; topic 11077 src/simh/scp.c if (n > topic->kidwid) topic 11078 src/simh/scp.c topic->kidwid = n; topic 11079 src/simh/scp.c (void)sprintf (nbuf, ".%u", topic->kids); topic 11080 src/simh/scp.c n = strlen (topic->label) + strlen (nbuf) + 1; topic 11084 src/simh/scp.c topic->children[topic->kids -1] = NULL; topic 11090 src/simh/scp.c (void)sprintf (newt->label, "%s%s", topic->label, nbuf); topic 11091 src/simh/scp.c topic = newt; topic 11107 src/simh/scp.c return topic; topic 11114 src/simh/scp.c static char *helpPrompt ( TOPIC *topic, const char *pstring, t_bool oneword ) topic 11119 src/simh/scp.c if (topic->level == 0) { topic 11129 src/simh/scp.c prefix = helpPrompt (topic->parent, "", oneword); topic 11131 src/simh/scp.c newp = (char *) malloc (strlen (prefix) + 1 + strlen (topic->title) + 1 + topic 11140 src/simh/scp.c if (topic->children) { topic 11141 src/simh/scp.c if (topic->level != 0) topic 11143 src/simh/scp.c newt = (topic->flags & HLP_MAGIC_TOPIC)? topic 11144 src/simh/scp.c topic->title+1: topic->title; topic 11163 src/simh/scp.c static void displayMagicTopic (FILE *st, DEVICE *dptr, TOPIC *topic) topic 11190 src/simh/scp.c if (topic->title) topic 11191 src/simh/scp.c (void)fprintf (st, "%s\r\n", topic->title+1); topic 11194 src/simh/scp.c if (topic->title) { topic 11195 src/simh/scp.c if (!strcmp (topic->title+1, "Registers")) { topic 11200 src/simh/scp.c if (!strcmp (topic->title+1, "Set commands")) { topic 11205 src/simh/scp.c if (!strcmp (topic->title+1, "Show commands")) { topic 11236 src/simh/scp.c TOPIC *topic, va_list ap ) topic 11240 src/simh/scp.c if (topic->flags & HLP_MAGIC_TOPIC) { topic 11241 src/simh/scp.c (void)fprintf (st, "\r\n%s ", topic->label); topic 11242 src/simh/scp.c displayMagicTopic (st, dptr, topic); topic 11245 src/simh/scp.c (void)fprintf (st, "\r\n%s %s\r\n", topic->label, topic->title); topic 11252 src/simh/scp.c if (topic->text) topic 11253 src/simh/scp.c fputs (topic->text, st); topic 11255 src/simh/scp.c for (i = 0; i < topic->kids; i++) topic 11256 src/simh/scp.c displayFlatHelp (st, dptr, uptr, flag, topic->children[i], ap); topic 11264 src/simh/scp.c static size_t matchHelpTopicName (TOPIC *topic, const char *token) topic 11273 src/simh/scp.c for (i = 0; i < topic->kids; i++) { topic 11274 src/simh/scp.c strcpy (cbuf,topic->children[i]->title + topic 11275 src/simh/scp.c ((topic->children[i]->flags & HLP_MAGIC_TOPIC)? 1 : 0)); topic 11304 src/simh/scp.c TOPIC *topic = ⊤ topic 11408 src/simh/scp.c match = matchHelpTopicName (topic, gbuf); topic 11411 src/simh/scp.c displayFlatHelp (st, dptr, uptr, flag, topic, ap); topic 11416 src/simh/scp.c (void)fprintf (st, "\r\n%s is ambiguous in %s\r\n", gbuf, topic->title); topic 11420 src/simh/scp.c (void)fprintf (st, "\r\n%s is not available in %s\r\n", gbuf, topic->title); topic 11423 src/simh/scp.c topic = topic->children[match-1]; topic 11428 src/simh/scp.c displayFlatHelp (st, dptr, uptr, flag, topic, ap); topic 11441 src/simh/scp.c if (topic->flags & HLP_MAGIC_TOPIC) { topic 11443 src/simh/scp.c displayMagicTopic (st, dptr, topic); topic 11446 src/simh/scp.c (void)fprintf (st, "\r\n%s\r\n", topic->title); topic 11452 src/simh/scp.c if (topic->text) topic 11453 src/simh/scp.c fputs (topic->text, st); topic 11455 src/simh/scp.c if (topic->kids) { topic 11461 src/simh/scp.c for (i = 0; i < topic->kids; i++) { topic 11462 src/simh/scp.c strcpy (tbuf, topic->children[i]->title + topic 11463 src/simh/scp.c ((topic->children[i]->flags & HLP_MAGIC_TOPIC)? 1 : 0)); topic 11468 src/simh/scp.c w += 4 + topic->kidwid; topic 11470 src/simh/scp.c w = 4 + topic->kidwid; topic 11474 src/simh/scp.c (void)fprintf (st, " %-*s", (int32_t)topic->kidwid, tbuf); topic 11478 src/simh/scp.c pstring = helpPrompt (topic, "", TRUE); topic 11490 src/simh/scp.c if (topic->kids == 0) topic 11491 src/simh/scp.c topic = topic->parent; topic 11492 src/simh/scp.c pstring = helpPrompt (topic, prompt[topic->kids != 0], FALSE); topic 11507 src/simh/scp.c displayFlatHelp (st, dptr, uptr, flag, topic, ap); topic 11511 src/simh/scp.c if (topic->level == 0) topic 11513 src/simh/scp.c topic = topic->parent; topic 11527 src/simh/scp.c if (!topic->kids) { topic 11532 src/simh/scp.c match = matchHelpTopicName (topic, gbuf); topic 11546 src/simh/scp.c topic = topic->children[match-1];