X-Git-Url: http://git.hcoop.net/bpt/emacs.git/blobdiff_plain/c73bd236f75b742ad4642ec94798987ae6e3e1e8..6340c70eb32758be2c3ca9059a3fb75bb9a79e72:/src/ccl.c
diff --git a/src/ccl.c b/src/ccl.c
index d51743c243..f110291ac7 100644
--- a/src/ccl.c
+++ b/src/ccl.c
@@ -1,8 +1,8 @@
/* CCL (Code Conversion Language) interpreter.
Copyright (C) 2001, 2002, 2003, 2004, 2005,
- 2006, 2007 Free Software Foundation, Inc.
+ 2006, 2007, 2008, 2009 Free Software Foundation, Inc.
Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
- 2005, 2006, 2007
+ 2005, 2006, 2007, 2008, 2009
National Institute of Advanced Industrial Science and Technology (AIST)
Registration Number H14PRO021
Copyright (C) 2003
@@ -11,10 +11,10 @@
This file is part of GNU Emacs.
-GNU Emacs is free software; you can redistribute it and/or modify
+GNU Emacs is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 3, or (at your option)
-any later version.
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
GNU Emacs is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
@@ -22,9 +22,7 @@ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
-along with GNU Emacs; see the file COPYING. If not, write to
-the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
-Boston, MA 02110-1301, USA. */
+along with GNU Emacs. If not, see . */
#include
@@ -1745,7 +1743,8 @@ ccl_driver (ccl, source, destination, src_size, dst_size, charset_list)
break;
case CCL_STAT_QUIT:
- sprintf(msg, "\nCCL: Quited.");
+ if (! ccl->quit_silently)
+ sprintf(msg, "\nCCL: Quited.");
break;
default:
@@ -1825,7 +1824,7 @@ resolve_symbol_ccl_program (ccl)
val = Fget (XCAR (contents), XCDR (contents));
if (NATNUMP (val))
- AREF (result, i) = val;
+ ASET (result, i, val);
else
unresolved = 1;
continue;
@@ -1840,17 +1839,17 @@ resolve_symbol_ccl_program (ccl)
val = Fget (contents, Qtranslation_table_id);
if (NATNUMP (val))
- AREF (result, i) = val;
+ ASET (result, i, val);
else
{
val = Fget (contents, Qcode_conversion_map_id);
if (NATNUMP (val))
- AREF (result, i) = val;
+ ASET (result, i, val);
else
{
val = Fget (contents, Qccl_program_idx);
if (NATNUMP (val))
- AREF (result, i) = val;
+ ASET (result, i, val);
else
unresolved = 1;
}
@@ -1900,8 +1899,8 @@ ccl_get_compiled_code (ccl_prog, idx)
val = resolve_symbol_ccl_program (AREF (slot, 1));
if (! VECTORP (val))
return Qnil;
- AREF (slot, 1) = val;
- AREF (slot, 2) = Qt;
+ ASET (slot, 1, val);
+ ASET (slot, 2, Qt);
}
return AREF (slot, 1);
}
@@ -1948,6 +1947,7 @@ setup_ccl_program (ccl, ccl_prog)
ccl->stack_idx = 0;
ccl->suppress_error = 0;
ccl->eight_bit_control = 0;
+ ccl->quit_silently = 0;
return 0;
}
@@ -2039,7 +2039,7 @@ programs. */)
error ("Error in CCL program at %dth code", ccl.ic);
for (i = 0; i < 8; i++)
- XSETINT (AREF (reg, i), ccl.reg[i]);
+ ASET (reg, i, make_number (ccl.reg[i]));
return Qnil;
}
@@ -2097,7 +2097,7 @@ usage: (ccl-execute-on-string CCL-PROGRAM STATUS STRING &optional CONTINUE UNIBY
for (i = 0; i < 8; i++)
{
if (NILP (AREF (status, i)))
- XSETINT (AREF (status, i), 0);
+ ASET (status, i, make_number (0));
if (INTEGERP (AREF (status, i)))
ccl.reg[i] = XINT (AREF (status, i));
}
@@ -2245,16 +2245,8 @@ Return index number of the registered CCL program. */)
}
if (idx == len)
- {
- /* Extend the table. */
- Lisp_Object new_table;
- int j;
-
- new_table = Fmake_vector (make_number (len * 2), Qnil);
- for (j = 0; j < len; j++)
- ASET (new_table, j, AREF (Vccl_program_table, j));
- Vccl_program_table = new_table;
- }
+ /* Extend the table. */
+ Vccl_program_table = larger_vector (Vccl_program_table, len * 2, Qnil);
{
Lisp_Object elt;
@@ -2313,20 +2305,13 @@ Return index number of the registered map. */)
}
if (i == len)
- {
- Lisp_Object new_vector = Fmake_vector (make_number (len * 2), Qnil);
- int j;
-
- for (j = 0; j < len; j++)
- AREF (new_vector, j)
- = AREF (Vcode_conversion_map_vector, j);
- Vcode_conversion_map_vector = new_vector;
- }
+ Vcode_conversion_map_vector = larger_vector (Vcode_conversion_map_vector,
+ len * 2, Qnil);
index = make_number (i);
Fput (symbol, Qcode_conversion_map, map);
Fput (symbol, Qcode_conversion_map_id, index);
- AREF (Vcode_conversion_map_vector, i) = Fcons (symbol, map);
+ ASET (Vcode_conversion_map_vector, i, Fcons (symbol, map));
return index;
}