#if !defined(lint) static char copyright[] = "Copyright 1992 The University of Adelaide"; #endif /* * H E L P * * Author: Mark R. Prior * Communications and Systems Branch * Information Technology Division * The University of Adelaide * E-mail: mrp@itd.adelaide.edu.au * Date: October 1992 * Version: 1.7 * Description: * The Help module * * Redistribution and use in source and binary forms are permitted * provided that the above copyright notice and this paragraph are * duplicated in all such forms and that any documentation, * advertising materials, and other materials related to such * distribution and use acknowledge that the software was developed * by the University of Adelaide. The name of the University may not * be used to endorse or promote products derived from this software * without specific prior written permission. * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. */ #include "whois++.h" void needHelp( char *reason ) { char filename[MAXPATHLEN]; char buffer[BUFSIZ]; int i; DIR *dir; struct dirent *entry; FILE *help; if ( reason == NULL || *reason == '\0' ) { sprintf( filename, "%s/%s/general", helpDir, language ); if ( ( help = fopen( filename, "r" ) ) == NULL ) { printFormatted( lineLength, TRUE, stdout, "Sorry cannot open general information help file" ); return; } } else { sprintf( filename, "%s/%s/%s", helpDir, language, lowerCase( reason ) ); if ( ( help = fopen( filename, "r" ) ) == NULL ) { sprintf( filename, "%s/%s/%s", helpDir, defaultLanguage, lowerCase( reason ) ); if ( ( help = fopen( filename, "r" ) ) == NULL ) { printFormatted( lineLength, TRUE, stdout, "Sorry cannot open help file for topic \"%s\"", reason ); return; } else { printFormatted( lineLength, TRUE, stdout, "Sorry no help in %s, using default language (%s).", language, defaultLanguage ); } } } while ( fgets( buffer, BUFSIZ, help ) != NULL ) { i = strlen( buffer ); while ( i-- > 0 && ( buffer[i] == '\n' || buffer[i] == '\r' ) ) buffer[i] = '\0'; printFormatted( lineLength, FALSE, stdout, "%s", buffer ); } fclose( help ); if ( reason == NULL || *reason == '\0' ) { sprintf( filename, "%s/%s", helpDir, language ); if ( ( dir = opendir( filename ) ) == NULL ) return; printFormatted( lineLength, FALSE, stdout, "" ); printFormatted( lineLength, FALSE, stdout, "Further information is available on the following topics" ); for ( entry = readdir( dir ); entry != NULL; entry = readdir( dir ) ) if ( !EQ(entry->d_name, "." ) && !EQ(entry->d_name, ".." ) ) printFormatted( lineLength, FALSE, stdout, " %s", lowerCase( entry->d_name ) ); closedir( dir ); } return; }