X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Fpostscript.c;h=4a2fab0b5848e82f45adec32feb7fb36c5dc8eea;hb=35abdb30d26f0bfb972c1712ee887a0f0fff6b97;hp=be8abb5a60bd97025a1909d5bfcce0f107bf7e52;hpb=6bc566408707e018674d1776d835c78368b6b5a3;p=pspp-builds.git diff --git a/src/postscript.c b/src/postscript.c index be8abb5a..4a2fab0b 100644 --- a/src/postscript.c +++ b/src/postscript.c @@ -23,7 +23,7 @@ #if !NO_POSTSCRIPT #include -#include +#include "error.h" #include #include #include @@ -287,7 +287,7 @@ static char *quote_ps_string (char *dest, const char *string); /* Driver initialization. */ static int -ps_open_global (struct outp_class *this unused) +ps_open_global (struct outp_class *this UNUSED) { init_fonts (); groff_init (); @@ -295,13 +295,13 @@ ps_open_global (struct outp_class *this unused) } static int -ps_close_global (struct outp_class *this unused) +ps_close_global (struct outp_class *this UNUSED) { 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[] = @@ -494,14 +494,14 @@ ps_close_driver (struct outp_driver *this) /* 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 -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); @@ -509,7 +509,7 @@ hash_font_entry (const void *fe_, void *foobar unused) /* 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); @@ -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; - char *value = ds_value (val); + char *value = ds_c_str (val); 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); + abort (); } 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); + abort (); } 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 -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; @@ -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_ps_encoding (const void *pa, void *foo unused) +hash_ps_encoding (const void *pa, void *foo UNUSED) { 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 -free_ps_encoding (void *pa, void *foo unused) +free_ps_encoding (void *pa, void *foo UNUSED) { struct ps_encoding *a = pa; @@ -896,8 +898,8 @@ output_encodings (struct outp_driver *this) 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)) { @@ -944,7 +946,7 @@ output_encodings (struct outp_driver *this) 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; @@ -982,14 +984,14 @@ output_encodings (struct outp_driver *this) 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_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'."), @@ -1102,12 +1104,10 @@ read_ps_encodings (struct outp_driver *this) where.line_number = 0; err_push_file_locator (&where); - ds_init (NULL, &line, 128); + ds_init (&line, 128); for (;;) { - char *bp; - if (!ds_get_config_line (f, &line, &where)) { if (ferror (f)) @@ -1115,7 +1115,7 @@ read_ps_encodings (struct outp_driver *this) break; } - add_encoding (this, bp); + add_encoding (this, line.string); } 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 -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_; @@ -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_line (const void *pa, void *foo unused) +hash_line (const void *pa, void *foo UNUSED) { 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 -free_line (void *pa, void *foo unused) +free_line (void *pa, void *foo UNUSED) { 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, - 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] = @@ -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, - 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] = @@ -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, - const struct color *c unused, + const struct color *c UNUSED, 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 -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 -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 -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 -ps_polyline_end (struct outp_driver *this unused) +ps_polyline_end (struct outp_driver *this UNUSED) { assert (this->driver_open && this->page_open); } @@ -2270,7 +2270,7 @@ struct output_char /* 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; @@ -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_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); @@ -2289,7 +2289,7 @@ hash_ps_combo (const void *pa, void *foo unused) /* 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); } @@ -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, - 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; @@ -2410,6 +2410,9 @@ write_text (struct outp_driver *this, case OUTP_T_JUST_CENTER: ofs = width_left / 2; break; + default: + assert (0); + abort (); } 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)); - cp = ls_value (&t->s); + cp = ls_c_str (&t->s); 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; + space_buf_loc = NULL; + space_width_left = 0; + 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. */ + local_char_name[0] = *cp; + char_name = local_char_name; if (ext->current->font->ligatures && *cp == 'f') { int lig = 0; + char_name = NULL; 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) { - local_char_name[0] = *cp++; /* 'f' */ + local_char_name[0] = *cp; /* 'f' */ char_name = local_char_name; } - else - cp += strlen (char_name); } else if (*cp == '\n') { @@ -2623,11 +2632,7 @@ text (struct outp_driver *this, struct outp_text *t, int draw) 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. */ @@ -2787,7 +2792,7 @@ static struct hsh_table *ps_fonts; /* 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); @@ -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_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);