Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
P
Postgres FD Implementation
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Abuhujair Javed
Postgres FD Implementation
Commits
93501745
Commit
93501745
authored
Mar 16, 2001
by
Hiroshi Inoue
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Oops I forgot to add new files for multibyte support.
Sorry Eiji.
parent
9d645fd8
Changes
2
Show whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
163 additions
and
0 deletions
+163
-0
src/interfaces/odbc/multibyte.c
src/interfaces/odbc/multibyte.c
+124
-0
src/interfaces/odbc/multibyte.h
src/interfaces/odbc/multibyte.h
+39
-0
No files found.
src/interfaces/odbc/multibyte.c
0 → 100644
View file @
93501745
/*
* Module : multibyte.c
*
* Description: Mlutibyte related additional function.
*
* Create 2001-03-03 Eiji Tokuya
*
*/
#include <string.h>
#include "multibyte.h"
int
multibyte_client_encoding
;
/* Multibyte Client Encoding. */
int
multibyte_status
;
/* Multibyte Odds and ends character. */
unsigned
char
*
multibyte_strchr
(
unsigned
char
*
s
,
unsigned
char
c
)
{
int
mb_st
=
0
,
i
=
0
;
while
(
!
(
mb_st
==
0
&&
s
[
i
]
==
c
||
s
[
i
]
==
0
))
{
if
(
s
[
i
]
==
0
)
return
(
0
);
switch
(
multibyte_client_encoding
)
{
case
SJIS
:
{
if
(
mb_st
<
2
&&
s
[
i
]
>
0x80
&&
!
(
s
[
i
]
>
0x9f
&&
s
[
i
]
<
0xe0
))
mb_st
=
2
;
else
if
(
mb_st
==
2
)
mb_st
=
1
;
else
mb_st
=
0
;
}
break
;
/* Chinese Big5 Support. */
case
BIG5
:
{
if
(
mb_st
<
2
&&
s
[
i
]
>
0xA0
)
mb_st
=
2
;
else
if
(
mb_st
==
2
)
mb_st
=
1
;
else
mb_st
=
0
;
}
break
;
default:
{
mb_st
=
0
;
}
}
i
++
;
}
#ifdef _DEBUG
qlog
(
"i = %d
\n
"
,
i
);
#endif
return
(
s
+
i
);
}
void
multibyte_init
(
void
)
{
multibyte_status
=
0
;
}
unsigned
char
*
check_client_encoding
(
unsigned
char
*
str
)
{
if
(
strstr
(
str
,
"%27SJIS%27"
)
||
strstr
(
str
,
"'SJIS'"
)
||
strstr
(
str
,
"'sjis'"
))
{
multibyte_client_encoding
=
SJIS
;
return
(
"SJIS"
);
}
if
(
strstr
(
str
,
"%27BIG5%27"
)
||
strstr
(
str
,
"'BIG5'"
)
||
strstr
(
str
,
"'big5'"
))
{
multibyte_client_encoding
=
BIG5
;
return
(
"BIG5"
);
}
return
(
"OHTER"
);
}
/*
* Multibyte Status Function.
* Input char
* Output 0 : 1 Byte Character.
* 1 : MultibyteCharacter Last Byte.
* N : MultibyteCharacter Fast or Middle Byte.
*/
int
multibyte_char_check
(
unsigned
char
s
)
{
switch
(
multibyte_client_encoding
)
{
/* Japanese Shift-JIS(CP932) Support. */
case
SJIS
:
{
if
(
multibyte_status
<
2
&&
s
>
0x80
&&
!
(
s
>
0x9f
&&
s
<
0xE0
))
multibyte_status
=
2
;
else
if
(
multibyte_status
==
2
)
multibyte_status
=
1
;
else
multibyte_status
=
0
;
}
break
;
/* Chinese Big5(CP950) Support. */
case
BIG5
:
{
if
(
multibyte_status
<
2
&&
s
>
0xA0
)
multibyte_status
=
2
;
else
if
(
multibyte_status
==
2
)
multibyte_status
=
1
;
else
multibyte_status
=
0
;
}
break
;
default:
{
multibyte_status
=
0
;
}
}
#ifdef _DEBUG
qlog
(
"multibyte_client_encoding = %d s = 0x%02X multibyte_stat = %d
\n
"
,
multibyte_client_encoding
,
s
,
multibyte_status
);
#endif
return
(
multibyte_status
);
}
src/interfaces/odbc/multibyte.h
0 → 100644
View file @
93501745
/*
*
* Multibyte library header ( psqlODBC Only )
*
*
*/
/* PostgreSQL client encoding */
#define SQL_ASCII 0
/* SQL/ASCII */
#define EUC_JP 1
/* EUC for Japanese */
#define EUC_CN 2
/* EUC for Chinese */
#define EUC_KR 3
/* EUC for Korean */
#define EUC_TW 4
/* EUC for Taiwan */
#define UNICODE 5
/* Unicode UTF-8 */
#define MULE_INTERNAL 6
/* Mule internal code */
#define LATIN1 7
/* ISO-8859 Latin 1 */
#define LATIN2 8
/* ISO-8859 Latin 2 */
#define LATIN3 9
/* ISO-8859 Latin 3 */
#define LATIN4 10
/* ISO-8859 Latin 4 */
#define LATIN5 11
/* ISO-8859 Latin 5 */
#define LATIN6 12
/* ISO-8859 Latin 6 */
#define LATIN7 13
/* ISO-8859 Latin 7 */
#define LATIN8 14
/* ISO-8859 Latin 8 */
#define LATIN9 15
/* ISO-8859 Latin 9 */
#define KOI8 16
/* KOI8-R */
#define WIN 17
/* windows-1251 */
#define ALT 18
/* Alternativny Variant (MS-DOS CP866) */
#define SJIS 32
/* Shift JIS */
#define BIG5 33
/* Big5 */
#define WIN1250 34
/* windows-1250 */
extern
int
multibyte_client_encoding
;
/* Multibyte client encoding. */
extern
int
multibyte_status
;
/* Multibyte charcter status. */
void
multibyte_init
(
void
);
unsigned
char
*
check_client_encoding
(
unsigned
char
*
str
);
int
multibyte_char_check
(
unsigned
char
s
);
unsigned
char
*
multibyte_strchr
(
unsigned
char
*
s
,
unsigned
char
c
);
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment