openldap/contrib/whois++/help.c

90 lines
2.8 KiB
C
Raw Normal View History

1998-08-09 08:43:13 +08:00
#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 )
1998-08-09 08:43:13 +08:00
{
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;
}