X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Fgroff-font.c;h=331da33d38dbd07ec4239f35e2a07b05cadc066a;hb=9b4b94c6d3b5fd98bf396e23d015380b87d2d296;hp=835869af8e2a12bda4a92a4d9e404d16355cee2c;hpb=b18e1b9c95a478d434e9fcef9d8579d0b96b9a8d;p=pspp-builds.git diff --git a/src/groff-font.c b/src/groff-font.c index 835869af..331da33d 100644 --- a/src/groff-font.c +++ b/src/groff-font.c @@ -18,7 +18,8 @@ 02111-1307, USA. */ #include -#include +#include "font.h" +#include "error.h" #include #include #include @@ -27,7 +28,6 @@ #include "alloc.h" #include "error.h" #include "filename.h" -#include "font.h" #include "hash.h" #include "pool.h" #include "str.h" @@ -38,7 +38,7 @@ int font_number_to_index (int); int space_index; static int font_msg (int, const char *,...) - __attribute__ ((format (printf, 2, 3))); + PRINTF_FORMAT (2, 3); static void scan_badchars (char *, int); static void dup_char_metric (struct font_desc * font, int dest, int src); static void add_char_metric (struct font_desc * font, struct char_metrics *metrics, @@ -92,7 +92,7 @@ groff_read_font (const char *fn) char *key; /* 0=kernpairs section, 1=charset section. */ - int charset; + int charset = 0; /* Index for previous line. */ int prev_index = -1; @@ -100,7 +100,7 @@ groff_read_font (const char *fn) /* Current location in file, used for error reporting. */ struct file_locator where; -#if unix +#ifdef unix fn = fn_tilde_expand (fn); #endif @@ -355,7 +355,7 @@ groff_read_font (const char *fn) goto file_lossage; } free (line); -#if unix +#ifdef unix free ((char *) fn); #endif @@ -381,7 +381,7 @@ lose: if (f != NULL) fclose (f); pool_destroy (font_pool); -#if unix +#ifdef unix free ((char *) fn); #endif err_pop_file_locator (&where); @@ -600,22 +600,26 @@ add_kern (struct font_desc *font, int ch1, int ch2, int adjust) for (i = 0; i < font->kern_size; i++) font->kern[i].ch1 = -1; - for (i = 0; i < old_kern_size; i++) - { - if (old_kern[i].ch1 == -1) - continue; - - j = hash_kern (old_kern[i].ch1, old_kern[i].ch2) % font->kern_size; - while (font->kern[j].ch1 != -1) - if (0 == j--) - j = font->kern_size - 1; - font->kern[j] = old_kern[i]; - } if (old_kern) - pool_free (font->owner, old_kern); + { + for (i = 0; i < old_kern_size; i++) + { + if (old_kern[i].ch1 == -1) + continue; + + j = (hash_kern (old_kern[i].ch1, old_kern[i].ch2) + & (font->kern_size - 1)); + while (font->kern[j].ch1 != -1) + if (0 == j--) + j = font->kern_size - 1; + font->kern[j] = old_kern[i]; + } + pool_free (font->owner, old_kern); + } } - for (i = hash_kern (ch1, ch2) % font->kern_size; font->kern[i].ch1 != -1;) + for (i = hash_kern (ch1, ch2) & (font->kern_size - 1); + font->kern[i].ch1 != -1; ) if (0 == i--) i = font->kern_size - 1; font->kern[i].ch1 = ch1; @@ -960,7 +964,8 @@ font_get_kern_adjust (const struct font_desc *font, int ch1, int ch2) if (!font->kern) return 0; - for (i = hash_kern (ch1, ch2) % font->kern_size; font->kern[i].ch1 != -1;) + for (i = hash_kern (ch1, ch2) & (font->kern_size - 1); + font->kern[i].ch1 != -1;) { if (font->kern[i].ch1 == ch1 && font->kern[i].ch2 == ch2) return font->kern[i].adjust;