diff options
author | dos-reis <gdr@axiomatics.org> | 2008-03-07 15:19:01 +0000 |
---|---|---|
committer | dos-reis <gdr@axiomatics.org> | 2008-03-07 15:19:01 +0000 |
commit | 8531f4c74274b8aa99168d220738227557a9c418 (patch) | |
tree | c50b77870e432317be8f99c248e1339f74b51661 /src/hyper/ex2ht.pamphlet | |
parent | 33949ff2e6e5b5abe8d22c5604f42a6c9371079a (diff) | |
download | open-axiom-8531f4c74274b8aa99168d220738227557a9c418.tar.gz |
* hyper/: De-pamphletize.
Diffstat (limited to 'src/hyper/ex2ht.pamphlet')
-rw-r--r-- | src/hyper/ex2ht.pamphlet | 310 |
1 files changed, 0 insertions, 310 deletions
diff --git a/src/hyper/ex2ht.pamphlet b/src/hyper/ex2ht.pamphlet deleted file mode 100644 index c26c26b0..00000000 --- a/src/hyper/ex2ht.pamphlet +++ /dev/null @@ -1,310 +0,0 @@ -\documentclass{article} -\usepackage{axiom} -\begin{document} -\title{\$SPAD/src/ex2ht} -\author{The Axiom Team} -\maketitle -\begin{abstract} -\end{abstract} -\eject -\tableofcontents -\eject -\section{ex2ht.c} -<<ex2ht.c>>= -/* ex2ht creates a cover page for structured HyperDoc example pages */ - - -#define _EX2HT_C -#include "axiom-c-macros.h" -#include "useproto.h" -#include "debug.h" -#include <stdio.h> -#include <stdlib.h> -#include <unistd.h> -#include <string.h> -#include <sys/types.h> -#include <sys/stat.h> -#include <sys/time.h> - - - -#if defined(SUN4OS5platform)||defined(SGIplatform) -/* can't find a prototype anywhere */ -extern int utimes(const char *, const struct timeval [2]); -#endif - - -#define MaxLineLength 512 -#define MaxFiles 100 - -char *files[MaxFiles]; -int numFiles = 0; -struct timeval latest_date[2] ={{0,0},{0,0}}; - -#include "ex2ht.H1" - - -int -main(int argc, char **argv) -{ - int i; - - if (argc == 1) { - fprintf(stderr, "usage: %s exfile.ht ...\n", argv[0]); - return (-1); - } - openCoverPage(); - for (i = 1; i < argc; i++) - exToHt(argv[i]); - closeCoverPage(); - for (i = 0; i < numFiles; i++) - addFile(files[i]); - closeCoverFile(); - return 0; -} - -char * -allocString(char *s) -{ - char *t = (char *) malloc(strlen(s) + 1); - - strcpy(t, s); - return t; -} - -char * -strPrefix(char *prefix, char *s) -{ - while (*prefix != '\0' && *prefix == *s) { - prefix++; - s++; - } - if (*prefix == '\0') - return s; - return NULL; -} - -char * -getExTitle(FILE *inFile, char *line) -{ - char *title; - - while (fgets(line, MaxLineLength, inFile) != NULL) - if ((title = strPrefix("% Title: ", line))) { - title[strlen(title) - 1] = '\0'; - return title; - } - fprintf(stderr, "No Title title line in the file!\n"); - return NULL; -} - -void -exToHt(char *filename) -{ - char line[MaxLineLength], *line2; - char *title, *pagename; - FILE *inFile = fopen(filename, "r"); - FILE *outFile; - int len, i; - struct timeval tvp; - struct stat buf; - - if (inFile == NULL) { - fprintf(stderr, "couldn't open %s for reading.\n", filename); - return; - } - strcpy(line, "Menu"); - strcat(line, filename); - len = strlen(line); - for (i = 0; i < len; i++) - if (line[i] == '.') { - line[i] = '\0'; - break; - } - outFile = fopen(line, "w"); - if (outFile == NULL) { - fprintf(stderr, "couldn't open %s for writing.\n", line); - return; - } - pagename = allocString(line); - title = getExTitle(inFile, line); - if (title == NULL) { - return; - } - files[numFiles++] = pagename; - emitCoverLink(pagename, title); - emitHeader(outFile, pagename, title); - while (fgets(line, MaxLineLength, inFile) != NULL) { - if ((line2 = strPrefix("\\begin{page}{", line))) - emitMenuEntry(line2, outFile); - else if ((line2 = strPrefix("\\spadcommand{", line))) - emitSpadCommand(line2, "\\spadcommand{", outFile); - else if ((line2 = strPrefix("\\spadpaste{", line))) - emitSpadCommand(line2, "\\spadpaste{", outFile); - else if ((line2 = strPrefix("\\example{", line))) - emitSpadCommand(line2, "\\example{", outFile); - else if ((line2 = strPrefix("\\graphpaste{", line))) - emitSpadCommand(line2, "\\graphpaste{", outFile); - } - emitFooter(outFile); - fclose(inFile); - fclose(outFile); - stat(filename,&buf); - tvp.tv_sec =buf.st_mtime; - tvp.tv_usec =0; - if timercmp(&tvp,&latest_date[1],>){ - latest_date[1].tv_sec=buf.st_mtime; - } -} - -void -emitHeader(FILE *outFile, char *pageName, char *pageTitle) -{ - fprintf(outFile, "\\begin{page}{%s}{%s}\n", pageName, pageTitle); - fprintf(outFile, "\\beginscroll\\beginmenu\n"); -} - -void -emitFooter(FILE *outFile) -{ - fprintf(outFile, "\\endmenu\\endscroll\\end{page}\n"); -} - -/* s is pageName}{title} */ -void -emitMenuEntry(char *line, FILE *outFile) -{ - char pageName[MaxLineLength], title[MaxLineLength]; - char *p = pageName, *t = title; - - while (*line != '}') - *p++ = *line++; - *p = '\0'; - line++; - while (*line != '}') - *t++ = *line++; - *t = '\0'; - fprintf(outFile, "\\menudownlink%s}{%s}\n", title, pageName); -} - -void -emitSpadCommand(char *line, char *prefix, FILE *outFile) -{ - int braceCount = 1; - char command[MaxLineLength], *t = command; - - while (1) { - if (*line == '}') - braceCount--; - if (braceCount == 0) - break; - if (*line == '{') - braceCount++; - *t++ = *line++; - } - *t = '\0'; - fprintf(outFile, "%s%s}\n", prefix, command); -} - -/* cover page functions */ - -FILE *coverFile; - -void -openCoverPage(void) -{ - coverFile = fopen("coverex.ht", "w"); - if (coverFile == NULL) { - fprintf(stderr, "couldn't open coverex.ht for writing\n"); - exit(-1); - } - fprintf(coverFile, "%% DO NOT EDIT! Created by ex2ht.\n\n"); - fprintf(coverFile, "\\begin{page}{ExampleCoverPage}{Examples Of AXIOM Commands}\n"); - fprintf(coverFile, "\\beginscroll\\table{\n"); -} - -void -closeCoverPage(void) -{ - fprintf(coverFile, "}\\endscroll\\end{page}\n\n"); -} - -void -closeCoverFile(void) -{ - fclose(coverFile); -#ifdef HP9platform - times("coverex.ht",latest_date); -#else - utimes("coverex.ht",latest_date); -#endif -} - -void -emitCoverLink(char *name, char *title) -{ - fprintf(coverFile, "{\\downlink{%s}{%s}}\n", title, name); -} - -void -addFile(char *filename) -{ - FILE *file = fopen(filename, "r"); - int c; - - if (file == NULL) { - fprintf(stderr, "Couln't open %s for reading\n", filename); - exit(-1); - } - while ((c = getc(file)) != EOF) - putc(c, coverFile); - putc('\n', coverFile); - fclose(file); - unlink(filename); -} -@ -\section{License} -<<license>>= -/* -Copyright (c) 1991-2002, The Numerical ALgorithms Group Ltd. -All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - - - Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - - Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in - the documentation and/or other materials provided with the - distribution. - - - Neither the name of The Numerical ALgorithms Group Ltd. nor the - names of its contributors may be used to endorse or promote products - derived from this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS -IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED -TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A -PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER -OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, -EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, -PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR -PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF -LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING -NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ - -@ -<<*>>= -<<license>> -<<ex2ht.c>> -@ -\eject -\begin{thebibliography}{99} -\bibitem{1} nothing -\end{thebibliography} -\end{document} |