diff --git a/mozilla/intl/uconv/public/uconvutil.h b/mozilla/intl/uconv/public/uconvutil.h index 676e74519d9..53c64e77881 100644 --- a/mozilla/intl/uconv/public/uconvutil.h +++ b/mozilla/intl/uconv/public/uconvutil.h @@ -48,6 +48,7 @@ typedef enum { u2BytesGRPrefix8EA5Charset, u2BytesGRPrefix8EA6Charset, u2BytesGRPrefix8EA7Charset, + u1ByteGLCharset, uNumOfCharsetType } uScanClassID; diff --git a/mozilla/intl/uconv/src/ugen.c b/mozilla/intl/uconv/src/ugen.c index 9d4c63416a2..5aafa30453c 100644 --- a/mozilla/intl/uconv/src/ugen.c +++ b/mozilla/intl/uconv/src/ugen.c @@ -163,6 +163,14 @@ PRIVATE PRBool uCheckAndGen2ByteGRPrefix8EA7( PRUint32 outbuflen, PRUint32* outlen ); +PRIVATE PRBool uCheckAndGenAlways1ByteShiftGL( + uShiftTable *shift, + PRInt32* state, + PRUint16 in, + unsigned char* out, + PRUint32 outbuflen, + PRUint32* outlen +); PRIVATE PRBool uGenAlways2Byte( PRUint16 in, @@ -207,6 +215,7 @@ PRIVATE uGeneratorFunc m_generator[uNumOfCharsetType] = uCheckAndGen2ByteGRPrefix8EA5, uCheckAndGen2ByteGRPrefix8EA6, uCheckAndGen2ByteGRPrefix8EA7, + uCheckAndGenAlways1ByteShiftGL, }; /*================================================================================= @@ -645,3 +654,26 @@ PRIVATE PRBool uCheckAndGen2ByteGRPrefix8EA7( uShiftTable *shift, return PR_TRUE; } } +/*================================================================================= + +=================================================================================*/ +PRIVATE PRBool uCheckAndGenAlways1ByteShiftGL( + uShiftTable *shift, + PRInt32* state, + PRUint16 in, + unsigned char* out, + PRUint32 outbuflen, + PRUint32* outlen +) +{ + /* Don't check inlen. The caller should ensure it is larger than 0 */ + /* Oops, I don't agree. Code changed to check every time. [CATA] */ + if(outbuflen < 1) + return PR_FALSE; + else + { + *outlen = 1; + out[0] = in & 0x7f; + return PR_TRUE; + } +} diff --git a/mozilla/intl/uconv/src/uscan.c b/mozilla/intl/uconv/src/uscan.c index e94ca4749ec..01a38cfcaf7 100644 --- a/mozilla/intl/uconv/src/uscan.c +++ b/mozilla/intl/uconv/src/uscan.c @@ -157,6 +157,14 @@ PRIVATE PRBool uCheckAndScan2ByteGRPrefix8EA7( PRUint32 inbuflen, PRUint32* inscanlen ); +PRIVATE PRBool uCheckAndScanAlways1ByteShiftGL( + uShiftTable *shift, + PRInt32* state, + unsigned char *in, + PRUint16 *out, + PRUint32 inbuflen, + PRUint32* inscanlen +); PRIVATE PRBool uScanAlways2Byte( unsigned char* in, @@ -201,6 +209,7 @@ PRIVATE uScannerFunc m_scanner[uNumOfCharsetType] = uCheckAndScan2ByteGRPrefix8EA5, uCheckAndScan2ByteGRPrefix8EA6, uCheckAndScan2ByteGRPrefix8EA7, + uCheckAndScanAlways1ByteShiftGL, }; /*================================================================================= @@ -610,3 +619,21 @@ PRIVATE PRBool uCheckAndScan2ByteGRPrefix8EA7( return PR_TRUE; } } +/*================================================================================= + +=================================================================================*/ +PRIVATE PRBool uCheckAndScanAlways1ByteShiftGL( + uShiftTable *shift, + PRInt32* state, + unsigned char *in, + PRUint16 *out, + PRUint32 inbuflen, + PRUint32* inscanlen +) +{ + /* Don't check inlen. The caller should ensure it is larger than 0 */ + *inscanlen = 1; + *out = (PRUint16) in[0] | 0x80; + + return PR_TRUE; +} diff --git a/mozilla/intl/uconv/util/ugen.c b/mozilla/intl/uconv/util/ugen.c index 9d4c63416a2..5aafa30453c 100644 --- a/mozilla/intl/uconv/util/ugen.c +++ b/mozilla/intl/uconv/util/ugen.c @@ -163,6 +163,14 @@ PRIVATE PRBool uCheckAndGen2ByteGRPrefix8EA7( PRUint32 outbuflen, PRUint32* outlen ); +PRIVATE PRBool uCheckAndGenAlways1ByteShiftGL( + uShiftTable *shift, + PRInt32* state, + PRUint16 in, + unsigned char* out, + PRUint32 outbuflen, + PRUint32* outlen +); PRIVATE PRBool uGenAlways2Byte( PRUint16 in, @@ -207,6 +215,7 @@ PRIVATE uGeneratorFunc m_generator[uNumOfCharsetType] = uCheckAndGen2ByteGRPrefix8EA5, uCheckAndGen2ByteGRPrefix8EA6, uCheckAndGen2ByteGRPrefix8EA7, + uCheckAndGenAlways1ByteShiftGL, }; /*================================================================================= @@ -645,3 +654,26 @@ PRIVATE PRBool uCheckAndGen2ByteGRPrefix8EA7( uShiftTable *shift, return PR_TRUE; } } +/*================================================================================= + +=================================================================================*/ +PRIVATE PRBool uCheckAndGenAlways1ByteShiftGL( + uShiftTable *shift, + PRInt32* state, + PRUint16 in, + unsigned char* out, + PRUint32 outbuflen, + PRUint32* outlen +) +{ + /* Don't check inlen. The caller should ensure it is larger than 0 */ + /* Oops, I don't agree. Code changed to check every time. [CATA] */ + if(outbuflen < 1) + return PR_FALSE; + else + { + *outlen = 1; + out[0] = in & 0x7f; + return PR_TRUE; + } +} diff --git a/mozilla/intl/uconv/util/uscan.c b/mozilla/intl/uconv/util/uscan.c index e94ca4749ec..01a38cfcaf7 100644 --- a/mozilla/intl/uconv/util/uscan.c +++ b/mozilla/intl/uconv/util/uscan.c @@ -157,6 +157,14 @@ PRIVATE PRBool uCheckAndScan2ByteGRPrefix8EA7( PRUint32 inbuflen, PRUint32* inscanlen ); +PRIVATE PRBool uCheckAndScanAlways1ByteShiftGL( + uShiftTable *shift, + PRInt32* state, + unsigned char *in, + PRUint16 *out, + PRUint32 inbuflen, + PRUint32* inscanlen +); PRIVATE PRBool uScanAlways2Byte( unsigned char* in, @@ -201,6 +209,7 @@ PRIVATE uScannerFunc m_scanner[uNumOfCharsetType] = uCheckAndScan2ByteGRPrefix8EA5, uCheckAndScan2ByteGRPrefix8EA6, uCheckAndScan2ByteGRPrefix8EA7, + uCheckAndScanAlways1ByteShiftGL, }; /*================================================================================= @@ -610,3 +619,21 @@ PRIVATE PRBool uCheckAndScan2ByteGRPrefix8EA7( return PR_TRUE; } } +/*================================================================================= + +=================================================================================*/ +PRIVATE PRBool uCheckAndScanAlways1ByteShiftGL( + uShiftTable *shift, + PRInt32* state, + unsigned char *in, + PRUint16 *out, + PRUint32 inbuflen, + PRUint32* inscanlen +) +{ + /* Don't check inlen. The caller should ensure it is larger than 0 */ + *inscanlen = 1; + *out = (PRUint16) in[0] | 0x80; + + return PR_TRUE; +}