.TITLE DEMIME_TBL - A simple QP/B64 to ASCII decoder .IDENT /X-1/ ;++ ; FACILITY: Unassigned ; ; FUNCTIONAL DESCRIPTION: ; ; This module contains a parser table used by LIB$TPARSE routine to ; performs a QP/B64 to ASCII decoding. ; ; ENVIRONMENT: VMS ; ; AUTHOR: Ruslan R. Laishev, CREATION-DATE: 28-JUL-2003 ; ; MODIFIED BY: ; ;-- ; .PSECT IMPURE,WRT,NOEXE $TPADEF ;TParse stuff .EXTRN DEMIME__SET_CS_ENCODE .EXTRN DEMIME__SAVECHAR CR = 13 LF = 10 CS$UNDEF = 0 CS$ISOCYR = 1 CS$KOI8R = 2 CS$CP1251 = 3 CS$UTF8 = 4 ENCODE$UNDEF = 0 ENCODE$QP = 16 ENCODE$B64 = 32 .SBTTL Parser State Table $INIT_STATE UFD_STATE,UFD_KEY $STATE START $TRAN '=', PREFIX $TRAN TPA$_ANY, START,DEMIME__SAVECHAR $TRAN TPA$_EOS, TPA$_EXIT $STATE PREFIX $TRAN '?', CHARSET $TRAN TPA$_ANY, START,DEMIME__SAVECHAR $TRAN TPA$_EOS, TPA$_EXIT ;++ ; Character set code: KOI8-R, ISO8859-5, Windows CP1251, UTF-8 ;-- $STATE CHARSET $TRAN 'ISO8859', CS_ISOCYR_5 $TRAN 'iso8859', CS_ISOCYR_5 $TRAN 'ISO', CS_ISOCYR_1 $TRAN 'iso', CS_ISOCYR_1 $TRAN 'koi8', CS_KOI8R_1 $TRAN 'KOI8', CS_KOI8R_1 $TRAN 'WINDOWS', CS_CP1251_1 $TRAN 'windows', CS_CP1251_1 $TRAN 'Windows', CS_CP1251_1 $TRAN 'UTF', CS_UTF8_1 $TRAN 'utf', CS_UTF8_1 $TRAN TPA$_ANY, TPA$_EXIT $STATE CS_UTF8_1 $TRAN '-' $STATE $TRAN '8', CS_UTF8 $TRAN TPA$_ANY, TPA$_EXIT $STATE CS_ISOCYR_1 $TRAN '-' $STATE $TRAN '8859', CS_ISOCYR_5 $TRAN TPA$_ANY, TPA$_EXIT $STATE CS_ISOCYR_5 $TRAN '-' $STATE $TRAN '5', CS_ISOCYR $TRAN TPA$_ANY, TPA$_EXIT $STATE CS_KOI8R_1 $TRAN '-' $STATE $TRAN 'r', CS_KOI8R $TRAN 'R', CS_KOI8R $TRAN TPA$_ANY, TPA$_EXIT $STATE CS_CP1251_1 $TRAN '-' $STATE $TRAN '1251', CS_CP1251 $TRAN TPA$_ANY,TPA$_EXIT $STATE CS_UTF8 $TRAN '?', ENCODING,DEMIME__SET_CS_ENCODE,,,CS$UTF8 $TRAN TPA$_ANY, TPA$_EXIT $STATE CS_ISOCYR $TRAN '?', ENCODING,DEMIME__SET_CS_ENCODE,,,CS$ISOCYR $TRAN TPA$_ANY, TPA$_EXIT $STATE CS_KOI8R $TRAN '?', ENCODING,DEMIME__SET_CS_ENCODE,,,CS$KOI8R $TRAN TPA$_ANY, TPA$_EXIT $STATE CS_CP1251 $TRAN '?', ENCODING,DEMIME__SET_CS_ENCODE,,,CS$CP1251 $TRAN TPA$_ANY, TPA$_EXIT ;++ ; Encodind type: Quoted-Printable, Base64 ;-- $STATE ENCODING $TRAN 'Q', ENCODE_QP $TRAN 'q', ENCODE_QP $TRAN 'B', ENCODE_B64 $TRAN 'b', ENCODE_B64 $TRAN TPA$_ANY, TPA$_EXIT $STATE ENCODE_QP $TRAN '?', TPA$_EXIT,DEMIME__SET_CS_ENCODE,,,ENCODE$QP $TRAN TPA$_ANY, TPA$_EXIT $STATE ENCODE_B64 $TRAN '?', TPA$_EXIT,DEMIME__SET_CS_ENCODE,,,ENCODE$B64 $TRAN TPA$_ANY, TPA$_EXIT $END_STATE .END