X-Git-Url: https://code.delx.au/gnu-emacs/blobdiff_plain/b98b1a831bcfc89f038cbb8048c6969d8c73ab28..d703a4dce564ede122f5c307889e4bd0e3f3e75c:/src/charset.c diff --git a/src/charset.c b/src/charset.c index 3ccac8684b..ea1480e806 100644 --- a/src/charset.c +++ b/src/charset.c @@ -1,6 +1,6 @@ /* Basic character set support. -Copyright (C) 2001-2014 Free Software Foundation, Inc. +Copyright (C) 2001-2015 Free Software Foundation, Inc. Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 @@ -66,16 +66,7 @@ struct charset *charset_table; static ptrdiff_t charset_table_size; static int charset_table_used; -Lisp_Object Qcharsetp; - -/* Special charset symbols. */ -Lisp_Object Qascii; -static Lisp_Object Qeight_bit; -static Lisp_Object Qiso_8859_1; -static Lisp_Object Qunicode; -static Lisp_Object Qemacs; - -/* The corresponding charsets. */ +/* Special charsets corresponding to symbols. */ int charset_ascii; int charset_eight_bit; static int charset_iso_8859_1; @@ -88,9 +79,6 @@ int charset_jisx0208_1978; int charset_jisx0208; int charset_ksc5601; -/* Value of charset attribute `charset-iso-plane'. */ -static Lisp_Object Qgl, Qgr; - /* Charset of unibyte characters. */ int charset_unibyte; @@ -101,10 +89,9 @@ Lisp_Object Vcharset_ordered_list; charsets. */ Lisp_Object Vcharset_non_preferred_head; -/* Incremented everytime we change Vcharset_ordered_list. This is - unsigned short so that it fits in Lisp_Int and never matches - -1. */ -unsigned short charset_ordered_list_tick; +/* Incremented every time we change the priority of charsets. + Wraps around. */ +EMACS_UINT charset_ordered_list_tick; /* List of iso-2022 charsets. */ Lisp_Object Viso_2022_charset_list; @@ -485,15 +472,12 @@ load_charset_map_from_file (struct charset *charset, Lisp_Object mapfile, unsigned max_code = CHARSET_MAX_CODE (charset); int fd; FILE *fp; - Lisp_Object suffixes; struct charset_map_entries *head, *entries; int n_entries; - ptrdiff_t count; - - suffixes = scoped_list2 (build_local_string (".map"), - build_local_string (".TXT")); - - count = SPECPDL_INDEX (); + AUTO_STRING (map, ".map"); + AUTO_STRING (txt, ".txt"); + AUTO_LIST2 (suffixes, map, txt); + ptrdiff_t count = SPECPDL_INDEX (); record_unwind_protect_nothing (); specbind (Qfile_name_handler_alist, Qnil); fd = openp (Vcharset_map_path, mapfile, suffixes, NULL, Qnil, false); @@ -1570,7 +1554,7 @@ only `ascii', `eight-bit-control', and `eight-bit-graphic'. */) from_byte = CHAR_TO_BYTE (from); - charsets = make_local_vector (charset_table_used, Qnil); + charsets = Fmake_vector (make_number (charset_table_used), Qnil); while (1) { find_charsets_in_text (BYTE_POS_ADDR (from_byte), stop - from, @@ -1607,7 +1591,7 @@ only `ascii', `eight-bit-control', and `eight-bit-graphic'. */) CHECK_STRING (str); - charsets = make_local_vector (charset_table_used, Qnil); + charsets = Fmake_vector (make_number (charset_table_used), Qnil); find_charsets_in_text (SDATA (str), SCHARS (str), SBYTES (str), charsets, table, STRING_MULTIBYTE (str)); @@ -2348,12 +2332,14 @@ syms_of_charset (void) { DEFSYM (Qcharsetp, "charsetp"); + /* Special charset symbols. */ DEFSYM (Qascii, "ascii"); DEFSYM (Qunicode, "unicode"); DEFSYM (Qemacs, "emacs"); DEFSYM (Qeight_bit, "eight-bit"); DEFSYM (Qiso_8859_1, "iso-8859-1"); + /* Value of charset attribute `charset-iso-plane'. */ DEFSYM (Qgl, "gl"); DEFSYM (Qgr, "gr"); @@ -2366,10 +2352,6 @@ syms_of_charset (void) staticpro (&Vemacs_mule_charset_list); Vemacs_mule_charset_list = Qnil; - /* Don't staticpro them here. It's done in syms_of_fns. */ - QCtest = intern_c_string (":test"); - Qeq = intern_c_string ("eq"); - staticpro (&Vcharset_hash_table); { Lisp_Object args[2];