void CliIdentifyModules(void) { const char *p; unsigned int pos; const unsigned int cppidcount = (sizeof(ident_table)/sizeof(ident_table[0])); const unsigned int hidcount = (sizeof(h_ident_table)/sizeof(h_ident_table[0])); char buffer[80]; for (pos = 0; pos < (cppidcount + hidcount); pos++) { p = ((const char *)0); if (pos < cppidcount) { if (ident_table[pos]) p = (*ident_table[pos])(); } else p = h_ident_table[pos-cppidcount]; if (split_line( buffer, p, sizeof(buffer))) LogScreenRaw( "%s\n", buffer ); } return; }
void DisplayHelp( const char * unrecognized_option ) { static const char *valid_help_requests[] = { "-help", "--help", "help", "-h", "/h", "/?", "-?", "?", "/help" }; static const char *helpheader[] = { "distributed.net v" CLIENT_VERSIONSTRING " client for " CLIENT_OS_NAME_EXTENDED, "Visit http://faq.distributed.net/ for in-depth command line help", "-------------------------------------------------------------------------" }; int headerlines, bodylines, footerlines; int startline, maxscreenlines, maxpagesize; int i, key, nopaging = (!ConIsScreen()); char linebuffer[128]; if (ConGetSize(NULL,&maxscreenlines) == -1) maxscreenlines = 25; headerlines = (sizeof(helpheader) / sizeof(char *)); bodylines = (sizeof(helpbody) / sizeof(char *)); footerlines = 2; startline = 0; maxpagesize = maxscreenlines - (headerlines + footerlines); #if defined(NO_INTERNAL_PAGING) nopaging = 1; #endif /* -------------------------------------------------- */ if (unrecognized_option && *unrecognized_option) { int goodopt = 0; for (i = 0; ((goodopt == 0) && (i < (int) (sizeof(valid_help_requests)/sizeof(char *)))); i++) { int n=0; for (;((valid_help_requests[i][n])!=0 && unrecognized_option[n]!=0);n++) { if (tolower(valid_help_requests[i][n])!=tolower(unrecognized_option[n])) break; } goodopt = ((valid_help_requests[i][n])==0 && unrecognized_option[n]==0); } if (!goodopt) { if (strlen(unrecognized_option) > 25) LogScreenRaw( "\nUnrecognized option '%25.25s...'\n\n", unrecognized_option); else LogScreenRaw( "\nUnrecognized option '%s'\n\n", unrecognized_option); LogScreenRaw( "The following list of command line switches may be obtained\n" "at any time by running the client with the '-help' option.\n\n"); if (!nopaging) { LogScreenRaw("Press enter to continue... "); key = ConInKey(-1); /* -1 == wait forever. returns zero if break. */ LogScreenRaw( "\r \r" ); if (CheckExitRequestTriggerNoIO()) return; if (key != '\n' && key != '\r' && key != ' ') return; } } } /* -------------------------------------------------- */ if (nopaging || (maxscreenlines > (headerlines+bodylines))) { for (i = 0; i < headerlines; i++) LogScreenRaw( "%s\n", helpheader[i] ); for (i = 0; i < bodylines; i++) LogScreenRaw( "%s\n", helpbody[i] ); return; } /* -------------------------------------------------- */ key = 0; do { if (key == 0) /* refresh required */ { ConClear(); for (i = 0; i < headerlines; i++) LogScreenRaw( "%s\n", helpheader[i] ); for (i = startline; i < (startline+maxpagesize); i++) LogScreenRaw( "%s\n", helpbody[i] ); LogScreenRaw("\n"); } if (startline == 0) strcpy( linebuffer, "Press '+' for the next page,"); else if (startline >= ((bodylines-maxpagesize)-1)) strcpy( linebuffer, "Press '-' for the previous page,"); else strcpy( linebuffer, "Press '+' or '-' for the next/previous page,"); strcat( linebuffer, " 'Esc' or 'Q' to quit... "); LogScreenRaw( linebuffer ); key = ConInKey(-1); linebuffer[i=strlen(linebuffer)]='\r'; linebuffer[i+1]=0; for (--i; i > 0; i--) linebuffer[i]=' '; linebuffer[0]='\r'; LogScreenRaw( linebuffer ); if (CheckExitRequestTriggerNoIO()) break; if (key == '+' || key == '=' || key == ' ' || key == 'f' || key == '\r' || key == '\n') { if (startline <= ((bodylines-maxpagesize) - 1)) { startline += maxpagesize; if ( startline >= (bodylines-maxpagesize)) startline = (bodylines-maxpagesize); key = 0; //refresh required } else if (key == ' ' || key == '\r' || key == '\n') { key = -1; // quit if space or enter pressed on last page } } else if (key == '-' || key == 'b') { if (startline > 0) { startline -= maxpagesize; if ( startline < 0 ) startline = 0; key = 0; //refresh required } } else { key = -1; //unknown keystroke, so quit } } while (key >= 0); return; }