X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Fhtml.c;h=608de8a2d9c2f2ebc487a0cb4b39394d18f2792e;hb=b7e33825d30a18360f24a18faf4b7d2e9efb8142;hp=492614731cf6ad199c7d981792237da8e3647e0d;hpb=205ac3afa4c2b19c85819d8695abf3975bb11807;p=pspp
diff --git a/src/html.c b/src/html.c
index 492614731c..608de8a2d9 100644
--- a/src/html.c
+++ b/src/html.c
@@ -40,6 +40,7 @@
#include "som.h"
#include "tab.h"
#include "version.h"
+#include "mkfile.h"
/* Prototypes. */
static int postopen (struct file_ext *);
@@ -122,6 +123,22 @@ html_close_driver (struct outp_driver *this)
return 1;
}
+
+/* Link the image contained in FILENAME to the
+ HTML stream in file F. */
+static int
+link_image (struct file_ext *f, char *filename)
+{
+ fprintf (f->file,
+ "", filename);
+
+ if (ferror (f->file))
+ return 0;
+
+ return 1;
+}
+
+
/* Generic option types. */
enum
{
@@ -156,7 +173,7 @@ html_option (struct outp_driver *this, const char *key, const struct string *val
break;
case 1:
free (x->file.filename);
- x->file.filename = xstrdup (ds_value (val));
+ x->file.filename = xstrdup (ds_c_str (val));
break;
case string_arg:
{
@@ -168,10 +185,11 @@ html_option (struct outp_driver *this, const char *key, const struct string *val
break;
default:
assert (0);
+ abort ();
}
if (*dest)
free (*dest);
- *dest = xstrdup (ds_value (val));
+ *dest = xstrdup (ds_c_str (val));
}
break;
default:
@@ -391,7 +409,7 @@ html_close_page (struct outp_driver *this)
static void output_tab_table (struct outp_driver *, struct tab_table *);
static void
-html_submit (struct outp_driver *this, struct som_table *s)
+html_submit (struct outp_driver *this, struct som_entity *s)
{
extern struct som_table_class tab_table_class;
struct html_driver_ext *x = this->ext;
@@ -403,10 +421,21 @@ html_submit (struct outp_driver *this, struct som_table *s)
return;
}
- if (s->class == &tab_table_class)
- output_tab_table (this, (struct tab_table *) s->ext);
- else
- assert (0);
+ assert ( s->class == &tab_table_class ) ;
+
+ switch (s->type)
+ {
+ case SOM_TABLE:
+ output_tab_table ( this, (struct tab_table *) s->ext);
+ break;
+ case SOM_CHART:
+ link_image( &x->file, ((struct chart *)s->ext)->filename);
+ break;
+ default:
+ assert(0);
+ break;
+ }
+
}
/* Write string S of length LEN to file F, escaping characters as
@@ -453,7 +482,7 @@ output_tab_table (struct outp_driver *this, struct tab_table *t)
{
fputs ("
", x->file.file); if (!ls_empty_p (t->cc)) - escape_string (x->file.file, ls_value (t->cc), ls_length (t->cc)); + escape_string (x->file.file, ls_c_str (t->cc), ls_length (t->cc)); fputs ("
\n", x->file.file); return; @@ -464,7 +493,7 @@ output_tab_table (struct outp_driver *this, struct tab_table *t) if (!ls_empty_p (&t->title)) { fprintf (x->file.file, "