aboutsummaryrefslogtreecommitdiff
path: root/pkg/system/help/prhelp.x
diff options
context:
space:
mode:
authorJoe Hunkeler <jhunkeler@gmail.com>2015-08-11 16:51:37 -0400
committerJoe Hunkeler <jhunkeler@gmail.com>2015-08-11 16:51:37 -0400
commit40e5a5811c6ffce9b0974e93cdd927cbcf60c157 (patch)
tree4464880c571602d54f6ae114729bf62a89518057 /pkg/system/help/prhelp.x
downloadiraf-osx-40e5a5811c6ffce9b0974e93cdd927cbcf60c157.tar.gz
Repatch (from linux) of OSX IRAF
Diffstat (limited to 'pkg/system/help/prhelp.x')
-rw-r--r--pkg/system/help/prhelp.x144
1 files changed, 144 insertions, 0 deletions
diff --git a/pkg/system/help/prhelp.x b/pkg/system/help/prhelp.x
new file mode 100644
index 00000000..7fba611d
--- /dev/null
+++ b/pkg/system/help/prhelp.x
@@ -0,0 +1,144 @@
+# Copyright(c) 1986 Association of Universities for Research in Astronomy Inc.
+
+include <error.h>
+include "help.h"
+include "helpdir.h"
+
+.help print_help
+.nf __________________________________________________________________________
+PRINT_HELP -- Print help documentation for the named module or parameter.
+We are called with the name of a single module; all fiddling with packages
+and templates has been performed by the time we are called. The help
+directory is open and contains the names of the files containing the help
+source for the module. Our main task is to determine what kind of help
+is desired and call the appropriate routine.
+
+Recall that the principal options are
+
+ option meaning file
+
+ help print help block for module hlp
+ param print help for single param hlp
+ section print a single section hlp
+ files print file names ...
+ source print source file src
+ sysdoc print system documentation sys
+ alldoc print all documentation hlp,sys
+ summary print help block titles hlp,sys
+.endhelp ______________________________________________________________________
+
+define exit_ 90
+
+
+# PRINT_HELP -- Print the indicated type of help text for the named module.
+# If we are called the module exists in the package, but the type of help
+# information indicated may not exist. Return OK if help is printed, ERR
+# otherwise.
+
+int procedure print_help (db, hp, module, modnum, ctrl)
+
+pointer db # help database descriptor
+pointer hp # help directory for package
+char module[ARB] # name of module for which help is desired
+int modnum # module number within package directory
+pointer ctrl # help control parameters
+
+bool not_found
+int option
+pointer sp, fname, pakname, modname
+int hd_getname()
+
+begin
+ call smark (sp)
+ call salloc (fname, SZ_PATHNAME, TY_CHAR)
+ call salloc (pakname, SZ_FNAME, TY_CHAR)
+ call salloc (modname, SZ_FNAME, TY_CHAR)
+
+ # Handle options which do not access a help file.
+ option = H_OPTION(ctrl)
+ H_STATE(ctrl) = BOF
+ not_found = true
+
+ if (option == O_MENU) {
+ if (hd_getname (hp, modnum, TY_MEN, Memc[fname], SZ_PATHNAME) == 0)
+ goto exit_
+ iferr (call pr_file (Memc[fname], ctrl, "test"))
+ call erract (EA_WARN)
+ else
+ not_found = false
+
+ } else if (option == O_FILES) {
+ # Print names of all files associated with module.
+ ifnoerr (call pr_filenames (hp, module, modnum, ctrl))
+ not_found = false
+
+ } else if (option == O_DIR) {
+ # Print a directory of all help blocks for the named package.
+ ifnoerr (call pr_directory (db, hp, module, modnum, ctrl))
+ not_found = false
+
+ } else if (option == O_SOURCE) {
+ # Print source file, if given.
+ if (hd_getname (hp, modnum, TY_SRC, Memc[fname], SZ_PATHNAME) == 0)
+ goto exit_
+ iferr (call pr_file (Memc[fname], ctrl, "test"))
+ call erract (EA_WARN)
+ else
+ not_found = false
+
+ } else if (option == O_SUMMARY) {
+ # Scan hlp file and print summary of help blocks.
+ if (hd_getname (hp, modnum, TY_HLP, Memc[fname], SZ_PATHNAME) == 0)
+ goto exit_
+ iferr (call pr_summary (Memc[fname], ctrl))
+ call erract (EA_WARN)
+ else
+ not_found = false
+
+ } else {
+ # Get the package and module names. If there is no package name
+ # in the help directory, it is root help directory, and the module
+ # name is actually the name of a package.
+
+ if (HD_PAKNAME(hp) == 0) {
+ call strcpy (module, Memc[pakname], SZ_FNAME)
+ Memc[modname] = EOS
+ } else {
+ call strcpy (Memc[HD_SBUF(hp) + HD_PAKNAME(hp)],
+ Memc[pakname], SZ_FNAME)
+ call strcpy (module, Memc[modname], SZ_FNAME)
+ }
+
+ # Print full helpblock (default action).
+ if (option == O_HELP || option == O_ALLDOC ||
+ option == O_REFERENCES) {
+
+ if (hd_getname (hp,modnum,TY_HLP,Memc[fname],SZ_PATHNAME) > 0) {
+ ifnoerr {
+ call pr_helpblock (Memc[fname],
+ Memc[pakname], Memc[modname], TY_HLP, ctrl)
+ } then
+ not_found = false
+ }
+ }
+
+ # Print system documentation.
+ if (option == O_SYSDOC || option == O_ALLDOC) {
+ if (hd_getname (hp,modnum,TY_SYS,Memc[fname],SZ_PATHNAME) > 0) {
+ ifnoerr {
+ call pr_helpblock (Memc[fname],
+ Memc[pakname], Memc[modname], TY_HLP, ctrl)
+ } then
+ not_found = false
+ }
+ }
+ }
+
+exit_
+ call flush (H_OUT(ctrl))
+ call sfree (sp)
+ if (not_found)
+ return (ERR)
+ else
+ return (OK)
+end