From fa080de7afc95aa1c19a6e6fc0e0708ced2eadc4 Mon Sep 17 00:00:00 2001 From: Joseph Hunkeler Date: Wed, 8 Jul 2015 20:46:52 -0400 Subject: Initial commit --- pkg/system/help/xhelp/xhsave.x | 184 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 184 insertions(+) create mode 100644 pkg/system/help/xhelp/xhsave.x (limited to 'pkg/system/help/xhelp/xhsave.x') diff --git a/pkg/system/help/xhelp/xhsave.x b/pkg/system/help/xhelp/xhsave.x new file mode 100644 index 00000000..f280146d --- /dev/null +++ b/pkg/system/help/xhelp/xhsave.x @@ -0,0 +1,184 @@ +# Copyright(c) 1986 Association of Universities for Research in Astronomy Inc. + +include +include "../help.h" +include "xhelp.h" + +define SZ_EXTN 10 + + +# XH_SAVE_FILE -- Save the currently displayed page to the named file in +# the specified format. + +procedure xh_save_file (xh, iname, oname, format, overwrite) + +pointer xh #i package descriptor +char iname[ARB] #i input file +char oname[ARB] #i output filename +char format[ARB] #i format +int overwrite #i overwrite flag + +pointer sp, buf +char extn[SZ_EXTN] + +int access(), fnextn(), strlen(), strcmp() + +begin + if (access (oname, 0, 0) == YES && overwrite == NO) { + call smark (sp) + call salloc (buf, SZ_LINE, TY_CHAR) + call sprintf (Memc[buf], SZ_LINE, + "Operation would overwrite\nexisting file '%s'") + call pargstr (oname) + call gmsg (XH_GP(xh), "alert", Memc[buf]) + call sfree (sp) + return + + } else if (access (oname, 0, 0) == YES) + call delete (oname) + + call aclrc (extn, SZ_EXTN) + + # Strip off any braces around the arguments that were put + # in by the Tcl script. + if (iname[1] == '{') { + call amovc (iname[2], iname, strlen(iname)-2) + iname[strlen(iname)-1] = EOS + } + if (oname[1] == '{') { + call amovc (oname[2], oname, strlen(oname)-2) + oname[strlen(oname)-1] = EOS + } + + switch (format[1]) { + case 's': # source + call fcopy (iname, oname) + case 't': # text + if (fnextn(iname, extn, 3) > 0 && strcmp("hlp", extn) == 0) + call xh_save_text (xh, iname, oname) + else + call fcopy (iname, oname) + case 'h': # html + if (fnextn(iname, extn, 3) > 0 && strcmp("hlp", extn) == 0) + call xh_save_html (xh, iname, oname, YES) + else + call xh_save_html (xh, iname, oname, NO) + case 'p': # postscript + if (fnextn(iname, extn, 3) > 0 && strcmp("hlp", extn) == 0) + call xh_save_ps (xh, iname, oname, YES) + else + call xh_save_ps (xh, iname, oname, NO) + default: + call gmsg (XH_GP(xh), "alert", "Invalid format specifier") + } +end + + +# XH_SAVE_TEXT -- Save the page as a formatted text file. + +procedure xh_save_text (xh, in, out) + +pointer xh #i package descriptor +char in[ARB], out[ARB] #i file names + +char err[SZ_LINE] +int fdout, open() +errchk open + +begin + # Open the output file. + iferr (fdout = open (out, NEW_FILE, TEXT_FILE)) { + call sprintf (err, SZ_LINE, "Cannot open output file `%s'.") + call pargstr (out) + call gmsg (XH_GP(xh), "alert", err) + return + } + + # Format the help as text. + call xh_get_help (fdout, "", "", in, HF_TEXT, HELPDB(xh), "all", "help") + + # Close the file. + call close (fdout) +end + + +# XH_SAVE_HTML -- Save the page as an HTML file. + +procedure xh_save_html (xh, in, out, ishelp) + +pointer xh #i package descriptor +char in[ARB], out[ARB] #i file names +int ishelp #i is this a help file? + +char err[SZ_LINE] +int fdout, fdin, open() +errchk open + +begin + # Open the output file. + iferr (fdout = open (out, NEW_FILE, TEXT_FILE)) { + call sprintf (err, SZ_LINE, "Cannot open output file `%s'.") + call pargstr (out) + call gmsg (XH_GP(xh), "alert", err) + return + } + + # Format the help as text. + if (ishelp == YES) { + call xh_get_help (fdout, "", "", in, HF_HTML, HELPDB(xh), + "all", "help") + } else { + # Open the input file. + iferr (fdout = open (out, NEW_FILE, TEXT_FILE)) { + call sprintf (err, SZ_LINE, "Cannot open output file `%s'.") + call pargstr (out) + call gmsg (XH_GP(xh), "alert", err) + return + } + + call fprintf (out, "\n") + call fprintf (out, "%s\n") + call pargstr (in) + call fprintf (out, "
\n")
+	    call fcopyo (in, out)
+	    call fprintf (out, "
\n") + call fprintf (out, "\n") + + call close (fdin) + } + + # Close the file. + call close (fdout) +end + + +# XH_SAVE_PS -- Save the page as a postscript file. + +procedure xh_save_ps (xh, in, out, ishelp) + +pointer xh #i package descriptor +char in[ARB], out[ARB] #i file names +int ishelp #i is this a help file? + +char err[SZ_LINE] +int fdout, open() +errchk open + +begin + if (ishelp == NO) + return + + # Open the output file. + iferr (fdout = open (out, NEW_FILE, TEXT_FILE)) { + call sprintf (err, SZ_LINE, "Cannot open output file `%s'.") + call pargstr (out) + call gmsg (XH_GP(xh), "alert", err) + return + } + + # Format the help as text. + call xh_get_help (fdout, "", "", in, HF_PS, HELPDB(xh), "all", "help") + + # Close the file. + call close (fdout) +end -- cgit