Merged revisions 569,602,604-605,609 via svnmerge from

/trunk

git-svn-id: branches/fixes_2_0@683 -
This commit is contained in:
peter 2005-07-19 07:45:21 +00:00
parent 734d477af2
commit d7f23a530a
18 changed files with 400 additions and 175 deletions

2
.gitattributes vendored
View File

@ -1358,6 +1358,7 @@ packages/base/mysql/Makefile svneol=native#text/plain
packages/base/mysql/Makefile.fpc svneol=native#text/plain
packages/base/mysql/README -text
packages/base/mysql/mkdb -text
packages/base/mysql/my4_sys.pp svneol=native#text/plain
packages/base/mysql/mysql3.pp svneol=native#text/plain
packages/base/mysql/mysql3_com.pp svneol=native#text/plain
packages/base/mysql/mysql3_comdyn.pp svneol=native#text/plain
@ -5147,6 +5148,7 @@ tests/test/units/system/ttrunc.pp svneol=native#text/plain
tests/test/units/sysutils/execansi.pp svneol=native#text/plain
tests/test/units/sysutils/execedbya.pp svneol=native#text/plain
tests/test/units/sysutils/extractquote.pp svneol=native#text/plain
tests/test/units/sysutils/tsscanf.pp svneol=native#text/plain
tests/test/uprocext1.pp svneol=native#text/plain
tests/test/uprocext2.pp svneol=native#text/plain
tests/test/utasout.pp svneol=native#text/plain

View File

@ -688,12 +688,15 @@ end;
function TMySQLDataset.InternalStrToDate(S: string): TDateTime;
var
EY, EM, ED: Word;
EY, EM, ED: Longint;
begin
SScanf(S,'%d-%d-%d',[@EY,@EM,@ED]);
{
EY := StrToInt(Copy(S,1,4));
EM := StrToInt(Copy(S,6,2));
ED := StrToInt(Copy(S,9,2));
}
if (EY = 0) or (EM = 0) or (ED = 0) then
Result:=0
else
@ -703,16 +706,19 @@ end;
function TMySQLDataset.InternalStrToDateTime(S: string): TDateTime;
var
EY, EM, ED: Word;
EH, EN, ES: Word;
EY, EM, ED: Longint;
EH, EN, ES: Longint;
begin
SScanf(S,'%d-%d-%d %d:%d:%d',[@EY,@EM,@ED,@EH,@EN,@ES]);
{
EY := StrToInt(Copy(S, 1, 4));
EM := StrToInt(Copy(S, 6, 2));
ED := StrToInt(Copy(S, 9, 2));
EH := StrToInt(Copy(S, 12, 2));
EN := StrToInt(Copy(S, 15, 2));
ES := StrToInt(Copy(S, 18, 2));
}
if (EY = 0) or (EM = 0) or (ED = 0) then
Result := 0
else
@ -723,28 +729,34 @@ end;
function TMySQLDataset.InternalStrToTime(S: string): TDateTime;
var
EH, EM, ES: Word;
EH, EM, ES: Longint;
begin
SScanf(S,'%d:%d:%d',[@EH,@EM,@ES]);
{
EH := StrToInt(Copy(S, 1, 2));
EM := StrToInt(Copy(S, 4, 2));
ES := StrToInt(Copy(S, 7, 2));
}
Result := EncodeTime(EH, EM, ES, 0);
end;
function TMySQLDataset.InternalStrToTimeStamp(S: string): TDateTime;
var
EY, EM, ED: Word;
EH, EN, ES: Word;
EY, EM, ED: longint;
EH, EN, ES: longint;
begin
SScanf(S,'%d-%d-%d %d:%d:%d',[@EY,@EM,@ED,@EH,@EN,@ES]);
{
EY := StrToInt(Copy(S, 1, 4));
EM := StrToInt(Copy(S, 5, 2));
ED := StrToInt(Copy(S, 7, 2));
EH := StrToInt(Copy(S, 9, 2));
EN := StrToInt(Copy(S, 11, 2));
ES := StrToInt(Copy(S, 13, 2));
}
if (EY = 0) or (EM = 0) or (ED = 0) then
Result := 0
else

View File

@ -1,5 +1,5 @@
#
# Don't edit, this file is generated by FPCMake Version 2.0.0 [2005/05/05]
# Don't edit, this file is generated by FPCMake Version 2.0.0 [2005/05/09]
#
default: all
MAKEFILETARGETS=i386-linux i386-go32v2 i386-win32 i386-os2 i386-freebsd i386-beos i386-netbsd i386-solaris i386-qnx i386-netware i386-openbsd i386-wdosx i386-emx i386-watcom i386-netwlibc m68k-linux m68k-freebsd m68k-netbsd m68k-amiga m68k-atari m68k-openbsd m68k-palmos powerpc-linux powerpc-netbsd powerpc-macos powerpc-darwin powerpc-morphos sparc-linux sparc-netbsd sparc-solaris x86_64-linux x86_64-freebsd arm-linux
@ -233,103 +233,103 @@ PACKAGESDIR:=$(wildcard $(FPCDIR) $(FPCDIR)/packages/base $(FPCDIR)/packages/ext
override PACKAGE_NAME=mysql
override PACKAGE_VERSION=2.0.0
ifeq ($(FULL_TARGET),i386-linux)
override TARGET_UNITS+=mysql4_com mysql4_version mysql4 mysql4dyn mysql4_comdyn mysql3_com mysql3_version mysql3 mysql3_comdyn mysql3dyn
override TARGET_UNITS+=my4_sys mysql4_com mysql4_version mysql4 mysql4dyn mysql4_comdyn mysql3_com mysql3_version mysql3 mysql3_comdyn mysql3dyn
endif
ifeq ($(FULL_TARGET),i386-go32v2)
override TARGET_UNITS+=mysql4_com mysql4_version mysql4 mysql4dyn mysql4_comdyn mysql3_com mysql3_version mysql3 mysql3_comdyn mysql3dyn
override TARGET_UNITS+=my4_sys mysql4_com mysql4_version mysql4 mysql4dyn mysql4_comdyn mysql3_com mysql3_version mysql3 mysql3_comdyn mysql3dyn
endif
ifeq ($(FULL_TARGET),i386-win32)
override TARGET_UNITS+=mysql4_com mysql4_version mysql4 mysql4dyn mysql4_comdyn mysql3_com mysql3_version mysql3 mysql3_comdyn mysql3dyn
override TARGET_UNITS+=my4_sys mysql4_com mysql4_version mysql4 mysql4dyn mysql4_comdyn mysql3_com mysql3_version mysql3 mysql3_comdyn mysql3dyn
endif
ifeq ($(FULL_TARGET),i386-os2)
override TARGET_UNITS+=mysql4_com mysql4_version mysql4 mysql4dyn mysql4_comdyn mysql3_com mysql3_version mysql3 mysql3_comdyn mysql3dyn
override TARGET_UNITS+=my4_sys mysql4_com mysql4_version mysql4 mysql4dyn mysql4_comdyn mysql3_com mysql3_version mysql3 mysql3_comdyn mysql3dyn
endif
ifeq ($(FULL_TARGET),i386-freebsd)
override TARGET_UNITS+=mysql4_com mysql4_version mysql4 mysql4dyn mysql4_comdyn mysql3_com mysql3_version mysql3 mysql3_comdyn mysql3dyn
override TARGET_UNITS+=my4_sys mysql4_com mysql4_version mysql4 mysql4dyn mysql4_comdyn mysql3_com mysql3_version mysql3 mysql3_comdyn mysql3dyn
endif
ifeq ($(FULL_TARGET),i386-beos)
override TARGET_UNITS+=mysql4_com mysql4_version mysql4 mysql4dyn mysql4_comdyn mysql3_com mysql3_version mysql3 mysql3_comdyn mysql3dyn
override TARGET_UNITS+=my4_sys mysql4_com mysql4_version mysql4 mysql4dyn mysql4_comdyn mysql3_com mysql3_version mysql3 mysql3_comdyn mysql3dyn
endif
ifeq ($(FULL_TARGET),i386-netbsd)
override TARGET_UNITS+=mysql4_com mysql4_version mysql4 mysql4dyn mysql4_comdyn mysql3_com mysql3_version mysql3 mysql3_comdyn mysql3dyn
override TARGET_UNITS+=my4_sys mysql4_com mysql4_version mysql4 mysql4dyn mysql4_comdyn mysql3_com mysql3_version mysql3 mysql3_comdyn mysql3dyn
endif
ifeq ($(FULL_TARGET),i386-solaris)
override TARGET_UNITS+=mysql4_com mysql4_version mysql4 mysql4dyn mysql4_comdyn mysql3_com mysql3_version mysql3 mysql3_comdyn mysql3dyn
override TARGET_UNITS+=my4_sys mysql4_com mysql4_version mysql4 mysql4dyn mysql4_comdyn mysql3_com mysql3_version mysql3 mysql3_comdyn mysql3dyn
endif
ifeq ($(FULL_TARGET),i386-qnx)
override TARGET_UNITS+=mysql4_com mysql4_version mysql4 mysql4dyn mysql4_comdyn mysql3_com mysql3_version mysql3 mysql3_comdyn mysql3dyn
override TARGET_UNITS+=my4_sys mysql4_com mysql4_version mysql4 mysql4dyn mysql4_comdyn mysql3_com mysql3_version mysql3 mysql3_comdyn mysql3dyn
endif
ifeq ($(FULL_TARGET),i386-netware)
override TARGET_UNITS+=mysql4_com mysql4_version mysql4 mysql4dyn mysql4_comdyn mysql3_com mysql3_version mysql3 mysql3_comdyn mysql3dyn
override TARGET_UNITS+=my4_sys mysql4_com mysql4_version mysql4 mysql4dyn mysql4_comdyn mysql3_com mysql3_version mysql3 mysql3_comdyn mysql3dyn
endif
ifeq ($(FULL_TARGET),i386-openbsd)
override TARGET_UNITS+=mysql4_com mysql4_version mysql4 mysql4dyn mysql4_comdyn mysql3_com mysql3_version mysql3 mysql3_comdyn mysql3dyn
override TARGET_UNITS+=my4_sys mysql4_com mysql4_version mysql4 mysql4dyn mysql4_comdyn mysql3_com mysql3_version mysql3 mysql3_comdyn mysql3dyn
endif
ifeq ($(FULL_TARGET),i386-wdosx)
override TARGET_UNITS+=mysql4_com mysql4_version mysql4 mysql4dyn mysql4_comdyn mysql3_com mysql3_version mysql3 mysql3_comdyn mysql3dyn
override TARGET_UNITS+=my4_sys mysql4_com mysql4_version mysql4 mysql4dyn mysql4_comdyn mysql3_com mysql3_version mysql3 mysql3_comdyn mysql3dyn
endif
ifeq ($(FULL_TARGET),i386-emx)
override TARGET_UNITS+=mysql4_com mysql4_version mysql4 mysql4dyn mysql4_comdyn mysql3_com mysql3_version mysql3 mysql3_comdyn mysql3dyn
override TARGET_UNITS+=my4_sys mysql4_com mysql4_version mysql4 mysql4dyn mysql4_comdyn mysql3_com mysql3_version mysql3 mysql3_comdyn mysql3dyn
endif
ifeq ($(FULL_TARGET),i386-watcom)
override TARGET_UNITS+=mysql4_com mysql4_version mysql4 mysql4dyn mysql4_comdyn mysql3_com mysql3_version mysql3 mysql3_comdyn mysql3dyn
override TARGET_UNITS+=my4_sys mysql4_com mysql4_version mysql4 mysql4dyn mysql4_comdyn mysql3_com mysql3_version mysql3 mysql3_comdyn mysql3dyn
endif
ifeq ($(FULL_TARGET),i386-netwlibc)
override TARGET_UNITS+=mysql4_com mysql4_version mysql4 mysql4dyn mysql4_comdyn mysql3_com mysql3_version mysql3 mysql3_comdyn mysql3dyn
override TARGET_UNITS+=my4_sys mysql4_com mysql4_version mysql4 mysql4dyn mysql4_comdyn mysql3_com mysql3_version mysql3 mysql3_comdyn mysql3dyn
endif
ifeq ($(FULL_TARGET),m68k-linux)
override TARGET_UNITS+=mysql4_com mysql4_version mysql4 mysql4dyn mysql4_comdyn mysql3_com mysql3_version mysql3 mysql3_comdyn mysql3dyn
override TARGET_UNITS+=my4_sys mysql4_com mysql4_version mysql4 mysql4dyn mysql4_comdyn mysql3_com mysql3_version mysql3 mysql3_comdyn mysql3dyn
endif
ifeq ($(FULL_TARGET),m68k-freebsd)
override TARGET_UNITS+=mysql4_com mysql4_version mysql4 mysql4dyn mysql4_comdyn mysql3_com mysql3_version mysql3 mysql3_comdyn mysql3dyn
override TARGET_UNITS+=my4_sys mysql4_com mysql4_version mysql4 mysql4dyn mysql4_comdyn mysql3_com mysql3_version mysql3 mysql3_comdyn mysql3dyn
endif
ifeq ($(FULL_TARGET),m68k-netbsd)
override TARGET_UNITS+=mysql4_com mysql4_version mysql4 mysql4dyn mysql4_comdyn mysql3_com mysql3_version mysql3 mysql3_comdyn mysql3dyn
override TARGET_UNITS+=my4_sys mysql4_com mysql4_version mysql4 mysql4dyn mysql4_comdyn mysql3_com mysql3_version mysql3 mysql3_comdyn mysql3dyn
endif
ifeq ($(FULL_TARGET),m68k-amiga)
override TARGET_UNITS+=mysql4_com mysql4_version mysql4 mysql4dyn mysql4_comdyn mysql3_com mysql3_version mysql3 mysql3_comdyn mysql3dyn
override TARGET_UNITS+=my4_sys mysql4_com mysql4_version mysql4 mysql4dyn mysql4_comdyn mysql3_com mysql3_version mysql3 mysql3_comdyn mysql3dyn
endif
ifeq ($(FULL_TARGET),m68k-atari)
override TARGET_UNITS+=mysql4_com mysql4_version mysql4 mysql4dyn mysql4_comdyn mysql3_com mysql3_version mysql3 mysql3_comdyn mysql3dyn
override TARGET_UNITS+=my4_sys mysql4_com mysql4_version mysql4 mysql4dyn mysql4_comdyn mysql3_com mysql3_version mysql3 mysql3_comdyn mysql3dyn
endif
ifeq ($(FULL_TARGET),m68k-openbsd)
override TARGET_UNITS+=mysql4_com mysql4_version mysql4 mysql4dyn mysql4_comdyn mysql3_com mysql3_version mysql3 mysql3_comdyn mysql3dyn
override TARGET_UNITS+=my4_sys mysql4_com mysql4_version mysql4 mysql4dyn mysql4_comdyn mysql3_com mysql3_version mysql3 mysql3_comdyn mysql3dyn
endif
ifeq ($(FULL_TARGET),m68k-palmos)
override TARGET_UNITS+=mysql4_com mysql4_version mysql4 mysql4dyn mysql4_comdyn mysql3_com mysql3_version mysql3 mysql3_comdyn mysql3dyn
override TARGET_UNITS+=my4_sys mysql4_com mysql4_version mysql4 mysql4dyn mysql4_comdyn mysql3_com mysql3_version mysql3 mysql3_comdyn mysql3dyn
endif
ifeq ($(FULL_TARGET),powerpc-linux)
override TARGET_UNITS+=mysql4_com mysql4_version mysql4 mysql4dyn mysql4_comdyn mysql3_com mysql3_version mysql3 mysql3_comdyn mysql3dyn
override TARGET_UNITS+=my4_sys mysql4_com mysql4_version mysql4 mysql4dyn mysql4_comdyn mysql3_com mysql3_version mysql3 mysql3_comdyn mysql3dyn
endif
ifeq ($(FULL_TARGET),powerpc-netbsd)
override TARGET_UNITS+=mysql4_com mysql4_version mysql4 mysql4dyn mysql4_comdyn mysql3_com mysql3_version mysql3 mysql3_comdyn mysql3dyn
override TARGET_UNITS+=my4_sys mysql4_com mysql4_version mysql4 mysql4dyn mysql4_comdyn mysql3_com mysql3_version mysql3 mysql3_comdyn mysql3dyn
endif
ifeq ($(FULL_TARGET),powerpc-macos)
override TARGET_UNITS+=mysql4_com mysql4_version mysql4 mysql4dyn mysql4_comdyn mysql3_com mysql3_version mysql3 mysql3_comdyn mysql3dyn
override TARGET_UNITS+=my4_sys mysql4_com mysql4_version mysql4 mysql4dyn mysql4_comdyn mysql3_com mysql3_version mysql3 mysql3_comdyn mysql3dyn
endif
ifeq ($(FULL_TARGET),powerpc-darwin)
override TARGET_UNITS+=mysql4_com mysql4_version mysql4 mysql4dyn mysql4_comdyn mysql3_com mysql3_version mysql3 mysql3_comdyn mysql3dyn
override TARGET_UNITS+=my4_sys mysql4_com mysql4_version mysql4 mysql4dyn mysql4_comdyn mysql3_com mysql3_version mysql3 mysql3_comdyn mysql3dyn
endif
ifeq ($(FULL_TARGET),powerpc-morphos)
override TARGET_UNITS+=mysql4_com mysql4_version mysql4 mysql4dyn mysql4_comdyn mysql3_com mysql3_version mysql3 mysql3_comdyn mysql3dyn
override TARGET_UNITS+=my4_sys mysql4_com mysql4_version mysql4 mysql4dyn mysql4_comdyn mysql3_com mysql3_version mysql3 mysql3_comdyn mysql3dyn
endif
ifeq ($(FULL_TARGET),sparc-linux)
override TARGET_UNITS+=mysql4_com mysql4_version mysql4 mysql4dyn mysql4_comdyn mysql3_com mysql3_version mysql3 mysql3_comdyn mysql3dyn
override TARGET_UNITS+=my4_sys mysql4_com mysql4_version mysql4 mysql4dyn mysql4_comdyn mysql3_com mysql3_version mysql3 mysql3_comdyn mysql3dyn
endif
ifeq ($(FULL_TARGET),sparc-netbsd)
override TARGET_UNITS+=mysql4_com mysql4_version mysql4 mysql4dyn mysql4_comdyn mysql3_com mysql3_version mysql3 mysql3_comdyn mysql3dyn
override TARGET_UNITS+=my4_sys mysql4_com mysql4_version mysql4 mysql4dyn mysql4_comdyn mysql3_com mysql3_version mysql3 mysql3_comdyn mysql3dyn
endif
ifeq ($(FULL_TARGET),sparc-solaris)
override TARGET_UNITS+=mysql4_com mysql4_version mysql4 mysql4dyn mysql4_comdyn mysql3_com mysql3_version mysql3 mysql3_comdyn mysql3dyn
override TARGET_UNITS+=my4_sys mysql4_com mysql4_version mysql4 mysql4dyn mysql4_comdyn mysql3_com mysql3_version mysql3 mysql3_comdyn mysql3dyn
endif
ifeq ($(FULL_TARGET),x86_64-linux)
override TARGET_UNITS+=mysql4_com mysql4_version mysql4 mysql4dyn mysql4_comdyn mysql3_com mysql3_version mysql3 mysql3_comdyn mysql3dyn
override TARGET_UNITS+=my4_sys mysql4_com mysql4_version mysql4 mysql4dyn mysql4_comdyn mysql3_com mysql3_version mysql3 mysql3_comdyn mysql3dyn
endif
ifeq ($(FULL_TARGET),x86_64-freebsd)
override TARGET_UNITS+=mysql4_com mysql4_version mysql4 mysql4dyn mysql4_comdyn mysql3_com mysql3_version mysql3 mysql3_comdyn mysql3dyn
override TARGET_UNITS+=my4_sys mysql4_com mysql4_version mysql4 mysql4dyn mysql4_comdyn mysql3_com mysql3_version mysql3 mysql3_comdyn mysql3dyn
endif
ifeq ($(FULL_TARGET),arm-linux)
override TARGET_UNITS+=mysql4_com mysql4_version mysql4 mysql4dyn mysql4_comdyn mysql3_com mysql3_version mysql3 mysql3_comdyn mysql3dyn
override TARGET_UNITS+=my4_sys mysql4_com mysql4_version mysql4 mysql4dyn mysql4_comdyn mysql3_com mysql3_version mysql3 mysql3_comdyn mysql3dyn
endif
ifeq ($(FULL_TARGET),i386-linux)
override TARGET_EXAMPLES+=testdb4 testdb3

View File

@ -7,7 +7,7 @@ name=mysql
version=2.0.0
[target]
units=mysql4_com mysql4_version mysql4 mysql4dyn mysql4_comdyn mysql3_com mysql3_version mysql3 mysql3_comdyn mysql3dyn
units=my4_sys mysql4_com mysql4_version mysql4 mysql4dyn mysql4_comdyn mysql3_com mysql3_version mysql3 mysql3_comdyn mysql3dyn
examples=testdb4 testdb3
[require]

View File

@ -0,0 +1,22 @@
unit my4_sys;
interface
uses
ctypes;
type
st_dynamic_array = record
buffers : pchar;
elements : cuint;
max_elements : cuint;
alloc_increment : cuint;
size_of_element : cuint;
end;
tst_dynamic_array = st_dynamic_array;
pst_dynamic_array = ^tst_dynamic_array;
implementation
end.

View File

@ -1,7 +1,7 @@
unit mysql4;
interface
uses mysql4_com;
uses ctypes,my4_sys,mysql4_com;
{
Automatically converted by H2Pas 0.99.15 from mysql.ph

View File

@ -1,19 +1,12 @@
unit mysql4_com;
interface
{
Automatically converted by H2Pas 0.99.15 from mysql_com.ph
The following command line parameters were used:
-p
-D
-l
mysqlclient
mysql_com.ph
}
{$mode objfpc}{$H+}
{$MACRO on}
{$PACKRECORDS C}
unit mysql4_com;
interface
uses
ctypes;
{$IFDEF Unix}
{$DEFINE extdecl:=cdecl}

View File

@ -11,7 +11,7 @@ unit mysql4_comdyn;
interface
uses dynlibs, sysutils;
uses ctypes,my4_sys,dynlibs, sysutils;
{$IFDEF Unix}
{$DEFINE extdecl:=cdecl}

View File

@ -80,10 +80,11 @@ const
CLIENT_TRANSACTIONS = 8192;
SERVER_STATUS_IN_TRANS = 1;
SERVER_STATUS_AUTOCOMMIT = 2;
MYSQL_ERRMSG_SIZE = 200;
MYSQL_ERRMSG_SIZE = 512;
NET_READ_TIMEOUT = 30;
NET_WRITE_TIMEOUT = 60;
MAX_BLOB_WIDTH = 8192;
SQLSTATE_LENGTH = 5;
{
#define NET_WAIT_TIMEOUT (8 60 60)
}
@ -101,28 +102,30 @@ type
write_pos : Pbyte;
read_pos : Pbyte;
fd : my_socket;
max_packet : dword;
max_packet_size : dword;
last_errno : dword;
pkt_nr : dword;
compress_pkt_nr : dword;
write_timeout : dword;
read_timeout : dword;
retry_count : dword;
fcntl : longint;
last_error : array[0..(MYSQL_ERRMSG_SIZE)-1] of char;
error : byte;
return_errno : my_bool;
max_packet,
max_packet_size : culong;
pkt_nr,
compress_pkt_nr : culong;
write_timeout,
read_timeout,
retry_count : cuint;
fcntl : cint;
compress : my_bool;
remain_in_buf : dword;
length : dword;
buf_length : dword;
where_b : dword;
return_status : Pdword;
reading_or_writing : byte;
save_char : char;
remain_in_bufm,
length,
buf_length,
where_b : culong;
return_status : pcuint;
reading_or_writing : cuint;
save_char : cchar;
no_send_ok : my_bool;
last_error : array[0..(MYSQL_ERRMSG_SIZE)-1] of char;
sqlstate : array[0..SQLSTATE_LENGTH] of char;
last_errno : cuint;
error : cuchar;
query_cache_query : gptr;
report_error,
return_errno : my_bool;
end;
NET = st_net;
TNET = NET;

View File

@ -31,7 +31,7 @@ interface
const
PROTOCOL_VERSION = 10;
MYSQL_SERVER_VERSION = '4.0.1-alpha';
MYSQL_SERVER_VERSION = '4.1.10a';
MYSQL_SERVER_SUFFIX = '-max';
FRM_VER = 6;
MYSQL_VERSION_ID = 40001;

View File

@ -11,7 +11,7 @@ unit mysql4dyn;
interface
uses dynlibs, classes, sysutils, mysql4_comdyn;
uses ctypes,dynlibs, classes, sysutils, my4_sys, mysql4_comdyn;
{

View File

@ -21,14 +21,24 @@ type
Pst_mysql_field = ^st_mysql_field;
st_mysql_field = record
name : Pchar;
org_name : pchar;
table : Pchar;
org_table : Pchar;
db : Pchar;
catalog : pchar;
def : Pchar;
length : dword;
max_length : dword;
flags : dword;
decimals : dword;
length : culong;
max_length : culong;
name_length : cuint;
org_name_length : cuint;
table_length : cuint;
org_table_length : cuint;
db_length : cuint;
catalog_length : cuint;
def_length : cuint;
flags : cuint;
decimals : cuint;
charsetnr : cuint;
ftype : enum_field_types;
end;
MYSQL_FIELD = st_mysql_field;
@ -51,6 +61,7 @@ type
st_mysql_rows = record
next : Pst_mysql_rows;
data : MYSQL_ROW;
length : culong;
end;
MYSQL_ROWS = st_mysql_rows;
TMYSQL_ROWS = MYSQL_ROWS;
@ -88,25 +99,34 @@ type
Pst_mysql_data = ^st_mysql_data;
st_mysql_data = record
rows : my_ulonglong;
fields : dword;
fields : cuint;
data : PMYSQL_ROWS;
alloc : MEM_ROOT;
prev_ptr : ^MYSQL_ROWS;
end;
MYSQL_DATA = st_mysql_data;
TMYSQL_DATA = MYSQL_DATA;
PMYSQL_DATA = ^MYSQL_DATA;
mysql_option = (MYSQL_OPT_CONNECT_TIMEOUT,MYSQL_OPT_COMPRESS,
MYSQL_OPT_NAMED_PIPE,MYSQL_INIT_COMMAND,
MYSQL_READ_DEFAULT_FILE,MYSQL_READ_DEFAULT_GROUP,
MYSQL_SET_CHARSET_DIR,MYSQL_SET_CHARSET_NAME
);
Pst_mysql_options = ^st_mysql_options;
st_mysql_options = record
connect_timeout : dword;
client_flag : dword;
port : dword;
host : Pchar;
init_command : Pchar;
user : Pchar;
password : Pchar;
unix_socket : Pchar;
db : Pchar;
connect_timeout,
read_timeout,
write_timeout: cuint;
port,protocol : cuint;
client_flag : culong;
host,
user,
password,
unix_socket,
db : pchar;
init_commands : pst_dynamic_array;
my_cnf_file : Pchar;
my_cnf_group : Pchar;
charset_dir : Pchar;
@ -116,23 +136,26 @@ type
ssl_ca : Pchar;
ssl_capath : Pchar;
ssl_cipher : Pchar;
max_allowed_packet : Cardinal;
shared_memory_base_name : pchar;
max_allowed_packet : culong;
use_ssl : my_bool;
compress : my_bool;
named_pipe : my_bool;
rpl_probe : my_bool;
rpl_parse : my_bool;
no_master_reads : my_bool;
methods_to_use : mysql_option;
client_ip : pchar;
secure_auth : my_bool;
local_infile_init : pointer;
local_infile_read : pointer;
local_infile_end : pointer;
local_infile_error : pointer;
local_infile_userdata : pointer;
end;
TMYSQL_OPTIONS = st_mysql_options;
PTMYSQL_OPTIONS = ^TMYSQL_OPTIONS;
mysql_option = (MYSQL_OPT_CONNECT_TIMEOUT,MYSQL_OPT_COMPRESS,
MYSQL_OPT_NAMED_PIPE,MYSQL_INIT_COMMAND,
MYSQL_READ_DEFAULT_FILE,MYSQL_READ_DEFAULT_GROUP,
MYSQL_SET_CHARSET_DIR,MYSQL_SET_CHARSET_NAME
);
mysql_status = (MYSQL_STATUS_READY,MYSQL_STATUS_GET_RESULT,
MYSQL_STATUS_USE_RESULT);
@ -156,25 +179,31 @@ type
affected_rows : my_ulonglong;
insert_id : my_ulonglong;
extra_info : my_ulonglong;
thread_id : dword;
packet_length : dword;
port : dword;
client_flag : dword;
server_capabilities : dword;
protocol_version : dword;
field_count : dword;
server_status : dword;
server_language : dword;
thread_id : culong;
packet_length : culong;
port : cuint;
client_flag : culong;
server_capabilities : culong;
protocol_version : cuint;
field_count : cuint;
server_status : cuint;
server_language : cuint;
warning_count : cuint;
options : st_mysql_options;
status : mysql_status;
free_me : my_bool;
reconnect : my_bool;
scramble_buff : array[0..8] of char;
scramble_buff : array[0..20] of char;
rpl_pivot : my_bool;
master : Pst_mysql;
next_slave : Pst_mysql;
last_used_slave : Pst_mysql;
last_used_con : Pst_mysql;
stmts : pointer; // LIST
methods : pointer; // Pst_mysql_methods
thd : pointer;
unbuffered_fetch_owner : pmy_bool;
end;
TMYSQL = st_mysql;
PMYSQL = ^TMYSQL;
@ -185,14 +214,16 @@ type
fields : PMYSQL_FIELD;
data : PMYSQL_DATA;
data_cursor : PMYSQL_ROWS;
lengths : Pdword;
lengths : pculong;
handle : PMYSQL;
field_alloc : MEM_ROOT;
field_count : dword;
current_field : dword;
current_field : cuint;
row : MYSQL_ROW;
current_row : MYSQL_ROW;
eof : my_bool;
unbuffered_fetch_cancelled : my_bool;
methods : pointer; { was ^my_sql_methods }
end;
MYSQL_RES = st_mysql_res;
TMYSQL_RES = MYSQL_RES;

View File

@ -1,6 +1,6 @@
program mysqls;
uses mysql,mysql_com;
uses mysql4,mysql4_com;
begin
@ -13,6 +13,6 @@ begin
writeln ('MYSQL_RES : ',sizeof(TMYSQL_RES));
writeln ('MEM_ROOT : ',sizeof(TMEM_ROOT));
writeln ('my_bool : ',sizeof(my_bool));
writeln ('TNET : ',sizeof(TNET),' TNET.nettype : ',SizeOf(net_type));
// writeln ('TNET : ',sizeof(TNET),' TNET.nettype : ',SizeOf(net_type));
writeln ('USED_MEM : ',sizeof(TUSED_MEM));
end.

View File

@ -757,7 +757,7 @@ function StrToInt(const S: string): integer;
var Error: word;
begin
Val(S, result, Error);
if Error <> 0 then raise EConvertError.createfmt(SInValidInteger,[S]);
if Error <> 0 then raise EConvertError.createfmt(SInvalidInteger,[S]);
end ;
@ -766,7 +766,7 @@ var Error: word;
begin
Val(S, result, Error);
if Error <> 0 then raise EConvertError.createfmt(SInValidInteger,[S]);
if Error <> 0 then raise EConvertError.createfmt(SInvalidInteger,[S]);
end;
@ -2068,3 +2068,179 @@ const
#240, #241, #242, #243, #244, #245, #246, #247,
#248, #249, #250, #251, #252, #253, #254, #255 );
function sscanf(const s: string; const fmt : string;const Pointers : array of Pointer) : Integer;
var
i,j,n,m : SizeInt;
s1 : string;
function GetInt(unsigned : boolean=false) : Integer;
begin
s1 := '';
while (s[n] = ' ') and (Length(s) > n) do
inc(n);
{ read sign }
if (Length(s)>= n) and (s[n] in ['+', '-']) then
begin
{ don't accept - when reading unsigned }
if unsigned and (s[n]='-') then
begin
result:=length(s1);
exit;
end
else
begin
s1:=s1+s[n];
inc(n);
end;
end;
{ read numbers }
while (s[n] in ['0'..'9'])
and (Length(s) >= n) do
begin
s1 := s1+s[n];
inc(n);
end;
Result := Length(s1);
end;
function GetFloat : Integer;
begin
s1 := '';
while (s[n] = ' ') and (Length(s) > n) do
inc(n);
while (s[n] in ['0'..'9', '+', '-', '.', 'e', 'E'])
and (Length(s) >= n) do
begin
s1 := s1+s[n];
inc(n);
end;
Result := Length(s1);
end;
function GetString : Integer;
begin
s1 := '';
while (s[n] = ' ') and (Length(s) > n) do
inc(n);
while (s[n] <> ' ') and (Length(s) >= n) do
begin
s1 := s1+s[n];
inc(n);
end;
Result := Length(s1);
end;
function ScanStr(c : Char) : Boolean;
begin
while (s[n] <> c) and (Length(s) > n) do
inc(n);
inc(n);
If (n <= Length(s)) then
Result := True
else
Result := False;
end;
function GetFmt : Integer;
begin
Result := -1;
while true do
begin
while (fmt[m] = ' ') and (Length(fmt) > m) do
inc(m);
if (m >= Length(fmt)) then
break;
if (fmt[m] = '%') then
begin
inc(m);
case fmt[m] of
'd':
Result:=vtInteger;
'f':
Result:=vtExtended;
's':
Result:=vtString;
'c':
Result:=vtChar;
else
raise EFormatError.CreateFmt(SInvalidFormat,[fmt]);
end;
inc(m);
break;
end;
if not(ScanStr(fmt[m])) then
break;
inc(m);
end;
end;
begin
n := 1;
m := 1;
Result := 0;
for i:=0 to High(Pointers) do
begin
j := GetFmt;
case j of
vtInteger :
begin
if GetInt>0 then
begin
plongint(Pointers[i])^:=StrToInt(s1);
inc(Result);
end
else
break;
end;
vtchar :
begin
if Length(s)>n then
begin
pchar(Pointers[i])^:=s[n];
inc(n);
inc(Result);
end
else
break;
end;
vtExtended :
begin
if GetFloat>0 then
begin
pextended(Pointers[i])^:=StrToFloat(s1);
inc(Result);
end
else
break;
end;
vtString :
begin
if GetString > 0 then
begin
pansistring(Pointers[i])^:=s1;
inc(Result);
end
else
break;
end;
else
break;
end;
end;
end;

View File

@ -142,6 +142,8 @@ Function FormatFloat(Const Format : String; Value : Extended) : String;
Function IsDelimiter(const Delimiters, S: string; Index: Integer): Boolean;
function FormatCurr(const Format: string; Value: Currency): string;
function SScanf(const s: string; const fmt : string;const Pointers : array of Pointer) : Integer;
{// MBCS Functions. No MBCS yet, so mostly these are calls to the regular counterparts.}
Type
TMbcsByteType = (mbSingleByte, mbLeadByte, mbTrailByte);

View File

@ -129,6 +129,7 @@ type
{ String conversion errors }
EConvertError = class(Exception);
EFormatError = class(Exception);
{ Other errors }
EAbort = Class(Exception);

View File

@ -536,38 +536,3 @@ begin
end;
end;
{
Revision 1.1 2003/10/06 21:01:06 peter
* moved classes unit to rtl
Revision 1.17 2003/09/06 20:46:07 marco
* 3 small VP fixes from Noah Silva. One (OutOfMemory error) failed.
Revision 1.16 2003/04/06 11:06:39 michael
+ Added exception classname to output of unhandled exception for better identification
Revision 1.15 2003/03/18 08:28:23 michael
Patch from peter for Abort routine
Revision 1.14 2003/03/17 15:11:51 armin
+ someone AssertErrorHandler, BackTraceFunc and Dump_Stack so that pointer instead of longint is needed
Revision 1.13 2003/01/01 20:58:07 florian
+ added invalid instruction exception
Revision 1.12 2002/10/07 19:43:24 florian
+ empty prototypes for the AnsiStr* multi byte functions added
Revision 1.11 2002/09/07 16:01:22 peter
* old logs removed and tabs fixed
Revision 1.10 2002/07/16 13:57:39 florian
* raise takes now a void pointer as at and frame address
instead of a longint, fixed
Revision 1.9 2002/01/25 17:42:03 peter
* interface helpers
Revision 1.8 2002/01/25 16:23:03 peter
* merged filesearch() fix
}

View File

@ -0,0 +1,18 @@
{$mode objfpc}
{$h+}
uses
sysutils;
var
e : extended;
s : string;
l : longint;
begin
sscanf('asdf 1.2345 1234','%s %f %d',[@s,@e,@l]);
if (e<>1.2345) or
(l<>1234) or
(s<>'asdf') then
halt(1);
// writeln(s,' ',e,' ',l);
writeln('ok');
end.