AcePerl
view release on metacpan or search on metacpan
acelib/helpsubs.c view on Meta::CPAN
if (dirname)
{
strcpy (helpDir, dirname);
if (filName (dirname,0,"rd"))
return (char*)&helpDir[0];
else
return (char*)0;
}
else
{
strcpy (helpDir, filGetFullPath ("whelp"));
if (filName (helpDir, 0, "rd"))
return (char*)&helpDir[0];
}
return (char*)0;
} /* helpGetDir */
/************************************************************/
/* return the current helpDirectory or
initialise if not previously set */
UTIL_FUNC_DEF char *helpGetDir (void)
{
if (!*helpDir)
return (helpSetDir(0)) ;
return (char*)&helpDir[0];
} /* helpGetDir */
/************************************************************/
/* pop up help on the given subject, depending on the registered
display function, that will be textual, in the built-in
simple HTML browser or even launch an external browser
to display the help document */
/************************************************************/
UTIL_FUNC_DEF BOOL helpOn (char *subject)
{
char *helpFilename;
if (!helpGetDir() || !filName(helpGetDir(), "", "rd"))
{
messout ("Sorry, No help available ! "
"Could not open the HTML help directory "
"%s\n"
"(%s)",
helpGetDir(),
messSysErrorText());
return FALSE;
}
helpFilename = helpSubjectGetFilename(subject);
/* may be NULL if file could not be found,
the registered helpOnRoutine has to cope
with this case and may decide to display an
index instead */
if (helpOnRoutine)
return ((*helpOnRoutine)(helpFilename));
return (helpPrint (helpFilename)); /* textual help as default */
} /* helpOn */
/************************************************************/
UTIL_FUNC_DEF char *helpSubjectGetFilename (char *subject)
/* this function attempts to find the file name corresponding
to a particular help-subject.
It will attempt to find a matching file according to
the current settings of helpDir and HELP_FILE_EXTENSION.
the subject '?' will just return ? again. This is a special
code within the help system to tell the help display
function that the user required some kind of help.
Usually the helpOnRegister'd function would display a
dynamically created index of the help-directory.
this function can be even cleverer by doing keyword searches
on <TITLE> and <H1> strings in files that might be relevant
of no obvious match is found.
*/
{
static char filename_array[MAXPATHLEN] = "";
char *filename = &filename_array[0];
char *subject_copy;
Array dirList;
if (subject == NULL)
return NULL;
if (strlen(subject) == 0)
return NULL;
if (strcmp(subject, "?") == 0)
{
/* return ? to signal that the calling
function needs to display a dynamically
created index or show some kind of help.
*/
/* if the construct
page = htmlPageCreate(helpGetFilename(subject_requested));
is used, the resulting page will therefor be a marked up
directory listing of helpsubjects
*/
strcpy (filename, "?");
return filename;
}
subject_copy = strnew (subject, 0);
strcpy (filename, ""); /* intialise, if this is
non-empty at the end of the loop,
we found a matching helpfile */
while (TRUE)
( run in 0.506 second using v1.01-cache-2.11-cpan-140bd7fdf52 )