aboutsummaryrefslogtreecommitdiffstats
path: root/src/coding.c
diff options
context:
space:
mode:
authorKenichi Handa1998-04-20 02:14:57 +0000
committerKenichi Handa1998-04-20 02:14:57 +0000
commitd21ca14d4822593ae4a2a11fd75d940fbf057c3d (patch)
treed5701630f6e899a206f070e52686d2e1aeb045b9 /src/coding.c
parent7fbf766f70cf47f30a63191a63b259f0b69081e6 (diff)
downloademacs-d21ca14d4822593ae4a2a11fd75d940fbf057c3d.tar.gz
emacs-d21ca14d4822593ae4a2a11fd75d940fbf057c3d.zip
(setup_coding_system): For a type 4 coding system,
FLAGS member of coding spec is a cons of CCL program symbols.
Diffstat (limited to 'src/coding.c')
-rw-r--r--src/coding.c14
1 files changed, 10 insertions, 4 deletions
diff --git a/src/coding.c b/src/coding.c
index 4b70b259314..4dc4f68143f 100644
--- a/src/coding.c
+++ b/src/coding.c
@@ -3045,12 +3045,18 @@ setup_coding_system (coding_system, coding)
3045 |= CODING_REQUIRE_DECODING_MASK | CODING_REQUIRE_ENCODING_MASK; 3045 |= CODING_REQUIRE_DECODING_MASK | CODING_REQUIRE_ENCODING_MASK;
3046 { 3046 {
3047 Lisp_Object val = XVECTOR (coding_spec)->contents[4]; 3047 Lisp_Object val = XVECTOR (coding_spec)->contents[4];
3048 Lisp_Object decoder, encoder;
3049
3048 if (CONSP (val) 3050 if (CONSP (val)
3049 && VECTORP (XCONS (val)->car) 3051 && SYMBOLP (XCONS (val)->car)
3050 && VECTORP (XCONS (val)->cdr)) 3052 && !NILP (decoder = Fget (XCONS (val)->car, Qccl_program_idx))
3053 && (decoder = Fcdr (Faref (Vccl_program_table, decoder)))
3054 && SYMBOLP (XCONS (val)->cdr)
3055 && !NILP (encoder = Fget (XCONS (val)->cdr, Qccl_program_idx))
3056 && (encoder = Fcdr (Faref (Vccl_program_table, encoder))))
3051 { 3057 {
3052 setup_ccl_program (&(coding->spec.ccl.decoder), XCONS (val)->car); 3058 setup_ccl_program (&(coding->spec.ccl.decoder), decoder);
3053 setup_ccl_program (&(coding->spec.ccl.encoder), XCONS (val)->cdr); 3059 setup_ccl_program (&(coding->spec.ccl.encoder), encoder);
3054 } 3060 }
3055 else 3061 else
3056 goto label_invalid_coding_system; 3062 goto label_invalid_coding_system;