projects
/
pspp-builds.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Moved the SIGINT handler from casefile.c to main.c
[pspp-builds.git]
/
src
/
postscript.c
diff --git
a/src/postscript.c
b/src/postscript.c
index be8abb5a60bd97025a1909d5bfcce0f107bf7e52..4a2fab0b5848e82f45adec32feb7fb36c5dc8eea 100644
(file)
--- a/
src/postscript.c
+++ b/
src/postscript.c
@@
-23,7
+23,7
@@
#if !NO_POSTSCRIPT
#include <ctype.h>
#if !NO_POSTSCRIPT
#include <ctype.h>
-#include
<assert.h>
+#include
"error.h"
#include <errno.h>
#include <limits.h>
#include <stdlib.h>
#include <errno.h>
#include <limits.h>
#include <stdlib.h>
@@
-287,7
+287,7
@@
static char *quote_ps_string (char *dest, const char *string);
/* Driver initialization. */
static int
/* Driver initialization. */
static int
-ps_open_global (struct outp_class *this
unused
)
+ps_open_global (struct outp_class *this
UNUSED
)
{
init_fonts ();
groff_init ();
{
init_fonts ();
groff_init ();
@@
-295,13
+295,13
@@
ps_open_global (struct outp_class *this unused)
}
static int
}
static int
-ps_close_global (struct outp_class *this
unused
)
+ps_close_global (struct outp_class *this
UNUSED
)
{
return 1;
}
static int *
{
return 1;
}
static int *
-ps_font_sizes (struct outp_class *this
unused
, int *n_valid_sizes)
+ps_font_sizes (struct outp_class *this
UNUSED
, int *n_valid_sizes)
{
/* Allow fonts up to 1" in height. */
static int valid_sizes[] =
{
/* Allow fonts up to 1" in height. */
static int valid_sizes[] =
@@
-494,14
+494,14
@@
ps_close_driver (struct outp_driver *this)
/* font_entry comparison function for hash tables. */
static int
/* font_entry comparison function for hash tables. */
static int
-compare_font_entry (const void *a, const void *b, void *foobar
unused
)
+compare_font_entry (const void *a, const void *b, void *foobar
UNUSED
)
{
return strcmp (((struct font_entry *) a)->dit, ((struct font_entry *) b)->dit);
}
/* font_entry hash function for hash tables. */
static unsigned
{
return strcmp (((struct font_entry *) a)->dit, ((struct font_entry *) b)->dit);
}
/* font_entry hash function for hash tables. */
static unsigned
-hash_font_entry (const void *fe_, void *foobar
unused
)
+hash_font_entry (const void *fe_, void *foobar
UNUSED
)
{
const struct font_entry *fe = fe_;
return hsh_hash_string (fe->dit);
{
const struct font_entry *fe = fe_;
return hsh_hash_string (fe->dit);
@@
-509,7
+509,7
@@
hash_font_entry (const void *fe_, void *foobar unused)
/* font_entry destructor function for hash tables. */
static void
/* font_entry destructor function for hash tables. */
static void
-free_font_entry (void *pa, void *foo
unused
)
+free_font_entry (void *pa, void *foo
UNUSED
)
{
struct font_entry *a = pa;
free (a->dit);
{
struct font_entry *a = pa;
free (a->dit);
@@
-567,7
+567,7
@@
ps_option (struct outp_driver *this, const char *key, const struct string *val)
{
struct ps_driver_ext *x = this->ext;
int cat, subcat;
{
struct ps_driver_ext *x = this->ext;
int cat, subcat;
- char *value = ds_
value
(val);
+ char *value = ds_
c_str
(val);
cat = outp_match_keyword (key, option_tab, &option_info, &subcat);
cat = outp_match_keyword (key, option_tab, &option_info, &subcat);
@@
-661,6
+661,7
@@
ps_option (struct outp_driver *this, const char *key, const struct string *val)
break;
default:
assert (0);
break;
default:
assert (0);
+ abort ();
}
if (setting)
x->output_options |= mask;
}
if (setting)
x->output_options |= mask;
@@
-762,6
+763,7
@@
ps_option (struct outp_driver *this, const char *key, const struct string *val)
break;
default:
assert (0);
break;
default:
assert (0);
+ abort ();
}
if (*dest)
free (*dest);
}
if (*dest)
free (*dest);
@@
-856,7
+858,7
@@
find_ps_file (struct outp_driver *this, const char *name)
/* Hash table comparison function for ps_encoding's. */
static int
/* Hash table comparison function for ps_encoding's. */
static int
-compare_ps_encoding (const void *pa, const void *pb, void *foo
unused
)
+compare_ps_encoding (const void *pa, const void *pb, void *foo
UNUSED
)
{
const struct ps_encoding *a = pa;
const struct ps_encoding *b = pb;
{
const struct ps_encoding *a = pa;
const struct ps_encoding *b = pb;
@@
-866,7
+868,7
@@
compare_ps_encoding (const void *pa, const void *pb, void *foo unused)
/* Hash table hash function for ps_encoding's. */
static unsigned
/* Hash table hash function for ps_encoding's. */
static unsigned
-hash_ps_encoding (const void *pa, void *foo
unused
)
+hash_ps_encoding (const void *pa, void *foo
UNUSED
)
{
const struct ps_encoding *a = pa;
{
const struct ps_encoding *a = pa;
@@
-875,7
+877,7
@@
hash_ps_encoding (const void *pa, void *foo unused)
/* Hash table free function for ps_encoding's. */
static void
/* Hash table free function for ps_encoding's. */
static void
-free_ps_encoding (void *pa, void *foo
unused
)
+free_ps_encoding (void *pa, void *foo
UNUSED
)
{
struct ps_encoding *a = pa;
{
struct ps_encoding *a = pa;
@@
-896,8
+898,8
@@
output_encodings (struct outp_driver *this)
struct string line, buf;
struct string line, buf;
- ds_init (
NULL,
&line, 128);
- ds_init (
NULL,
&buf, 128);
+ ds_init (&line, 128);
+ ds_init (&buf, 128);
for (pe = hsh_first (x->encodings, &iter); pe != NULL;
pe = hsh_next (x->encodings, &iter))
{
for (pe = hsh_first (x->encodings, &iter); pe != NULL;
pe = hsh_next (x->encodings, &iter))
{
@@
-944,7
+946,7
@@
output_encodings (struct outp_driver *this)
if (buf.length == 0)
continue;
if (buf.length == 0)
continue;
- pschar = strtok_r (ds_
value
(&buf), " \t\r\n", &sp);
+ pschar = strtok_r (ds_
c_str
(&buf), " \t\r\n", &sp);
code = strtok_r (NULL, " \t\r\n", &sp);
if (*pschar == 0 || *code == 0)
continue;
code = strtok_r (NULL, " \t\r\n", &sp);
if (*pschar == 0 || *code == 0)
continue;
@@
-982,14
+984,14
@@
output_encodings (struct outp_driver *this)
if (ds_length (&line) + strlen (temp) > 70)
{
if (ds_length (&line) + strlen (temp) > 70)
{
- ds_
concat
(&line, x->eol);
- fputs (ds_
value
(&line), x->file.file);
+ ds_
puts
(&line, x->eol);
+ fputs (ds_
c_str
(&line), x->file.file);
ds_clear (&line);
}
ds_clear (&line);
}
- ds_
concat
(&line, temp);
+ ds_
puts
(&line, temp);
}
}
- ds_
concat
(&line, x->eol);
- fputs (ds_
value
(&line), x->file.file);
+ ds_
puts
(&line, x->eol);
+ fputs (ds_
c_str
(&line), x->file.file);
if (fclose (f) == EOF)
msg (MW, _("PostScript driver: Error closing encoding file `%s'."),
if (fclose (f) == EOF)
msg (MW, _("PostScript driver: Error closing encoding file `%s'."),
@@
-1102,12
+1104,10
@@
read_ps_encodings (struct outp_driver *this)
where.line_number = 0;
err_push_file_locator (&where);
where.line_number = 0;
err_push_file_locator (&where);
- ds_init (
NULL,
&line, 128);
+ ds_init (&line, 128);
for (;;)
{
for (;;)
{
- char *bp;
-
if (!ds_get_config_line (f, &line, &where))
{
if (ferror (f))
if (!ds_get_config_line (f, &line, &where))
{
if (ferror (f))
@@
-1115,7
+1115,7
@@
read_ps_encodings (struct outp_driver *this)
break;
}
break;
}
- add_encoding (this,
bp
);
+ add_encoding (this,
line.string
);
}
ds_destroy (&line);
}
ds_destroy (&line);
@@
-1726,7
+1726,7
@@
int_2_compare (const void *a_, const void *b_)
/* Hash table comparison function for cached lines. */
static int
/* Hash table comparison function for cached lines. */
static int
-compare_line (const void *a_, const void *b_, void *foo
unused
)
+compare_line (const void *a_, const void *b_, void *foo
UNUSED
)
{
const struct line_form *a = a_;
const struct line_form *b = b_;
{
const struct line_form *a = a_;
const struct line_form *b = b_;
@@
-1736,7
+1736,7
@@
compare_line (const void *a_, const void *b_, void *foo unused)
/* Hash table hash function for cached lines. */
static unsigned
/* Hash table hash function for cached lines. */
static unsigned
-hash_line (const void *pa, void *foo
unused
)
+hash_line (const void *pa, void *foo
UNUSED
)
{
const struct line_form *a = pa;
{
const struct line_form *a = pa;
@@
-1745,7
+1745,7
@@
hash_line (const void *pa, void *foo unused)
/* Hash table free function for cached lines. */
static void
/* Hash table free function for cached lines. */
static void
-free_line (void *pa, void *foo
unused
)
+free_line (void *pa, void *foo
UNUSED
)
{
free (pa);
}
{
free (pa);
}
@@
-1898,7
+1898,7
@@
line (struct outp_driver *this, int type, int ind, int dep1, int dep2)
static void
ps_line_horz (struct outp_driver *this, const struct rect *r,
static void
ps_line_horz (struct outp_driver *this, const struct rect *r,
- const struct color *c
unused
, int style)
+ const struct color *c
UNUSED
, int style)
{
/* Must match output.h:OUTP_L_*. */
static const int types[OUTP_L_COUNT] =
{
/* Must match output.h:OUTP_L_*. */
static const int types[OUTP_L_COUNT] =
@@
-1915,7
+1915,7
@@
ps_line_horz (struct outp_driver *this, const struct rect *r,
static void
ps_line_vert (struct outp_driver *this, const struct rect *r,
static void
ps_line_vert (struct outp_driver *this, const struct rect *r,
- const struct color *c
unused
, int style)
+ const struct color *c
UNUSED
, int style)
{
/* Must match output.h:OUTP_L_*. */
static const int types[OUTP_L_COUNT] =
{
/* Must match output.h:OUTP_L_*. */
static const int types[OUTP_L_COUNT] =
@@
-1937,7
+1937,7
@@
ps_line_vert (struct outp_driver *this, const struct rect *r,
static void
ps_line_intersection (struct outp_driver *this, const struct rect *r,
static void
ps_line_intersection (struct outp_driver *this, const struct rect *r,
- const struct color *c
unused
,
+ const struct color *c
UNUSED
,
const struct outp_styles *style)
{
struct ps_driver_ext *ext = this->ext;
const struct outp_styles *style)
{
struct ps_driver_ext *ext = this->ext;
@@
-2018,25
+2018,25
@@
ps_line_intersection (struct outp_driver *this, const struct rect *r,
}
static void
}
static void
-ps_box (struct outp_driver *this
unused, const struct rect *r unused
,
- const struct color *bord
unused, const struct color *fill unused
)
+ps_box (struct outp_driver *this
UNUSED, const struct rect *r UNUSED
,
+ const struct color *bord
UNUSED, const struct color *fill UNUSED
)
{
assert (this->driver_open && this->page_open);
}
static void
{
assert (this->driver_open && this->page_open);
}
static void
-ps_polyline_begin (struct outp_driver *this
unused
,
- const struct color *c
unused
)
+ps_polyline_begin (struct outp_driver *this
UNUSED
,
+ const struct color *c
UNUSED
)
{
assert (this->driver_open && this->page_open);
}
static void
{
assert (this->driver_open && this->page_open);
}
static void
-ps_polyline_point (struct outp_driver *this
unused, int x unused, int y unused
)
+ps_polyline_point (struct outp_driver *this
UNUSED, int x UNUSED, int y UNUSED
)
{
assert (this->driver_open && this->page_open);
}
static void
{
assert (this->driver_open && this->page_open);
}
static void
-ps_polyline_end (struct outp_driver *this
unused
)
+ps_polyline_end (struct outp_driver *this
UNUSED
)
{
assert (this->driver_open && this->page_open);
}
{
assert (this->driver_open && this->page_open);
}
@@
-2270,7
+2270,7
@@
struct output_char
/* Hash table comparison function for ps_combo structs. */
static int
/* Hash table comparison function for ps_combo structs. */
static int
-compare_ps_combo (const void *pa, const void *pb, void *foo
unused
)
+compare_ps_combo (const void *pa, const void *pb, void *foo
UNUSED
)
{
const struct ps_font_combo *a = pa;
const struct ps_font_combo *b = pb;
{
const struct ps_font_combo *a = pa;
const struct ps_font_combo *b = pb;
@@
-2280,7
+2280,7
@@
compare_ps_combo (const void *pa, const void *pb, void *foo unused)
/* Hash table hash function for ps_combo structs. */
static unsigned
/* Hash table hash function for ps_combo structs. */
static unsigned
-hash_ps_combo (const void *pa, void *foo
unused
)
+hash_ps_combo (const void *pa, void *foo
UNUSED
)
{
const struct ps_font_combo *a = pa;
unsigned name_hash = hsh_hash_string (a->font->font->internal_name);
{
const struct ps_font_combo *a = pa;
unsigned name_hash = hsh_hash_string (a->font->font->internal_name);
@@
-2289,7
+2289,7
@@
hash_ps_combo (const void *pa, void *foo unused)
/* Hash table free function for ps_combo structs. */
static void
/* Hash table free function for ps_combo structs. */
static void
-free_ps_combo (void *a, void *foo
unused
)
+free_ps_combo (void *a, void *foo
UNUSED
)
{
free (a);
}
{
free (a);
}
@@
-2388,7
+2388,7
@@
switch_font (struct outp_driver *this, const struct output_char *cp)
static void
write_text (struct outp_driver *this,
const struct output_char *cp, const struct output_char *end,
static void
write_text (struct outp_driver *this,
const struct output_char *cp, const struct output_char *end,
- struct outp_text *t, int width
unused
, int width_left)
+ struct outp_text *t, int width
UNUSED
, int width_left)
{
struct ps_driver_ext *ext = this->ext;
int ofs;
{
struct ps_driver_ext *ext = this->ext;
int ofs;
@@
-2410,6
+2410,9
@@
write_text (struct outp_driver *this,
case OUTP_T_JUST_CENTER:
ofs = width_left / 2;
break;
case OUTP_T_JUST_CENTER:
ofs = width_left / 2;
break;
+ default:
+ assert (0);
+ abort ();
}
lp = line;
}
lp = line;
@@
-2540,18
+2543,23
@@
text (struct outp_driver *this, struct outp_text *t, int draw)
buf_loc = buf;
assert (!ls_null_p (&t->s));
buf_loc = buf;
assert (!ls_null_p (&t->s));
- cp = ls_
value
(&t->s);
+ cp = ls_
c_str
(&t->s);
end = ls_end (&t->s);
if (draw)
{
x = t->x;
y = t->y;
}
end = ls_end (&t->s);
if (draw)
{
x = t->x;
y = t->y;
}
+ else
+ x = y = 0;
width = width_left = (t->options & OUTP_T_HORZ) ? t->h : INT_MAX;
height_left = (t->options & OUTP_T_VERT) ? t->v : INT_MAX;
max_height = 0;
prev_char = -1;
space_char = NULL;
width = width_left = (t->options & OUTP_T_HORZ) ? t->h : INT_MAX;
height_left = (t->options & OUTP_T_VERT) ? t->v : INT_MAX;
max_height = 0;
prev_char = -1;
space_char = NULL;
+ space_buf_loc = NULL;
+ space_width_left = 0;
+
if (!width || !height_left)
goto exit;
if (!width || !height_left)
goto exit;
@@
-2566,9
+2574,12
@@
text (struct outp_driver *this, struct outp_text *t, int draw)
/* Set char_name to the name of the character or ligature at
*cp. */
/* Set char_name to the name of the character or ligature at
*cp. */
+ local_char_name[0] = *cp;
+ char_name = local_char_name;
if (ext->current->font->ligatures && *cp == 'f')
{
int lig = 0;
if (ext->current->font->ligatures && *cp == 'f')
{
int lig = 0;
+ char_name = NULL;
if (cp < end - 1)
switch (cp[1])
if (cp < end - 1)
switch (cp[1])
@@
-2596,11
+2607,9
@@
text (struct outp_driver *this, struct outp_text *t, int draw)
}
if ((lig & ext->current->font->ligatures) == 0)
{
}
if ((lig & ext->current->font->ligatures) == 0)
{
- local_char_name[0] = *cp
++;
/* 'f' */
+ local_char_name[0] = *cp
;
/* 'f' */
char_name = local_char_name;
}
char_name = local_char_name;
}
- else
- cp += strlen (char_name);
}
else if (*cp == '\n')
{
}
else if (*cp == '\n')
{
@@
-2623,11
+2632,7
@@
text (struct outp_driver *this, struct outp_text *t, int draw)
set separate to 1. */
continue;
}
set separate to 1. */
continue;
}
- else
- {
- local_char_name[0] = *cp++;
- char_name = local_char_name;
- }
+ cp += strlen (char_name);
/* Figure out what size this character is, and what kern
adjustment we need. */
/* Figure out what size this character is, and what kern
adjustment we need. */
@@
-2787,7
+2792,7
@@
static struct hsh_table *ps_fonts;
/* Hash table comparison function for filename2font structs. */
static int
/* Hash table comparison function for filename2font structs. */
static int
-compare_filename2font (const void *a, const void *b, void *param
unused
)
+compare_filename2font (const void *a, const void *b, void *param
UNUSED
)
{
return strcmp (((struct filename2font *) a)->filename,
((struct filename2font *) b)->filename);
{
return strcmp (((struct filename2font *) a)->filename,
((struct filename2font *) b)->filename);
@@
-2795,7
+2800,7
@@
compare_filename2font (const void *a, const void *b, void *param unused)
/* Hash table hash function for filename2font structs. */
static unsigned
/* Hash table hash function for filename2font structs. */
static unsigned
-hash_filename2font (const void *f2f_, void *param
unused
)
+hash_filename2font (const void *f2f_, void *param
UNUSED
)
{
const struct filename2font *f2f = f2f_;
return hsh_hash_string (f2f->filename);
{
const struct filename2font *f2f = f2f_;
return hsh_hash_string (f2f->filename);