mirror of
https://github.com/MariaDB/server.git
synced 2025-07-29 05:21:33 +03:00
Merge mskold@bk-internal.mysql.com:/home/bk/mysql-5.0
into mysql.com:/usr/local/home/marty/MySQL/mysql-5.0
This commit is contained in:
@ -72,6 +72,7 @@ case "$cpu_family--$model_name" in
|
||||
;;
|
||||
*ppc)
|
||||
cpu_flag="powerpc";
|
||||
no_march=1;
|
||||
;;
|
||||
*)
|
||||
cpu_flag="";
|
||||
@ -106,6 +107,9 @@ case "$cc_ver--$cc_verno" in
|
||||
cpu_flag="$cpu_flag_old"
|
||||
fi
|
||||
check_cpu_cflags="-mcpu=$cpu_flag -march=$cpu_flag"
|
||||
if test -n "$no_march"; then
|
||||
check_cpu_cflags="-mcpu=$cpu_flag"
|
||||
fi
|
||||
;;
|
||||
*)
|
||||
check_cpu_cflags=""
|
||||
|
@ -205,6 +205,7 @@ patg@krsna.
|
||||
patg@krsna.patg.net
|
||||
patg@patrick-galbraiths-computer.local
|
||||
patg@pc248.lfp.kcls.org
|
||||
patg@radha.local
|
||||
paul@central.snake.net
|
||||
paul@frost.snake.net
|
||||
paul@ice.local
|
||||
|
@ -104,8 +104,8 @@ test:
|
||||
|
||||
test-force:
|
||||
cd mysql-test; \
|
||||
mysql-test-run --force ;\
|
||||
mysql-test-run --ps-protocol --force
|
||||
./mysql-test-run --force ;\
|
||||
./mysql-test-run --ps-protocol --force
|
||||
|
||||
# Don't update the files from bitkeeper
|
||||
%::SCCS/s.%
|
||||
|
@ -52,7 +52,7 @@ BSC32=bscmake.exe
|
||||
# ADD BSC32 /nologo
|
||||
LINK32=xilink6.exe
|
||||
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
|
||||
# ADD LINK32 mysqlclient.lib wsock32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /out:"../client_release/mysql.exe" /libpath:"..\lib_release\\"
|
||||
# ADD LINK32 mysqlclient.lib mysys.lib wsock32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib zlib.lib /nologo /subsystem:console /debug /machine:I386 /out:"../client_release/mysql.exe" /libpath:"..\lib_release\\"
|
||||
# SUBTRACT LINK32 /incremental:yes
|
||||
|
||||
!ELSEIF "$(CFG)" == "mysql - Win32 Debug"
|
||||
@ -78,7 +78,7 @@ BSC32=bscmake.exe
|
||||
# ADD BSC32 /nologo
|
||||
LINK32=xilink6.exe
|
||||
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
|
||||
# ADD LINK32 mysqlclient.lib wsock32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /incremental:no /debug /machine:I386 /out:"../client_debug/mysql.exe" /pdbtype:sept /libpath:"..\lib_debug\\"
|
||||
# ADD LINK32 mysqlclient.lib mysys.lib wsock32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib zlib.lib /nologo /subsystem:console /incremental:no /debug /machine:I386 /out:"../client_debug/mysql.exe" /pdbtype:sept /libpath:"..\lib_debug\\"
|
||||
|
||||
!ELSEIF "$(CFG)" == "mysql - Win32 classic"
|
||||
|
||||
@ -104,9 +104,9 @@ BSC32=bscmake.exe
|
||||
# ADD BASE BSC32 /nologo
|
||||
# ADD BSC32 /nologo
|
||||
LINK32=xilink6.exe
|
||||
# ADD BASE LINK32 mysqlclient.lib wsock32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /out:"../client_release/mysql.exe" /libpath:"..\lib_release\\"
|
||||
# ADD BASE LINK32 mysqlclient.lib mysys.lib wsock32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /out:"../client_release/mysql.exe" /libpath:"..\lib_release\\"
|
||||
# SUBTRACT BASE LINK32 /incremental:yes
|
||||
# ADD LINK32 mysqlclient.lib wsock32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /out:"../client_classic/mysql.exe" /libpath:"..\lib_release\\"
|
||||
# ADD LINK32 mysqlclient.lib mysys.lib wsock32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib zlib.lib /nologo /subsystem:console /debug /machine:I386 /out:"../client_classic/mysql.exe" /libpath:"..\lib_release\\"
|
||||
# SUBTRACT LINK32 /incremental:yes
|
||||
|
||||
!ENDIF
|
||||
|
@ -53,7 +53,7 @@ BSC32=bscmake.exe
|
||||
# ADD BSC32 /nologo
|
||||
LINK32=link.exe
|
||||
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:IX86 /machine:IA64
|
||||
# ADD LINK32 mysqlclient.lib wsock32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /out:"../client_release/mysql.exe" /libpath:"..\lib_release\\" /machine:IA64
|
||||
# ADD LINK32 mysqlclient.lib wsock32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib zlib.lib /nologo /subsystem:console /debug /out:"../client_release/mysql.exe" /libpath:"..\lib_release\\" /machine:IA64
|
||||
|
||||
!ELSEIF "$(CFG)" == "mysql - WinIA64 Debug"
|
||||
|
||||
@ -79,7 +79,7 @@ BSC32=bscmake.exe
|
||||
# ADD BSC32 /nologo
|
||||
LINK32=link.exe
|
||||
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:IA64
|
||||
# ADD LINK32 mysqlclient.lib wsock32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /incremental:no /debug /out:"../client_debug/mysql.exe" /libpath:"..\lib_debug\\" /machine:IA64
|
||||
# ADD LINK32 mysqlclient.lib wsock32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib zlib.lib /nologo /subsystem:console /incremental:no /debug /out:"../client_debug/mysql.exe" /libpath:"..\lib_debug\\" /machine:IA64
|
||||
|
||||
!ELSEIF "$(CFG)" == "mysql - WinIA64 classic"
|
||||
|
||||
@ -107,7 +107,7 @@ BSC32=bscmake.exe
|
||||
# ADD BSC32 /nologo
|
||||
LINK32=link.exe
|
||||
# ADD BASE LINK32 mysqlclient.lib wsock32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /out:"../client_release/mysql.exe" /libpath:"..\lib_release\\" /machine:IA64
|
||||
# ADD LINK32 mysqlclient.lib wsock32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /out:"../client_classic/mysql.exe" /libpath:"..\lib_release\\" /machine:IA64
|
||||
# ADD LINK32 mysqlclient.lib wsock32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib zlib.lib /nologo /subsystem:console /debug /out:"../client_classic/mysql.exe" /libpath:"..\lib_release\\" /machine:IA64
|
||||
|
||||
!ENDIF
|
||||
|
||||
|
@ -52,7 +52,7 @@ BSC32=bscmake.exe
|
||||
# ADD BSC32 /nologo
|
||||
LINK32=xilink6.exe
|
||||
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
|
||||
# ADD LINK32 mysqlclient.lib wsock32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 /out:"../client_release/mysqladmin.exe" /libpath:"..\lib_release\\"
|
||||
# ADD LINK32 mysqlclient.lib mysys.lib wsock32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib zlib.lib /nologo /subsystem:console /machine:I386 /out:"../client_release/mysqladmin.exe" /libpath:"..\lib_release\\"
|
||||
|
||||
!ELSEIF "$(CFG)" == "mysqladmin - Win32 Debug"
|
||||
|
||||
@ -77,7 +77,7 @@ BSC32=bscmake.exe
|
||||
# ADD BSC32 /nologo
|
||||
LINK32=xilink6.exe
|
||||
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
|
||||
# ADD LINK32 mysqlclient.lib wsock32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /incremental:no /debug /machine:I386 /out:"../client_debug/mysqladmin.exe" /pdbtype:sept /libpath:"..\lib_debug\\"
|
||||
# ADD LINK32 mysqlclient.lib mysys.lib wsock32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib zlib.lib /nologo /subsystem:console /incremental:no /debug /machine:I386 /out:"../client_debug/mysqladmin.exe" /pdbtype:sept /libpath:"..\lib_debug\\"
|
||||
|
||||
!ELSEIF "$(CFG)" == "mysqladmin - Win32 classic"
|
||||
|
||||
@ -104,7 +104,7 @@ BSC32=bscmake.exe
|
||||
# ADD BSC32 /nologo
|
||||
LINK32=xilink6.exe
|
||||
# ADD BASE LINK32 mysqlclient.lib wsock32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 /out:"../client_release/mysqladmin.exe" /libpath:"..\lib_release\\"
|
||||
# ADD LINK32 mysqlclient.lib wsock32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 /out:"../client_classic/mysqladmin.exe" /libpath:"..\lib_release\\"
|
||||
# ADD LINK32 mysqlclient.lib mysys.lib wsock32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib zlib.lib /nologo /subsystem:console /machine:I386 /out:"../client_classic/mysqladmin.exe" /libpath:"..\lib_release\\"
|
||||
|
||||
!ENDIF
|
||||
|
||||
|
@ -53,7 +53,7 @@ BSC32=bscmake.exe
|
||||
# ADD BSC32 /nologo
|
||||
LINK32=link.exe
|
||||
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:IA64
|
||||
# ADD LINK32 ..\lib_release\zlib.lib mysqlclient.lib wsock32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib bufferoverflowU.lib /nologo /subsystem:console /out:"../client_release/mysqladmin.exe" /libpath:"..\lib_release\\" /machine:IA64
|
||||
# ADD LINK32 ..\lib_release\zlib.lib mysqlclient.lib wsock32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib bufferoverflowU.lib zlib.lib /nologo /subsystem:console /out:"../client_release/mysqladmin.exe" /libpath:"..\lib_release\\" /machine:IA64
|
||||
|
||||
!ELSEIF "$(CFG)" == "mysqladmin - WinIA64 Debug"
|
||||
|
||||
@ -79,7 +79,7 @@ BSC32=bscmake.exe
|
||||
# ADD BSC32 /nologo
|
||||
LINK32=link.exe
|
||||
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:IA64
|
||||
# ADD LINK32 ..\lib_debug\zlib.lib mysqlclient.lib wsock32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib bufferoverflowU.lib /nologo /subsystem:console /incremental:no /debug /out:"../client_debug/mysqladmin.exe" /libpath:"..\lib_debug\\" /machine:IA64
|
||||
# ADD LINK32 ..\lib_debug\zlib.lib mysqlclient.lib wsock32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib bufferoverflowU.lib zlib.lib /nologo /subsystem:console /incremental:no /debug /out:"../client_debug/mysqladmin.exe" /libpath:"..\lib_debug\\" /machine:IA64
|
||||
|
||||
!ELSEIF "$(CFG)" == "mysqladmin - WinIA64 classic"
|
||||
|
||||
@ -107,7 +107,7 @@ BSC32=bscmake.exe
|
||||
# ADD BSC32 /nologo
|
||||
LINK32=link.exe
|
||||
# ADD BASE LINK32 mysqlclient.lib wsock32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /out:"../client_release/mysqladmin.exe" /libpath:"..\lib_release\\" /machine:IA64
|
||||
# ADD LINK32 ..\lib_release\zlib.lib mysqlclient.lib wsock32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib bufferoverflowU.lib /nologo /subsystem:console /out:"../client_classic/mysqladmin.exe" /libpath:"..\lib_release\\" /machine:IA64
|
||||
# ADD LINK32 ..\lib_release\zlib.lib mysqlclient.lib wsock32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib bufferoverflowU.lib zlib.lib /nologo /subsystem:console /out:"../client_classic/mysqladmin.exe" /libpath:"..\lib_release\\" /machine:IA64
|
||||
|
||||
!ENDIF
|
||||
|
||||
|
@ -46,7 +46,7 @@ BSC32=bscmake.exe
|
||||
# ADD BSC32 /nologo
|
||||
LINK32=link.exe
|
||||
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
|
||||
# ADD LINK32 mysqlclient.lib wsock32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /pdb:"release/mysqlcheck.pdb" /machine:I386 /out:"../client_release/mysqlcheck.exe" /libpath:"..\lib_release\\"
|
||||
# ADD LINK32 mysqlclient.lib wsock32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib zlib.lib /nologo /subsystem:console /pdb:"release/mysqlcheck.pdb" /machine:I386 /out:"../client_release/mysqlcheck.exe" /libpath:"..\lib_release\\"
|
||||
# SUBTRACT LINK32 /pdb:none
|
||||
# Begin Target
|
||||
|
||||
|
@ -49,7 +49,7 @@ BSC32=bscmake.exe
|
||||
# ADD BSC32 /nologo
|
||||
LINK32=link.exe
|
||||
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:IA64
|
||||
# ADD LINK32 mysqlclient.lib wsock32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /pdb:"release/mysqlcheck.pdb" /machine:IA64 /out:"../client_release/mysqlcheck.exe" /libpath:"..\lib_release\\" /incremental:no
|
||||
# ADD LINK32 mysqlclient.lib wsock32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib zlib.lib /nologo /subsystem:console /pdb:"release/mysqlcheck.pdb" /machine:IA64 /out:"../client_release/mysqlcheck.exe" /libpath:"..\lib_release\\" /incremental:no
|
||||
# SUBTRACT LINK32
|
||||
|
||||
!ENDIF
|
||||
|
@ -155,6 +155,10 @@ SOURCE="..\strings\ctype-czech.c"
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE="..\strings\ctype-cp932.c"
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE="..\strings\ctype-euc_kr.c"
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
@ -155,6 +155,10 @@ SOURCE="..\strings\ctype-czech.c"
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE="..\strings\ctype-cp963.c"
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE="..\strings\ctype-euc_kr.c"
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
@ -52,7 +52,7 @@ BSC32=bscmake.exe
|
||||
# ADD BSC32 /nologo
|
||||
LINK32=xilink6.exe
|
||||
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib mysys.lib /nologo /subsystem:console /machine:I386
|
||||
# ADD LINK32 mysqlclient.lib wsock32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib mysys.lib /nologo /subsystem:console /machine:I386 /out:"../client_release/mysqldump.exe" /libpath:"..\lib_release\\"
|
||||
# ADD LINK32 mysqlclient.lib wsock32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib mysys.lib zlib.lib /nologo /subsystem:console /machine:I386 /out:"../client_release/mysqldump.exe" /libpath:"..\lib_release\\"
|
||||
|
||||
!ELSEIF "$(CFG)" == "mysqldump - Win32 Debug"
|
||||
|
||||
@ -77,7 +77,7 @@ BSC32=bscmake.exe
|
||||
# ADD BSC32 /nologo
|
||||
LINK32=xilink6.exe
|
||||
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib mysys.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
|
||||
# ADD LINK32 mysqlclient.lib wsock32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib mysys.lib /nologo /subsystem:console /incremental:no /debug /machine:I386 /out:"../client_debug/mysqldump.exe" /pdbtype:sept /libpath:"..\lib_debug\\"
|
||||
# ADD LINK32 mysqlclient.lib wsock32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib mysys.lib zlib.lib /nologo /subsystem:console /incremental:no /debug /machine:I386 /out:"../client_debug/mysqldump.exe" /pdbtype:sept /libpath:"..\lib_debug\\"
|
||||
|
||||
!ELSEIF "$(CFG)" == "mysqldump - Win32 classic"
|
||||
|
||||
@ -104,7 +104,7 @@ BSC32=bscmake.exe
|
||||
# ADD BSC32 /nologo
|
||||
LINK32=xilink6.exe
|
||||
# ADD BASE LINK32 mysqlclient.lib wsock32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib mysys.lib /nologo /subsystem:console /machine:I386 /out:"../client_release/mysqldump.exe" /libpath:"..\lib_release\\"
|
||||
# ADD LINK32 mysqlclient.lib wsock32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib mysys.lib /nologo /subsystem:console /machine:I386 /out:"../client_classic/mysqldump.exe" /libpath:"..\lib_release\\"
|
||||
# ADD LINK32 mysqlclient.lib wsock32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib mysys.lib zlib.lib /nologo /subsystem:console /machine:I386 /out:"../client_classic/mysqldump.exe" /libpath:"..\lib_release\\"
|
||||
|
||||
!ENDIF
|
||||
|
||||
|
@ -53,7 +53,7 @@ BSC32=bscmake.exe
|
||||
# ADD BSC32 /nologo
|
||||
LINK32=link.exe
|
||||
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib mysys.lib /nologo /subsystem:console /machine:IA64
|
||||
# ADD LINK32 ..\lib_release\zlib.lib mysqlclient.lib wsock32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib mysys.lib bufferoverflowU.lib /nologo /subsystem:console /out:"../client_release/mysqldump.exe" /libpath:"..\lib_release\\" /machine:IA64
|
||||
# ADD LINK32 ..\lib_release\zlib.lib mysqlclient.lib wsock32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib mysys.lib bufferoverflowU.lib zlib.lib /nologo /subsystem:console /out:"../client_release/mysqldump.exe" /libpath:"..\lib_release\\" /machine:IA64
|
||||
|
||||
!ELSEIF "$(CFG)" == "mysqldump - WinIA64 Debug"
|
||||
|
||||
@ -79,7 +79,7 @@ BSC32=bscmake.exe
|
||||
# ADD BSC32 /nologo
|
||||
LINK32=link.exe
|
||||
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib mysys.lib /nologo /subsystem:console /debug /machine:IA64
|
||||
# ADD LINK32 ..\lib_debug\dbug.lib ..\lib_debug\zlib.lib mysqlclient.lib wsock32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib mysys.lib bufferoverflowU.lib /nologo /subsystem:console /incremental:no /debug /out:"../client_debug/mysqldump.exe" /libpath:"..\lib_debug\\" /machine:IA64
|
||||
# ADD LINK32 ..\lib_debug\dbug.lib ..\lib_debug\zlib.lib mysqlclient.lib wsock32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib mysys.lib bufferoverflowU.lib zlib.lib /nologo /subsystem:console /incremental:no /debug /out:"../client_debug/mysqldump.exe" /libpath:"..\lib_debug\\" /machine:IA64
|
||||
|
||||
!ELSEIF "$(CFG)" == "mysqldump - WinIA64 classic"
|
||||
|
||||
@ -107,7 +107,7 @@ BSC32=bscmake.exe
|
||||
# ADD BSC32 /nologo
|
||||
LINK32=link.exe
|
||||
# ADD BASE LINK32 mysqlclient.lib wsock32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib mysys.lib /nologo /subsystem:console /out:"../client_release/mysqldump.exe" /libpath:"..\lib_release\\" /machine:IA64
|
||||
# ADD LINK32 ..\lib_release\zlib.lib mysqlclient.lib wsock32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib mysys.lib bufferoverflowU.lib /nologo /subsystem:console /out:"../client_classic/mysqldump.exe" /libpath:"..\lib_release\\" /machine:IA64
|
||||
# ADD LINK32 ..\lib_release\zlib.lib mysqlclient.lib wsock32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib mysys.lib bufferoverflowU.lib zlib.lib /nologo /subsystem:console /out:"../client_classic/mysqldump.exe" /libpath:"..\lib_release\\" /machine:IA64
|
||||
|
||||
!ENDIF
|
||||
|
||||
|
@ -52,7 +52,7 @@ BSC32=bscmake.exe
|
||||
# ADD BSC32 /nologo
|
||||
LINK32=xilink6.exe
|
||||
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
|
||||
# ADD LINK32 mysqlclient.lib wsock32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 /out:"../client_release/mysqlimport.exe" /libpath:"..\lib_release\\"
|
||||
# ADD LINK32 mysqlclient.lib mysys.lib wsock32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib zlib.lib /nologo /subsystem:console /machine:I386 /out:"../client_release/mysqlimport.exe" /libpath:"..\lib_release\\"
|
||||
# SUBTRACT LINK32 /incremental:yes
|
||||
|
||||
!ELSEIF "$(CFG)" == "mysqlimport - Win32 Debug"
|
||||
@ -78,7 +78,7 @@ BSC32=bscmake.exe
|
||||
# ADD BSC32 /nologo
|
||||
LINK32=xilink6.exe
|
||||
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
|
||||
# ADD LINK32 mysqlclient.lib wsock32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib setargv.obj /nologo /subsystem:console /incremental:no /debug /machine:I386 /out:"../client_debug/mysqlimport.exe" /pdbtype:sept /libpath:"..\lib_debug\\"
|
||||
# ADD LINK32 mysqlclient.lib mysys.lib wsock32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib zlib.lib setargv.obj /nologo /subsystem:console /incremental:no /debug /machine:I386 /out:"../client_debug/mysqlimport.exe" /pdbtype:sept /libpath:"..\lib_debug\\"
|
||||
|
||||
!ELSEIF "$(CFG)" == "mysqlimport - Win32 classic"
|
||||
|
||||
@ -104,9 +104,9 @@ BSC32=bscmake.exe
|
||||
# ADD BASE BSC32 /nologo
|
||||
# ADD BSC32 /nologo
|
||||
LINK32=xilink6.exe
|
||||
# ADD BASE LINK32 mysqlclient.lib wsock32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 /out:"../client_release/mysqlimport.exe" /libpath:"..\lib_release\\"
|
||||
# ADD BASE LINK32 mysqlclient.lib mysys.lib wsock32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 /out:"../client_release/mysqlimport.exe" /libpath:"..\lib_release\\"
|
||||
# SUBTRACT BASE LINK32 /incremental:yes
|
||||
# ADD LINK32 mysqlclient.lib wsock32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 /out:"../client_classic/mysqlimport.exe" /libpath:"..\lib_release\\"
|
||||
# ADD LINK32 mysqlclient.lib mysys.lib wsock32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib zlib.lib /nologo /subsystem:console /machine:I386 /out:"../client_classic/mysqlimport.exe" /libpath:"..\lib_release\\"
|
||||
# SUBTRACT LINK32 /incremental:yes
|
||||
|
||||
!ENDIF
|
||||
|
@ -53,7 +53,7 @@ BSC32=bscmake.exe
|
||||
# ADD BSC32 /nologo
|
||||
LINK32=link.exe
|
||||
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:IA64
|
||||
# ADD LINK32 ..\lib_release\zlib.lib mysqlclient.lib wsock32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib bufferoverflowU.lib /nologo /subsystem:console /out:"../client_release/mysqlimport.exe" /libpath:"..\lib_release\\" /machine:IA64
|
||||
# ADD LINK32 ..\lib_release\zlib.lib mysqlclient.lib wsock32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib bufferoverflowU.lib zlib.lib /nologo /subsystem:console /out:"../client_release/mysqlimport.exe" /libpath:"..\lib_release\\" /machine:IA64
|
||||
|
||||
!ELSEIF "$(CFG)" == "mysqlimport - WinIA64 Debug"
|
||||
|
||||
@ -79,7 +79,7 @@ BSC32=bscmake.exe
|
||||
# ADD BSC32 /nologo
|
||||
LINK32=link.exe
|
||||
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:IA64
|
||||
# ADD LINK32 setargv.obj ..\lib_debug\zlib.lib ..\lib_debug\dbug.lib mysqlclient.lib wsock32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib bufferoverflowU.lib /nologo /subsystem:console /incremental:no /debug /out:"../client_debug/mysqlimport.exe" /libpath:"..\lib_debug\\" /machine:IA64
|
||||
# ADD LINK32 setargv.obj ..\lib_debug\zlib.lib ..\lib_debug\dbug.lib mysqlclient.lib wsock32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib bufferoverflowU.lib zlib.lib /nologo /subsystem:console /incremental:no /debug /out:"../client_debug/mysqlimport.exe" /libpath:"..\lib_debug\\" /machine:IA64
|
||||
|
||||
!ELSEIF "$(CFG)" == "mysqlimport - WinIA64 classic"
|
||||
|
||||
@ -107,7 +107,7 @@ BSC32=bscmake.exe
|
||||
# ADD BSC32 /nologo
|
||||
LINK32=link.exe
|
||||
# ADD BASE LINK32 mysqlclient.lib wsock32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /out:"../client_release/mysqlimport.exe" /libpath:"..\lib_release\\" /machine:IA64
|
||||
# ADD LINK32 ..\lib_release\zlib.lib mysqlclient.lib wsock32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib bufferoverflowU.lib /nologo /subsystem:console /out:"../client_classic/mysqlimport.exe" /libpath:"..\lib_release\\" /machine:IA64
|
||||
# ADD LINK32 ..\lib_release\zlib.lib mysqlclient.lib wsock32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib bufferoverflowU.lib zlib.lib /nologo /subsystem:console /out:"../client_classic/mysqlimport.exe" /libpath:"..\lib_release\\" /machine:IA64
|
||||
|
||||
!ENDIF
|
||||
|
||||
|
@ -52,7 +52,7 @@ BSC32=bscmake.exe
|
||||
# ADD BSC32 /nologo
|
||||
LINK32=xilink6.exe
|
||||
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
|
||||
# ADD LINK32 mysqlclient.lib wsock32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 /out:"../client_release/mysqlshow.exe" /libpath:"..\lib_release\\"
|
||||
# ADD LINK32 mysqlclient.lib mysys.lib wsock32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib zlib.lib /nologo /subsystem:console /machine:I386 /out:"../client_release/mysqlshow.exe" /libpath:"..\lib_release\\"
|
||||
|
||||
!ELSEIF "$(CFG)" == "mysqlshow - Win32 Debug"
|
||||
|
||||
@ -77,7 +77,7 @@ BSC32=bscmake.exe
|
||||
# ADD BSC32 /nologo
|
||||
LINK32=xilink6.exe
|
||||
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
|
||||
# ADD LINK32 mysqlclient.lib wsock32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /incremental:no /debug /machine:I386 /out:"../client_debug/mysqlshow.exe" /pdbtype:sept /libpath:"..\lib_debug\\"
|
||||
# ADD LINK32 mysqlclient.lib mysys.lib wsock32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib zlib.lib /nologo /subsystem:console /incremental:no /debug /machine:I386 /out:"../client_debug/mysqlshow.exe" /pdbtype:sept /libpath:"..\lib_debug\\"
|
||||
|
||||
!ELSEIF "$(CFG)" == "mysqlshow - Win32 classic"
|
||||
|
||||
@ -103,8 +103,8 @@ BSC32=bscmake.exe
|
||||
# ADD BASE BSC32 /nologo
|
||||
# ADD BSC32 /nologo
|
||||
LINK32=xilink6.exe
|
||||
# ADD BASE LINK32 mysqlclient.lib wsock32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 /out:"../client_release/mysqlshow.exe" /libpath:"..\lib_release\\"
|
||||
# ADD LINK32 mysqlclient.lib wsock32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 /out:"../client_classic/mysqlshow.exe" /libpath:"..\lib_release\\"
|
||||
# ADD BASE LINK32 mysqlclient.lib mysys.lib wsock32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 /out:"../client_release/mysqlshow.exe" /libpath:"..\lib_release\\"
|
||||
# ADD LINK32 mysqlclient.lib mysys.lib wsock32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib zlib.lib /nologo /subsystem:console /machine:I386 /out:"../client_classic/mysqlshow.exe" /libpath:"..\lib_release\\"
|
||||
|
||||
!ENDIF
|
||||
|
||||
|
@ -53,7 +53,7 @@ BSC32=bscmake.exe
|
||||
# ADD BSC32 /nologo
|
||||
LINK32=link.exe
|
||||
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:IA64
|
||||
# ADD LINK32 ..\lib_release\zlib.lib mysqlclient.lib wsock32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib bufferoverflowU.lib /nologo /subsystem:console /out:"../client_release/mysqlshow.exe" /libpath:"..\lib_release\\" /machine:IA64
|
||||
# ADD LINK32 ..\lib_release\zlib.lib mysqlclient.lib wsock32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib bufferoverflowU.lib zlib.lib /nologo /subsystem:console /out:"../client_release/mysqlshow.exe" /libpath:"..\lib_release\\" /machine:IA64
|
||||
|
||||
!ELSEIF "$(CFG)" == "mysqlshow - WinIA64 Debug"
|
||||
|
||||
@ -79,7 +79,7 @@ BSC32=bscmake.exe
|
||||
# ADD BSC32 /nologo
|
||||
LINK32=link.exe
|
||||
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:IA64
|
||||
# ADD LINK32 ..\lib_debug\zlib.lib ..\lib_debug\dbug.lib mysqlclient.lib wsock32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib bufferoverflowU.lib /nologo /subsystem:console /incremental:no /debug /out:"../client_debug/mysqlshow.exe" /libpath:"..\lib_debug\\" /machine:IA64
|
||||
# ADD LINK32 ..\lib_debug\zlib.lib ..\lib_debug\dbug.lib mysqlclient.lib wsock32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib bufferoverflowU.lib zlib.lib /nologo /subsystem:console /incremental:no /debug /out:"../client_debug/mysqlshow.exe" /libpath:"..\lib_debug\\" /machine:IA64
|
||||
|
||||
!ELSEIF "$(CFG)" == "mysqlshow - WinIA64 classic"
|
||||
|
||||
@ -107,7 +107,7 @@ BSC32=bscmake.exe
|
||||
# ADD BSC32 /nologo
|
||||
LINK32=link.exe
|
||||
# ADD BASE LINK32 mysqlclient.lib wsock32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /out:"../client_release/mysqlshow.exe" /libpath:"..\lib_release\\" /machine:IA64
|
||||
# ADD LINK32 ..\lib_release\zlib.lib mysqlclient.lib wsock32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib bufferoverflowU.lib /nologo /subsystem:console /out:"../client_classic/mysqlshow.exe" /libpath:"..\lib_release\\" /machine:IA64
|
||||
# ADD LINK32 ..\lib_release\zlib.lib mysqlclient.lib wsock32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib bufferoverflowU.lib zlib.lib /nologo /subsystem:console /out:"../client_classic/mysqlshow.exe" /libpath:"..\lib_release\\" /machine:IA64
|
||||
|
||||
!ENDIF
|
||||
|
||||
|
@ -78,7 +78,7 @@ BSC32=bscmake.exe
|
||||
# ADD BSC32 /nologo
|
||||
LINK32=link.exe
|
||||
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib odbc32.lib odbccp32.lib mysqlclient.lib wsock32.lib mysys.lib regex.lib /nologo /out:"..\client_classic\mysqltest.exe" /incremental:no /libpath:"..\lib_release\" /pdb:".\classic\mysqltest.pdb" /pdbtype:sept /subsystem:console /MACHINE:I386
|
||||
# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib odbc32.lib odbccp32.lib mysqlclient.lib wsock32.lib mysys.lib regex.lib /nologo /out:"..\client_classic\mysqltest.exe" /incremental:no /libpath:"..\lib_release\" /pdb:".\classic\mysqltest.pdb" /pdbtype:sept /subsystem:console /MACHINE:I386
|
||||
# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib odbc32.lib odbccp32.lib mysqlclient.lib wsock32.lib mysys.lib regex.lib zlib.lib /nologo /out:"..\client_classic\mysqltest.exe" /incremental:no /libpath:"..\lib_release\" /pdb:".\classic\mysqltest.pdb" /pdbtype:sept /subsystem:console /MACHINE:I386
|
||||
|
||||
!ELSEIF "$(CFG)" == "mysqltest - Win32 Release"
|
||||
|
||||
@ -103,7 +103,7 @@ BSC32=bscmake.exe
|
||||
# ADD BSC32 /nologo
|
||||
LINK32=link.exe
|
||||
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib odbc32.lib odbccp32.lib mysqlclient.lib wsock32.lib mysys.lib regex.lib /nologo /out:"..\client_release\mysqltest.exe" /incremental:no /libpath:"..\lib_release\" /pdb:".\release\mysqltest.pdb" /pdbtype:sept /subsystem:console /MACHINE:I386
|
||||
# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib odbc32.lib odbccp32.lib mysqlclient.lib wsock32.lib mysys.lib regex.lib /nologo /out:"..\client_release\mysqltest.exe" /incremental:no /libpath:"..\lib_release\" /pdb:".\release\mysqltest.pdb" /pdbtype:sept /subsystem:console /MACHINE:I386
|
||||
# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib odbc32.lib odbccp32.lib mysqlclient.lib wsock32.lib mysys.lib regex.lib zlib.lib /nologo /out:"..\client_release\mysqltest.exe" /incremental:no /libpath:"..\lib_release\" /pdb:".\release\mysqltest.pdb" /pdbtype:sept /subsystem:console /MACHINE:I386
|
||||
|
||||
!ENDIF
|
||||
|
||||
|
@ -55,7 +55,7 @@ BSC32=bscmake.exe
|
||||
LINK32=link.exe
|
||||
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib odbc32.lib odbccp32.lib mysqlclient.lib wsock32.lib mysys.lib regex.lib /nologo /subsystem:console /debug /out:"..\client_debug\mysqltest.exe" /libpath:"..\lib_debug\\"
|
||||
# SUBTRACT BASE LINK32 /pdb:none
|
||||
# ADD LINK32 ..\lib_debug\zlib.lib ..\lib_debug\dbug.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib mysqlclient.lib wsock32.lib mysys.lib regex.lib bufferoverflowU.lib /nologo /subsystem:console /incremental:no /debug /out:"..\client_debug\mysqltest.exe" /libpath:"..\lib_debug\\" /machine:IA64
|
||||
# ADD LINK32 ..\lib_debug\zlib.lib ..\lib_debug\dbug.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib mysqlclient.lib wsock32.lib mysys.lib regex.lib bufferoverflowU.lib zlib.lib /nologo /subsystem:console /incremental:no /debug /out:"..\client_debug\mysqltest.exe" /libpath:"..\lib_debug\\" /machine:IA64
|
||||
# SUBTRACT LINK32 /pdb:none
|
||||
|
||||
!ELSEIF "$(CFG)" == "mysqltest - WinIA64 classic"
|
||||
@ -84,7 +84,7 @@ BSC32=bscmake.exe
|
||||
LINK32=link.exe
|
||||
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib odbc32.lib odbccp32.lib mysqlclient.lib wsock32.lib mysys.lib regex.lib /nologo /subsystem:console /out:"..\client_classic\mysqltest.exe" /libpath:"..\lib_release\\"
|
||||
# SUBTRACT BASE LINK32 /pdb:none
|
||||
# ADD LINK32 ..\lib_release\zlib.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib mysqlclient.lib wsock32.lib mysys.lib regex.lib bufferoverflowU.lib /nologo /subsystem:console /out:"..\client_classic\mysqltest.exe" /libpath:"..\lib_release\\" /machine:IA64
|
||||
# ADD LINK32 ..\lib_release\zlib.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib mysqlclient.lib wsock32.lib mysys.lib regex.lib bufferoverflowU.lib zlib.lib /nologo /subsystem:console /out:"..\client_classic\mysqltest.exe" /libpath:"..\lib_release\\" /machine:IA64
|
||||
# SUBTRACT LINK32 /pdb:none
|
||||
|
||||
!ELSEIF "$(CFG)" == "mysqltest - WinIA64 Release"
|
||||
@ -113,7 +113,7 @@ BSC32=bscmake.exe
|
||||
LINK32=link.exe
|
||||
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib odbc32.lib odbccp32.lib mysqlclient.lib wsock32.lib mysys.lib regex.lib /nologo /subsystem:console /out:"..\client_release\mysqltest.exe" /libpath:"..\lib_release\\"
|
||||
# SUBTRACT BASE LINK32 /pdb:none
|
||||
# ADD LINK32 ..\lib_release\zlib.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib mysqlclient.lib wsock32.lib mysys.lib regex.lib bufferoverflowU.lib /nologo /subsystem:console /out:"..\client_release\mysqltest.exe" /libpath:"..\lib_release\\" /machine:IA64
|
||||
# ADD LINK32 ..\lib_release\zlib.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib mysqlclient.lib wsock32.lib mysys.lib regex.lib bufferoverflowU.lib zlib.lib /nologo /subsystem:console /out:"..\client_release\mysqltest.exe" /libpath:"..\lib_release\\" /machine:IA64
|
||||
# SUBTRACT LINK32 /pdb:none
|
||||
|
||||
!ENDIF
|
||||
|
@ -54,7 +54,7 @@ BSC32=bscmake.exe
|
||||
# ADD BSC32 /nologo
|
||||
LINK32=xilink6.exe
|
||||
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /machine:I386
|
||||
# ADD LINK32 wsock32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /machine:I386 /def:"libmysql.def" /out:"..\lib_release\libmysql.dll" /libpath:"." /libpath:"..\lib_release"
|
||||
# ADD LINK32 mysys.lib wsock32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /machine:I386 /def:"libmysql.def" /out:"..\lib_release\libmysql.dll" /libpath:"." /libpath:"..\lib_release"
|
||||
# SUBTRACT LINK32 /pdb:none
|
||||
# Begin Special Build Tool
|
||||
SOURCE="$(InputPath)"
|
||||
@ -87,7 +87,7 @@ BSC32=bscmake.exe
|
||||
# ADD BSC32 /nologo
|
||||
LINK32=xilink6.exe
|
||||
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /debug /machine:I386 /pdbtype:sept
|
||||
# ADD LINK32 zlib.lib wsock32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /incremental:no /map /debug /machine:I386 /def:"libmysql.def" /out:"..\lib_debug\libmysql.dll" /pdbtype:sept /libpath:"." /libpath:"..\lib_debug"
|
||||
# ADD LINK32 zlib.lib mysys.lib wsock32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /incremental:no /map /debug /machine:I386 /def:"libmysql.def" /out:"..\lib_debug\libmysql.dll" /pdbtype:sept /libpath:"." /libpath:"..\lib_debug"
|
||||
# SUBTRACT LINK32 /pdb:none
|
||||
# Begin Special Build Tool
|
||||
SOURCE="$(InputPath)"
|
||||
@ -147,6 +147,10 @@ SOURCE="..\strings\ctype-czech.c"
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE="..\strings\ctype-cp932.c"
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE="..\strings\ctype-euc_kr.c"
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
@ -146,6 +146,10 @@ SOURCE="..\strings\ctype-czech.c"
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE="..\strings\ctype-cp932.c"
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE="..\strings\ctype-euc_kr.c"
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
@ -52,7 +52,7 @@ BSC32=bscmake.exe
|
||||
# ADD BSC32 /nologo
|
||||
LINK32=link.exe
|
||||
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib odbc32.lib odbccp32.lib Ws2_32.lib /nologo /out:"..\mysql-test\mysql_test_run_new.exe" /incremental:yes /debug /pdb:".\Debug\mysql_test_run_new.pdb" /pdbtype:sept /map:".\Debug\mysql_test_run_new.map" /subsystem:console
|
||||
# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib odbc32.lib odbccp32.lib Ws2_32.lib /nologo /out:"..\mysql-test\mysql_test_run_new.exe" /incremental:yes /debug /pdb:".\Debug\mysql_test_run_new.pdb" /pdbtype:sept /map:".\Debug\mysql_test_run_new.map" /subsystem:console
|
||||
# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib odbc32.lib odbccp32.lib Ws2_32.lib zlib.lib /nologo /out:"..\mysql-test\mysql_test_run_new.exe" /incremental:yes /libpath:"..\lib_debug\" /debug /pdb:".\Debug\mysql_test_run_new.pdb" /pdbtype:sept /map:".\Debug\mysql_test_run_new.map" /subsystem:console
|
||||
|
||||
!ELSEIF "$(CFG)" == "mysql_test_run_new - Win32 Release"
|
||||
|
||||
@ -77,7 +77,7 @@ BSC32=bscmake.exe
|
||||
# ADD BSC32 /nologo
|
||||
LINK32=link.exe
|
||||
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib odbc32.lib odbccp32.lib Ws2_32.lib /nologo /out:"..\mysql-test\mysql_test_run_new.exe" /incremental:no /pdb:".\Release\mysql_test_run_new.pdb" /pdbtype:sept /subsystem:console
|
||||
# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib odbc32.lib odbccp32.lib Ws2_32.lib /nologo /out:"..\mysql-test\mysql_test_run_new.exe" /incremental:no /pdb:".\Release\mysql_test_run_new.pdb" /pdbtype:sept /subsystem:console
|
||||
# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib odbc32.lib odbccp32.lib Ws2_32.lib zlib.lib /nologo /out:"..\mysql-test\mysql_test_run_new.exe" /incremental:no /libpath:"..\lib_release\" /pdb:".\Release\mysql_test_run_new.pdb" /pdbtype:sept /subsystem:console
|
||||
|
||||
!ENDIF
|
||||
|
||||
|
@ -54,7 +54,7 @@ BSC32=bscmake.exe
|
||||
LINK32=link.exe
|
||||
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib odbc32.lib odbccp32.lib Ws2_32.lib /nologo /subsystem:console /map /debug /out:"..\mysql-test\mysql_test_run_new.exe" /machine:IA64
|
||||
# SUBTRACT BASE LINK32 /pdb:none
|
||||
# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib Ws2_32.lib bufferoverflowU.lib /nologo /subsystem:console /incremental:no /map /debug /out:"..\mysql-test\mysql_test_run_new.exe" /machine:IA64
|
||||
# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib Ws2_32.lib bufferoverflowU.lib zlib.lib /nologo /subsystem:console /incremental:no /libpath:"..\lib_debug\" /map /debug /out:"..\mysql-test\mysql_test_run_new.exe" /machine:IA64
|
||||
# SUBTRACT LINK32 /pdb:none
|
||||
|
||||
!ELSEIF "$(CFG)" == "mysql_test_run_new - WinIA64 Release"
|
||||
@ -83,7 +83,7 @@ BSC32=bscmake.exe
|
||||
LINK32=link.exe
|
||||
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib odbc32.lib odbccp32.lib Ws2_32.lib /nologo /subsystem:console /out:"..\mysql-test\mysql_test_run_new.exe" /machine:IA64
|
||||
# SUBTRACT BASE LINK32 /pdb:none
|
||||
# ADD LINK32 t kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib Ws2_32.lib bufferoverflowU.lib /nologo /subsystem:console /out:"..\mysql-test\mysql_test_run_new.exe" /machine:IA64
|
||||
# ADD LINK32 t kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib Ws2_32.lib bufferoverflowU.lib zlib.lib /nologo /subsystem:console /libpath:"..\lib_release\" /out:"..\mysql-test\mysql_test_run_new.exe" /machine:IA64
|
||||
# SUBTRACT LINK32 /pdb:none
|
||||
|
||||
!ENDIF
|
||||
|
@ -80,6 +80,9 @@ Package=<4>
|
||||
Begin Project Dependency
|
||||
Project_Dep_Name zlib
|
||||
End Project Dependency
|
||||
Begin Project Dependency
|
||||
Project_Dep_Name mysys
|
||||
End Project Dependency
|
||||
}}}
|
||||
|
||||
###############################################################################
|
||||
@ -320,6 +323,9 @@ Package=<4>
|
||||
Begin Project Dependency
|
||||
Project_Dep_Name zlib
|
||||
End Project Dependency
|
||||
Begin Project Dependency
|
||||
Project_Dep_Name mysys
|
||||
End Project Dependency
|
||||
}}}
|
||||
|
||||
###############################################################################
|
||||
@ -476,6 +482,9 @@ Package=<4>
|
||||
Begin Project Dependency
|
||||
Project_Dep_Name mysqlclient
|
||||
End Project Dependency
|
||||
Begin Project Dependency
|
||||
Project_Dep_Name mysys
|
||||
End Project Dependency
|
||||
}}}
|
||||
|
||||
###############################################################################
|
||||
@ -533,6 +542,9 @@ Package=<4>
|
||||
Begin Project Dependency
|
||||
Project_Dep_Name mysqlclient
|
||||
End Project Dependency
|
||||
Begin Project Dependency
|
||||
Project_Dep_Name mysys
|
||||
End Project Dependency
|
||||
}}}
|
||||
|
||||
###############################################################################
|
||||
|
@ -51,7 +51,7 @@ BSC32=bscmake.exe
|
||||
# ADD BSC32 /nologo
|
||||
LINK32=xilink6.exe
|
||||
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
|
||||
# ADD LINK32 mysqlclient.lib wsock32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 /out:"../client_release/mysqlbinlog.exe" /libpath:"..\lib_release\\"
|
||||
# ADD LINK32 mysqlclient.lib wsock32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib zlib.lib /nologo /subsystem:console /machine:I386 /out:"../client_release/mysqlbinlog.exe" /libpath:"..\lib_release\\"
|
||||
# SUBTRACT LINK32 /pdb:none /debug
|
||||
|
||||
!ELSEIF "$(CFG)" == "mysqlbinlog - Win32 Debug"
|
||||
@ -76,7 +76,7 @@ BSC32=bscmake.exe
|
||||
# ADD BSC32 /nologo
|
||||
LINK32=xilink6.exe
|
||||
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
|
||||
# ADD LINK32 mysqlclient.lib wsock32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /incremental:no /debug /machine:I386 /out:"../client_debug/mysqlbinlog.exe" /pdbtype:sept /libpath:"..\lib_debug\\"
|
||||
# ADD LINK32 mysqlclient.lib wsock32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib zlib.lib /nologo /subsystem:console /incremental:no /debug /machine:I386 /out:"../client_debug/mysqlbinlog.exe" /pdbtype:sept /libpath:"..\lib_debug\\"
|
||||
|
||||
!ELSEIF "$(CFG)" == "mysqlbinlog - Win32 classic"
|
||||
|
||||
@ -102,7 +102,7 @@ BSC32=bscmake.exe
|
||||
LINK32=xilink6.exe
|
||||
# ADD BASE LINK32 mysqlclient.lib wsock32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 /out:"../client_release/mysqlbinlog.exe" /libpath:"..\lib_release\\"
|
||||
# SUBTRACT BASE LINK32 /pdb:none /debug
|
||||
# ADD LINK32 mysqlclient.lib wsock32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 /out:"../client_classic/mysqlbinlog.exe" /libpath:"..\lib_release\\"
|
||||
# ADD LINK32 mysqlclient.lib wsock32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib zlib.lib /nologo /subsystem:console /machine:I386 /out:"../client_classic/mysqlbinlog.exe" /libpath:"..\lib_release\\"
|
||||
# SUBTRACT LINK32 /pdb:none /debug
|
||||
|
||||
!ENDIF
|
||||
|
@ -52,7 +52,7 @@ BSC32=bscmake.exe
|
||||
# ADD BSC32 /nologo
|
||||
LINK32=link.exe
|
||||
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:IA64
|
||||
# ADD LINK32 ..\lib_release\zlib.lib mysqlclient.lib wsock32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib bufferoverflowU.lib /nologo /subsystem:console /out:"../client_release/mysqlbinlog.exe" /libpath:"..\lib_release\\" /machine:IA64
|
||||
# ADD LINK32 ..\lib_release\zlib.lib mysqlclient.lib wsock32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib bufferoverflowU.lib zlib.lib /nologo /subsystem:console /out:"../client_release/mysqlbinlog.exe" /libpath:"..\lib_release\\" /machine:IA64
|
||||
# SUBTRACT LINK32 /debug
|
||||
|
||||
!ELSEIF "$(CFG)" == "mysqlbinlog - WinIA64 Debug"
|
||||
@ -78,7 +78,7 @@ BSC32=bscmake.exe
|
||||
# ADD BSC32 /nologo
|
||||
LINK32=link.exe
|
||||
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:IA64
|
||||
# ADD LINK32 ..\lib_debug\zlib.lib mysqlclient.lib wsock32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib bufferoverflowU.lib /nologo /subsystem:console /incremental:no /debug /out:"../client_debug/mysqlbinlog.exe" /libpath:"..\lib_debug\\" /machine:IA64
|
||||
# ADD LINK32 ..\lib_debug\zlib.lib mysqlclient.lib wsock32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib bufferoverflowU.lib zlib.lib /nologo /subsystem:console /incremental:no /debug /out:"../client_debug/mysqlbinlog.exe" /libpath:"..\lib_debug\\" /machine:IA64
|
||||
|
||||
!ELSEIF "$(CFG)" == "mysqlbinlog - WinIA64 classic"
|
||||
|
||||
@ -105,7 +105,7 @@ BSC32=bscmake.exe
|
||||
LINK32=link.exe
|
||||
# ADD BASE LINK32 mysqlclient.lib wsock32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /out:"../client_release/mysqlbinlog.exe" /libpath:"..\lib_release\\" /machine:IA64
|
||||
# SUBTRACT BASE LINK32 /debug
|
||||
# ADD LINK32 ..\lib_release\zlib.lib mysqlclient.lib wsock32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib bufferoverflowU.lib /nologo /subsystem:console /out:"../client_classic/mysqlbinlog.exe" /libpath:"..\lib_release\\" /machine:IA64
|
||||
# ADD LINK32 ..\lib_release\zlib.lib mysqlclient.lib wsock32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib bufferoverflowU.lib zlib.lib /nologo /subsystem:console /out:"../client_classic/mysqlbinlog.exe" /libpath:"..\lib_release\\" /machine:IA64
|
||||
# SUBTRACT LINK32 /debug
|
||||
|
||||
!ENDIF
|
||||
|
@ -51,7 +51,7 @@ BSC32=bscmake.exe
|
||||
# ADD BSC32 /nologo
|
||||
LINK32=xilink6.exe
|
||||
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
|
||||
# ADD LINK32 mysqlclient.lib wsock32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 /out:"../client_release/mysqlcheck.exe" /libpath:"..\lib_release\\"
|
||||
# ADD LINK32 mysqlclient.lib wsock32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib zlib.lib /nologo /subsystem:console /machine:I386 /out:"../client_release/mysqlcheck.exe" /libpath:"..\lib_release\\"
|
||||
|
||||
!ELSEIF "$(CFG)" == "mysqlcheck - Win32 Debug"
|
||||
|
||||
@ -75,7 +75,7 @@ BSC32=bscmake.exe
|
||||
# ADD BSC32 /nologo
|
||||
LINK32=xilink6.exe
|
||||
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
|
||||
# ADD LINK32 mysqlclient.lib wsock32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /incremental:no /debug /machine:I386 /out:"../client_debug/mysqlcheck.exe" /pdbtype:sept /libpath:"..\lib_debug\\"
|
||||
# ADD LINK32 mysqlclient.lib wsock32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib zlib.lib /nologo /subsystem:console /incremental:no /debug /machine:I386 /out:"../client_debug/mysqlcheck.exe" /pdbtype:sept /libpath:"..\lib_debug\\"
|
||||
|
||||
!ELSEIF "$(CFG)" == "mysqlcheck - Win32 classic"
|
||||
|
||||
@ -100,7 +100,7 @@ BSC32=bscmake.exe
|
||||
# ADD BSC32 /nologo
|
||||
LINK32=xilink6.exe
|
||||
# ADD BASE LINK32 mysqlclient.lib wsock32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 /out:"../client_release/mysqlcheck.exe" /libpath:"..\lib_release\\"
|
||||
# ADD LINK32 mysqlclient.lib wsock32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 /out:"../client_classic/mysqlcheck.exe" /libpath:"..\lib_release\\"
|
||||
# ADD LINK32 mysqlclient.lib wsock32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib zlib.lib /nologo /subsystem:console /machine:I386 /out:"../client_classic/mysqlcheck.exe" /libpath:"..\lib_release\\"
|
||||
|
||||
!ENDIF
|
||||
|
||||
|
@ -52,7 +52,7 @@ BSC32=bscmake.exe
|
||||
# ADD BSC32 /nologo
|
||||
LINK32=link.exe
|
||||
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:IA64
|
||||
# ADD LINK32 ..\lib_release\zlib.lib mysqlclient.lib wsock32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib bufferoverflowU.lib /nologo /subsystem:console /out:"../client_release/mysqlcheck.exe" /libpath:"..\lib_release\\" /machine:IA64
|
||||
# ADD LINK32 ..\lib_release\zlib.lib mysqlclient.lib wsock32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib bufferoverflowU.lib zlib.lib /nologo /subsystem:console /out:"../client_release/mysqlcheck.exe" /libpath:"..\lib_release\\" /machine:IA64
|
||||
|
||||
!ELSEIF "$(CFG)" == "mysqlcheck - WinIA64 Debug"
|
||||
|
||||
@ -77,7 +77,7 @@ BSC32=bscmake.exe
|
||||
# ADD BSC32 /nologo
|
||||
LINK32=link.exe
|
||||
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:IA64
|
||||
# ADD LINK32 ..\lib_debug\zlib.lib mysqlclient.lib wsock32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib bufferoverflowU.lib /nologo /subsystem:console /incremental:no /debug /out:"../client_debug/mysqlcheck.exe" /libpath:"..\lib_debug\\" /machine:IA64
|
||||
# ADD LINK32 ..\lib_debug\zlib.lib mysqlclient.lib wsock32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib bufferoverflowU.lib zlib.lib /nologo /subsystem:console /incremental:no /debug /out:"../client_debug/mysqlcheck.exe" /libpath:"..\lib_debug\\" /machine:IA64
|
||||
|
||||
!ELSEIF "$(CFG)" == "mysqlcheck - WinIA64 classic"
|
||||
|
||||
@ -103,7 +103,7 @@ BSC32=bscmake.exe
|
||||
# ADD BSC32 /nologo
|
||||
LINK32=link.exe
|
||||
# ADD BASE LINK32 mysqlclient.lib wsock32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /out:"../client_release/mysqlcheck.exe" /libpath:"..\lib_release\\" /machine:IA64
|
||||
# ADD LINK32 ..\lib_release\zlib.lib mysqlclient.lib wsock32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib bufferoverflowU.lib /nologo /subsystem:console /out:"../client_classic/mysqlcheck.exe" /libpath:"..\lib_release\\" /machine:IA64
|
||||
# ADD LINK32 ..\lib_release\zlib.lib mysqlclient.lib wsock32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib bufferoverflowU.lib zlib.lib /nologo /subsystem:console /out:"../client_classic/mysqlcheck.exe" /libpath:"..\lib_release\\" /machine:IA64
|
||||
|
||||
!ENDIF
|
||||
|
||||
|
@ -75,7 +75,7 @@ LINK32=xilink6.exe
|
||||
# PROP Ignore_Export_Lib 0
|
||||
# PROP Target_Dir ""
|
||||
# ADD BASE CPP /nologo /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
|
||||
# ADD CPP /nologo /G6 /MTd /W3 /Z7 /Od /I "../bdb/build_win32" /I "../include" /I "../regex" /I "../extra/yassl/include" /I "../zlib" /D "_DEBUG" /D "SAFEMALLOC" /D "SAFE_MUTEX" /D "HAVE_INNOBASE_DB" /D "HAVE_BERKELEY_DB" /D "HAVE_BLACKHOLE_DB" /D "HAVE_FEDERATED_DB" /D "MYSQL_SERVER" /D "_WINDOWS" /D "_CONSOLE" /D "_MBCS" /D "HAVE_DLOPEN" /FD /c
|
||||
# ADD CPP /nologo /G6 /MTd /W3 /Z7 /Od /I "../bdb/build_win32" /I "../include" /I "../regex" /I "../extra/yassl/include" /I "../zlib" /D "_DEBUG" /D "SAFEMALLOC" /D "SAFE_MUTEX" /D "HAVE_INNOBASE_DB" /D "HAVE_BERKELEY_DB" /D "HAVE_ARCHIVE_DB" /D "HAVE_BLACKHOLE_DB" /D "HAVE_FEDERATED_DB" /D "MYSQL_SERVER" /D "_WINDOWS" /D "_CONSOLE" /D "_MBCS" /D "HAVE_DLOPEN" /FD /c
|
||||
# SUBTRACT CPP /Fr /YX
|
||||
# ADD BASE RSC /l 0x410 /d "_DEBUG"
|
||||
# ADD RSC /l 0x409 /d "_DEBUG"
|
||||
@ -130,7 +130,7 @@ LINK32=xilink6.exe
|
||||
# PROP Target_Dir ""
|
||||
# ADD BASE CPP /nologo /G6 /MT /W3 /O2 /I "../include" /I "../regex" /D "NDEBUG" /D "__NT__" /D "DBUG_OFF" /D "MYSQL_SERVER" /D "_WINDOWS" /D "_CONSOLE" /D "_MBCS" /FD /c
|
||||
# SUBTRACT BASE CPP /YX
|
||||
# ADD CPP /nologo /G6 /MT /W3 /O2 /I "../bdb/build_win32" /I "../include" /I "../regex" /I "../extra/yassl/include" /I "../zlib" /D "NDEBUG" /D "__NT__" /D "DBUG_OFF" /D "HAVE_INNOBASE_DB" /D "HAVE_BERKELEY_DB" /D "HAVE_BLACKHOLE_DB" /D "HAVE_FEDERATED_DB" /D "MYSQL_SERVER" /D "_WINDOWS" /D "_CONSOLE" /D "_MBCS" /D "HAVE_DLOPEN" /D MYSQL_SERVER_SUFFIX=-nt-max /FD /c
|
||||
# ADD CPP /nologo /G6 /MT /W3 /O2 /I "../bdb/build_win32" /I "../include" /I "../regex" /I "../extra/yassl/include" /I "../zlib" /D "NDEBUG" /D "__NT__" /D "DBUG_OFF" /D "HAVE_INNOBASE_DB" /D "HAVE_BERKELEY_DB" /D "HAVE_ARCHIVE_DB" /D "HAVE_BLACKHOLE_DB" /D "HAVE_FEDERATED_DB" /D "MYSQL_SERVER" /D "_WINDOWS" /D "_CONSOLE" /D "_MBCS" /D "HAVE_DLOPEN" /D MYSQL_SERVER_SUFFIX=-nt-max /FD /c
|
||||
# SUBTRACT CPP /YX
|
||||
# ADD BASE RSC /l 0x409 /d "NDEBUG"
|
||||
# ADD RSC /l 0x409 /d "NDEBUG"
|
||||
@ -159,7 +159,7 @@ LINK32=xilink6.exe
|
||||
# PROP Target_Dir ""
|
||||
# ADD BASE CPP /nologo /G6 /MT /W3 /O2 /I "../include" /I "../regex" /D "NDEBUG" /D "DBUG_OFF" /D "MYSQL_SERVER" /D "_WINDOWS" /D "_CONSOLE" /D "_MBCS" /FD /c
|
||||
# SUBTRACT BASE CPP /YX
|
||||
# ADD CPP /nologo /G6 /MT /W3 /O2 /I "../bdb/build_win32" /I "../include" /I "../regex" /I "../extra/yassl/include" /I "../zlib" /D "NDEBUG" /D "DBUG_OFF" /D "USE_SYMDIR" /D "HAVE_INNOBASE_DB" /D "HAVE_BERKELEY_DB" /D "HAVE_BLACKHOLE_DB" /D "HAVE_FEDERATED_DB" /D "MYSQL_SERVER" /D "_WINDOWS" /D "_CONSOLE" /D "_MBCS" /D "HAVE_DLOPEN" /D MYSQL_SERVER_SUFFIX=-max /FD /c
|
||||
# ADD CPP /nologo /G6 /MT /W3 /O2 /I "../bdb/build_win32" /I "../include" /I "../regex" /I "../extra/yassl/include" /I "../zlib" /D "NDEBUG" /D "DBUG_OFF" /D "USE_SYMDIR" /D "HAVE_INNOBASE_DB" /D "HAVE_BERKELEY_DB" /D "HAVE_ARCHIVE_DB" /D "HAVE_BLACKHOLE_DB" /D "HAVE_FEDERATED_DB" /D "MYSQL_SERVER" /D "_WINDOWS" /D "_CONSOLE" /D "_MBCS" /D "HAVE_DLOPEN" /D MYSQL_SERVER_SUFFIX=-max /FD /c
|
||||
# SUBTRACT CPP /YX
|
||||
# ADD BASE RSC /l 0x409 /d "NDEBUG"
|
||||
# ADD RSC /l 0x409 /d "NDEBUG"
|
||||
@ -452,6 +452,10 @@ SOURCE=.\gstream.cpp
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\examples\ha_archive.cpp
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\ha_blackhole.cpp
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
@ -120,6 +120,10 @@ SOURCE=".\ctype-czech.c"
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=".\ctype-cp932.c"
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=".\ctype-euc_kr.c"
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
@ -49,5 +49,5 @@ enum options_client
|
||||
#ifdef HAVE_NDBCLUSTER_DB
|
||||
OPT_NDBCLUSTER, OPT_NDB_CONNECTSTRING,
|
||||
#endif
|
||||
OPT_IGNORE_TABLE,OPT_INSERT_IGNORE,OPT_SHOW_WARNINGS
|
||||
OPT_IGNORE_TABLE,OPT_INSERT_IGNORE,OPT_SHOW_WARNINGS,OPT_DROP_DATABASE
|
||||
};
|
||||
|
@ -271,7 +271,7 @@ get_one_option(int optid, const struct my_option *opt __attribute__((unused)),
|
||||
option_wait=1;
|
||||
}
|
||||
else
|
||||
option_wait= ~0;
|
||||
option_wait= ~(uint)0;
|
||||
break;
|
||||
case '?':
|
||||
case 'I': /* Info */
|
||||
|
@ -85,7 +85,7 @@ static my_bool verbose=0,tFlag=0,dFlag=0,quick= 1, extended_insert= 1,
|
||||
opt_delete_master_logs=0, tty_password=0,
|
||||
opt_single_transaction=0, opt_comments= 0, opt_compact= 0,
|
||||
opt_hex_blob=0, opt_order_by_primary=0, opt_ignore=0,
|
||||
opt_complete_insert= 0;
|
||||
opt_complete_insert= 0, opt_drop_database= 0;
|
||||
static ulong opt_max_allowed_packet, opt_net_buffer_length;
|
||||
static MYSQL mysql_connection,*sock=0;
|
||||
static my_bool insert_pat_inited=0;
|
||||
@ -161,6 +161,9 @@ static struct my_option my_long_options[] =
|
||||
"Dump all the databases. This will be same as --databases with all databases selected.",
|
||||
(gptr*) &opt_alldbs, (gptr*) &opt_alldbs, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0,
|
||||
0, 0},
|
||||
{"add-drop-database", OPT_DROP_DATABASE, "Add a 'DROP DATABASE' before each create.",
|
||||
(gptr*) &opt_drop_database, (gptr*) &opt_drop_database, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0,
|
||||
0},
|
||||
{"add-drop-table", OPT_DROP, "Add a 'drop table' before each create.",
|
||||
(gptr*) &opt_drop, (gptr*) &opt_drop, 0, GET_BOOL, NO_ARG, 1, 0, 0, 0, 0,
|
||||
0},
|
||||
@ -1144,9 +1147,9 @@ static uint get_table_structure(char *table, char *db)
|
||||
else
|
||||
dynstr_set(&insert_pat, "");
|
||||
|
||||
insert_option= (opt_delayed && opt_ignore) ? " DELAYED IGNORE " :
|
||||
insert_option= ((opt_delayed && opt_ignore) ? " DELAYED IGNORE " :
|
||||
opt_delayed ? " DELAYED " :
|
||||
opt_ignore ? " IGNORE " : "";
|
||||
opt_ignore ? " IGNORE " : "");
|
||||
|
||||
if (verbose)
|
||||
fprintf(stderr, "-- Retrieving table structure for table %s...\n", table);
|
||||
@ -2116,12 +2119,20 @@ static int init_dumping(char *database)
|
||||
if (mysql_query(sock, qbuf) || !(dbinfo = mysql_store_result(sock)))
|
||||
{
|
||||
/* Old server version, dump generic CREATE DATABASE */
|
||||
if (opt_drop_database)
|
||||
fprintf(md_result_file,
|
||||
"\n/*!40000 DROP DATABASE IF EXISTS %s;*/\n",
|
||||
qdatabase);
|
||||
fprintf(md_result_file,
|
||||
"\nCREATE DATABASE /*!32312 IF NOT EXISTS*/ %s;\n",
|
||||
qdatabase);
|
||||
}
|
||||
else
|
||||
{
|
||||
if (opt_drop_database)
|
||||
fprintf(md_result_file,
|
||||
"\n/*!40000 DROP DATABASE IF EXISTS %s*/;\n",
|
||||
qdatabase);
|
||||
row = mysql_fetch_row(dbinfo);
|
||||
if (row[1])
|
||||
{
|
||||
|
@ -16,11 +16,12 @@
|
||||
|
||||
/* This file is originally from the mysql distribution. Coded by monty */
|
||||
|
||||
#ifdef __GNUC__
|
||||
#include <my_global.h>
|
||||
|
||||
#ifdef USE_PRAGMA_IMPLEMENTATION
|
||||
#pragma implementation // gcc: Class implementation
|
||||
#endif
|
||||
|
||||
#include <my_global.h>
|
||||
#include <my_sys.h>
|
||||
#include <m_string.h>
|
||||
#include <m_ctype.h>
|
||||
|
@ -16,7 +16,7 @@
|
||||
|
||||
/* This file is originally from the mysql distribution. Coded by monty */
|
||||
|
||||
#ifdef __GNUC__
|
||||
#ifdef USE_PRAGMA_INTERFACE
|
||||
#pragma interface /* gcc class implementation */
|
||||
#endif
|
||||
|
||||
|
10
configure.in
10
configure.in
@ -17,7 +17,7 @@ SHARED_LIB_VERSION=14:0:0
|
||||
# ndb version
|
||||
NDB_VERSION_MAJOR=5
|
||||
NDB_VERSION_MINOR=0
|
||||
NDB_VERSION_BUILD=6
|
||||
NDB_VERSION_BUILD=7
|
||||
NDB_VERSION_STATUS="beta"
|
||||
|
||||
# Set all version vars based on $VERSION. How do we do this more elegant ?
|
||||
@ -1195,16 +1195,10 @@ EOF
|
||||
#
|
||||
echo -n "making sure specific build files are writable... "
|
||||
for file in \
|
||||
Docs/include.texi \
|
||||
Docs/mysql.info \
|
||||
Docs/manual.txt \
|
||||
Docs/manual_toc.html \
|
||||
Docs/manual.html \
|
||||
Docs/INSTALL-BINARY \
|
||||
INSTALL-SOURCE \
|
||||
COPYING \
|
||||
COPYING.LIB \
|
||||
MIRRORS
|
||||
COPYING
|
||||
do
|
||||
if test -e $file; then
|
||||
chmod +w $file
|
||||
|
@ -28,6 +28,7 @@
|
||||
#define yaSSL_BUFFER_HPP
|
||||
|
||||
#include <assert.h> // assert
|
||||
#include "yassl_types.hpp" // ysDelete
|
||||
#include "yassl_error.hpp" // Error
|
||||
#include "memory.hpp" // mySTL::auto_ptr
|
||||
#include "algorithm.hpp" // mySTL::swap
|
||||
@ -183,7 +184,7 @@ inline void checked_delete(T* p)
|
||||
{
|
||||
typedef char complete_type[sizeof(T) ? 1 : -1];
|
||||
(void)sizeof(complete_type);
|
||||
delete p;
|
||||
ysDelete(p);
|
||||
}
|
||||
|
||||
|
||||
|
@ -43,7 +43,7 @@ namespace yaSSL {
|
||||
|
||||
// Digest policy should implement a get_digest, update, and get sizes for pad and
|
||||
// digest
|
||||
struct Digest {
|
||||
struct Digest : public virtual_base {
|
||||
virtual void get_digest(byte*) = 0;
|
||||
virtual void get_digest(byte*, const byte*, unsigned int) = 0;
|
||||
virtual void update(const byte*, unsigned int) = 0;
|
||||
@ -178,7 +178,7 @@ private:
|
||||
|
||||
// BulkCipher policy should implement encrypt, decrypt, get block size,
|
||||
// and set keys for encrypt and decrypt
|
||||
struct BulkCipher {
|
||||
struct BulkCipher : public virtual_base {
|
||||
virtual void encrypt(byte*, const byte*, unsigned int) = 0;
|
||||
virtual void decrypt(byte*, const byte*, unsigned int) = 0;
|
||||
virtual void set_encryptKey(const byte*, const byte* = 0) = 0;
|
||||
@ -308,7 +308,7 @@ private:
|
||||
|
||||
|
||||
// Authentication policy should implement sign, and verify
|
||||
struct Auth {
|
||||
struct Auth : public virtual_base {
|
||||
virtual void sign(byte*, const byte*, unsigned int, const RandomPool&) = 0;
|
||||
virtual bool verify(const byte*, unsigned int, const byte*,
|
||||
unsigned int) = 0;
|
||||
|
@ -67,7 +67,7 @@ public:
|
||||
init(*this);
|
||||
}
|
||||
|
||||
// reservce place in vector before registering, used by init funcion
|
||||
// reserve place in vector before registering, used by init funcion
|
||||
void Reserve(size_t sz)
|
||||
{
|
||||
callbacks_.reserve(sz);
|
||||
|
@ -68,7 +68,7 @@ class Socket {
|
||||
socket_t socket_; // underlying socket descriptor
|
||||
public:
|
||||
explicit Socket(socket_t s = INVALID_SOCKET);
|
||||
virtual ~Socket();
|
||||
~Socket();
|
||||
|
||||
void set_fd(socket_t s);
|
||||
uint get_ready() const;
|
||||
|
@ -63,7 +63,7 @@ struct RecordLayerHeader {
|
||||
|
||||
|
||||
// base for all messages
|
||||
struct Message {
|
||||
struct Message : public virtual_base {
|
||||
virtual input_buffer& set(input_buffer&) =0;
|
||||
virtual output_buffer& get(output_buffer&) const =0;
|
||||
|
||||
@ -175,7 +175,7 @@ private:
|
||||
|
||||
|
||||
// Base Class for all handshake messages
|
||||
class HandShakeBase {
|
||||
class HandShakeBase : public virtual_base {
|
||||
int length_;
|
||||
public:
|
||||
int get_length() const;
|
||||
@ -327,7 +327,7 @@ private:
|
||||
};
|
||||
|
||||
|
||||
struct ServerKeyBase {
|
||||
struct ServerKeyBase : public virtual_base {
|
||||
virtual ~ServerKeyBase() {}
|
||||
virtual void build(SSL&) {}
|
||||
virtual void read(SSL&, input_buffer&) {}
|
||||
@ -342,7 +342,7 @@ struct Fortezza_Server : public ServerKeyBase {
|
||||
};
|
||||
|
||||
|
||||
struct SignatureBase {
|
||||
struct SignatureBase : public virtual_base {
|
||||
virtual ~SignatureBase() {}
|
||||
};
|
||||
|
||||
@ -461,7 +461,7 @@ struct PreMasterSecret {
|
||||
};
|
||||
|
||||
|
||||
struct ClientKeyBase {
|
||||
struct ClientKeyBase : public virtual_base {
|
||||
virtual ~ClientKeyBase() {}
|
||||
virtual void build(SSL&) {}
|
||||
virtual void read(SSL&, input_buffer&) {}
|
||||
|
@ -31,8 +31,8 @@
|
||||
#include "yassl_imp.hpp"
|
||||
#include "crypto_wrapper.hpp"
|
||||
#include "cert_wrapper.hpp"
|
||||
#include "lock.hpp"
|
||||
#include "log.hpp"
|
||||
#include "lock.hpp"
|
||||
|
||||
|
||||
namespace yaSSL {
|
||||
@ -122,7 +122,8 @@ public:
|
||||
|
||||
friend sslFactory& GetSSL_Factory(); // singleton creator
|
||||
private:
|
||||
static sslFactory instance;
|
||||
static sslFactory instance_;
|
||||
|
||||
sslFactory(const sslFactory&); // hide copy
|
||||
sslFactory& operator=(const sslFactory&); // and assign
|
||||
};
|
||||
@ -207,9 +208,10 @@ public:
|
||||
|
||||
friend Sessions& GetSessions(); // singleton creator
|
||||
private:
|
||||
static Sessions instance_;
|
||||
|
||||
Sessions(const Sessions&); // hide copy
|
||||
Sessions& operator=(const Sessions&); // and assign
|
||||
static Sessions instance;
|
||||
};
|
||||
|
||||
|
||||
|
@ -28,6 +28,9 @@
|
||||
#define yaSSL_TYPES_HPP
|
||||
|
||||
#include <stddef.h>
|
||||
#include <assert.h>
|
||||
#include "type_traits.hpp"
|
||||
|
||||
|
||||
namespace yaSSL {
|
||||
|
||||
@ -40,9 +43,41 @@ extern new_t ys; // pass in parameter
|
||||
void* operator new (size_t, yaSSL::new_t);
|
||||
void* operator new[](size_t, yaSSL::new_t);
|
||||
|
||||
void operator delete (void*, yaSSL::new_t);
|
||||
void operator delete[](void*, yaSSL::new_t);
|
||||
|
||||
|
||||
namespace yaSSL {
|
||||
|
||||
|
||||
template<typename T>
|
||||
void ysDelete(T* ptr)
|
||||
{
|
||||
if (ptr) ptr->~T();
|
||||
::operator delete(ptr, yaSSL::ys);
|
||||
}
|
||||
|
||||
template<typename T>
|
||||
void ysArrayDelete(T* ptr)
|
||||
{
|
||||
// can't do array placement destruction since not tracking size in
|
||||
// allocation, only allow builtins to use array placement since they
|
||||
// don't need destructors called
|
||||
typedef char builtin[TaoCrypt::IsFundamentalType<T>::Yes ? 1 : -1];
|
||||
(void)sizeof(builtin);
|
||||
|
||||
::operator delete[](ptr, yaSSL::ys);
|
||||
}
|
||||
|
||||
|
||||
// to resolve compiler generated operator delete on base classes with
|
||||
// virtual destructors, make sure doesn't get called
|
||||
class virtual_base {
|
||||
public:
|
||||
static void operator delete(void*) { assert(0); }
|
||||
};
|
||||
|
||||
|
||||
typedef unsigned char uint8;
|
||||
typedef unsigned short uint16;
|
||||
typedef unsigned int uint32;
|
||||
|
@ -28,6 +28,7 @@
|
||||
#define mySTL_HELPERS_HPP
|
||||
|
||||
#include <stdlib.h>
|
||||
#include <new> // placement new
|
||||
|
||||
|
||||
#ifdef __IBMCPP__
|
||||
|
@ -29,7 +29,7 @@
|
||||
|
||||
|
||||
#include "helpers.hpp"
|
||||
#include <new> // ::operator new and delete, placement too
|
||||
#include <stdlib.h>
|
||||
|
||||
|
||||
namespace mySTL {
|
||||
@ -38,13 +38,15 @@ namespace mySTL {
|
||||
|
||||
template<typename T>
|
||||
class list {
|
||||
|
||||
#ifdef __SUNPRO_CC
|
||||
/*
|
||||
Sun Forte 7 C++ v. 5.4 needs class 'node' be public to be visible to
|
||||
Sun Forte 7 C++ v. 5.4 needs class 'node' public to be visible to
|
||||
the nested class 'iterator' (a non-standard behaviour).
|
||||
*/
|
||||
public:
|
||||
#endif
|
||||
|
||||
struct node {
|
||||
node(T t) : prev_(0), next_(0), value_(t) {}
|
||||
|
||||
@ -94,18 +96,18 @@ public:
|
||||
return *this;
|
||||
}
|
||||
|
||||
iterator& operator++(int)
|
||||
iterator operator++(int)
|
||||
{
|
||||
iterator tmp = *this;
|
||||
current_ = current_->next_;
|
||||
return *this;
|
||||
return tmp;
|
||||
}
|
||||
|
||||
iterator& operator--(int)
|
||||
iterator operator--(int)
|
||||
{
|
||||
iterator tmp = *this;
|
||||
current_ = current_->prev_;
|
||||
return *this;
|
||||
return tmp;
|
||||
}
|
||||
|
||||
bool operator==(const iterator& other) const
|
||||
@ -152,7 +154,7 @@ list<T>::~list()
|
||||
for (; start; start = next_) {
|
||||
next_ = start->next_;
|
||||
destroy(start);
|
||||
::operator delete(start);
|
||||
free(start);
|
||||
}
|
||||
}
|
||||
|
||||
@ -160,7 +162,7 @@ list<T>::~list()
|
||||
template<typename T>
|
||||
void list<T>::push_front(T t)
|
||||
{
|
||||
void* mem = ::operator new(sizeof(node));
|
||||
void* mem = malloc(sizeof(node));
|
||||
if (!mem) abort();
|
||||
node* add = new (mem) node(t);
|
||||
|
||||
@ -190,7 +192,7 @@ void list<T>::pop_front()
|
||||
head_->prev_ = 0;
|
||||
}
|
||||
destroy(front);
|
||||
::operator delete(front);
|
||||
free(front);
|
||||
--sz_;
|
||||
}
|
||||
|
||||
@ -206,7 +208,7 @@ T list<T>::front() const
|
||||
template<typename T>
|
||||
void list<T>::push_back(T t)
|
||||
{
|
||||
void* mem = ::operator new(sizeof(node));
|
||||
void* mem = malloc(sizeof(node));
|
||||
if (!mem) abort();
|
||||
node* add = new (mem) node(t);
|
||||
|
||||
@ -236,7 +238,7 @@ void list<T>::pop_back()
|
||||
tail_->next_ = 0;
|
||||
}
|
||||
destroy(rear);
|
||||
::operator delete(rear);
|
||||
free(rear);
|
||||
--sz_;
|
||||
}
|
||||
|
||||
@ -280,7 +282,7 @@ bool list<T>::remove(T t)
|
||||
del->next_->prev_ = del->prev_;
|
||||
|
||||
destroy(del);
|
||||
::operator delete(del);
|
||||
free(del);
|
||||
--sz_;
|
||||
}
|
||||
return true;
|
||||
@ -303,7 +305,7 @@ bool list<T>::erase(iterator iter)
|
||||
del->next_->prev_ = del->prev_;
|
||||
|
||||
destroy(del);
|
||||
::operator delete(del);
|
||||
free(del);
|
||||
--sz_;
|
||||
}
|
||||
return true;
|
||||
|
@ -37,30 +37,42 @@
|
||||
namespace mySTL {
|
||||
|
||||
|
||||
template<typename T>
|
||||
template<typename T, typename Deletor = void (*) (T*)>
|
||||
struct auto_ptr_ref {
|
||||
T* ptr_;
|
||||
explicit auto_ptr_ref(T* p) : ptr_(p) {}
|
||||
Deletor del_;
|
||||
auto_ptr_ref(T* p, Deletor d) : ptr_(p), del_(d) {}
|
||||
};
|
||||
|
||||
|
||||
template<typename T>
|
||||
template<typename T, typename Deletor = void (*) (T*)>
|
||||
class auto_ptr {
|
||||
T* ptr_;
|
||||
Deletor del_;
|
||||
|
||||
void Destroy()
|
||||
{
|
||||
del_(ptr_);
|
||||
}
|
||||
public:
|
||||
explicit auto_ptr(T* p = 0) : ptr_(p) {}
|
||||
auto_ptr(T* p, Deletor d) : ptr_(p), del_(d) {}
|
||||
|
||||
explicit auto_ptr(Deletor d) : ptr_(0), del_(d) {}
|
||||
|
||||
~auto_ptr()
|
||||
{
|
||||
delete ptr_;
|
||||
Destroy();
|
||||
}
|
||||
|
||||
|
||||
auto_ptr(auto_ptr& other) : ptr_(other.release()) {}
|
||||
auto_ptr(auto_ptr& other) : ptr_(other.release()), del_(other.del_) {}
|
||||
|
||||
auto_ptr& operator=(auto_ptr& that)
|
||||
{
|
||||
if (this != &that) {
|
||||
delete ptr_;
|
||||
Destroy();
|
||||
ptr_ = that.release();
|
||||
del_ = that.del_;
|
||||
}
|
||||
return *this;
|
||||
}
|
||||
@ -91,19 +103,20 @@ public:
|
||||
void reset(T* p = 0)
|
||||
{
|
||||
if (ptr_ != p) {
|
||||
delete ptr_;
|
||||
Destroy();
|
||||
ptr_ = p;
|
||||
}
|
||||
}
|
||||
|
||||
// auto_ptr_ref conversions
|
||||
auto_ptr(auto_ptr_ref<T> ref) : ptr_(ref.ptr_) {}
|
||||
auto_ptr(auto_ptr_ref<T> ref) : ptr_(ref.ptr_), del_(ref.del_) {}
|
||||
|
||||
auto_ptr& operator=(auto_ptr_ref<T> ref)
|
||||
{
|
||||
if (this->ptr_ != ref.ptr_) {
|
||||
delete ptr_;
|
||||
Destroy();
|
||||
ptr_ = ref.ptr_;
|
||||
del_ = ref.del_;
|
||||
}
|
||||
return *this;
|
||||
}
|
||||
@ -111,13 +124,13 @@ public:
|
||||
template<typename T2>
|
||||
operator auto_ptr<T2>()
|
||||
{
|
||||
return auto_ptr<T2>(this->release());
|
||||
return auto_ptr<T2>(this->release(), this->del_);
|
||||
}
|
||||
|
||||
template<typename T2>
|
||||
operator auto_ptr_ref<T2>()
|
||||
{
|
||||
return auto_ptr_ref<T2>(this->release());
|
||||
return auto_ptr_ref<T2>(this->release(), this->del_);
|
||||
}
|
||||
};
|
||||
|
||||
|
@ -27,11 +27,10 @@
|
||||
#ifndef mySTL_VECTOR_HPP
|
||||
#define mySTL_VECTOR_HPP
|
||||
|
||||
|
||||
#include "helpers.hpp" // construct, destory, fill, etc.
|
||||
#include "algorithm.hpp" // swap
|
||||
#include <new> // ::operator new and delete, placement too
|
||||
#include <assert.h> // assert
|
||||
#include <stdlib.h> // malloc
|
||||
|
||||
|
||||
namespace mySTL {
|
||||
@ -46,13 +45,13 @@ struct vector_base {
|
||||
vector_base() : start_(0), finish_(0), end_of_storage_(0) {}
|
||||
vector_base(size_t n)
|
||||
{
|
||||
start_ = static_cast<T*>(::operator new(n * sizeof(T)));
|
||||
start_ = static_cast<T*>(malloc(n * sizeof(T)));
|
||||
if (!start_) abort();
|
||||
finish_ = start_;
|
||||
end_of_storage_ = start_ + n;
|
||||
}
|
||||
|
||||
~vector_base() { ::operator delete(start_); }
|
||||
~vector_base() { if (start_) free(start_); }
|
||||
|
||||
void Swap(vector_base& that)
|
||||
{
|
||||
|
@ -3,5 +3,5 @@ INCLUDES = -I../include -I../taocrypt/include -I../mySTL
|
||||
noinst_LIBRARIES = libyassl.a
|
||||
libyassl_a_SOURCES = buffer.cpp cert_wrapper.cpp crypto_wrapper.cpp \
|
||||
handshake.cpp lock.cpp log.cpp socket_wrapper.cpp ssl.cpp \
|
||||
timer.cpp yassl_imp.cpp yassl_error.cpp yassl_int.cpp
|
||||
template_instnt.cpp timer.cpp yassl_imp.cpp yassl_error.cpp yassl_int.cpp
|
||||
EXTRA_DIST = ../include/*.hpp ../include/openssl/*.h
|
||||
|
@ -24,7 +24,6 @@
|
||||
* with SSL types and sockets
|
||||
*/
|
||||
|
||||
#include "runtime.hpp"
|
||||
#include "buffer.hpp"
|
||||
#include "yassl_types.hpp"
|
||||
|
||||
@ -76,7 +75,7 @@ input_buffer::input_buffer(uint s, const byte* t, uint len)
|
||||
|
||||
input_buffer::~input_buffer()
|
||||
{
|
||||
delete [] buffer_;
|
||||
ysArrayDelete(buffer_);
|
||||
}
|
||||
|
||||
|
||||
@ -96,7 +95,7 @@ byte* input_buffer::get_buffer() const
|
||||
}
|
||||
|
||||
|
||||
// after a raw write user can set new size
|
||||
// after a raw write user can set new (ys) size
|
||||
// if you know the size before the write use assign()
|
||||
void input_buffer::add_size(uint i)
|
||||
{
|
||||
@ -212,7 +211,7 @@ output_buffer::output_buffer(uint s, const byte* t, uint len)
|
||||
|
||||
output_buffer::~output_buffer()
|
||||
{
|
||||
delete [] buffer_;
|
||||
ysArrayDelete(buffer_);
|
||||
}
|
||||
|
||||
|
||||
|
@ -24,7 +24,6 @@
|
||||
*
|
||||
*/
|
||||
|
||||
#include "runtime.hpp"
|
||||
#include "cert_wrapper.hpp"
|
||||
#include "yassl_int.hpp"
|
||||
|
||||
@ -46,7 +45,7 @@ x509::x509(uint sz) : length_(sz), buffer_(new (ys) opaque[sz])
|
||||
|
||||
x509::~x509()
|
||||
{
|
||||
delete [] buffer_;
|
||||
ysArrayDelete(buffer_);
|
||||
}
|
||||
|
||||
|
||||
@ -98,7 +97,7 @@ CertManager::CertManager()
|
||||
|
||||
CertManager::~CertManager()
|
||||
{
|
||||
delete peerX509_;
|
||||
ysDelete(peerX509_);
|
||||
|
||||
mySTL::for_each(signers_.begin(), signers_.end(), del_ptr_zero()) ;
|
||||
|
||||
@ -273,13 +272,13 @@ int CertManager::SetPrivateKey(const x509& key)
|
||||
privateKey_.assign(key.get_buffer(), key.get_length());
|
||||
|
||||
// set key type
|
||||
if (x509* cert509 = list_.front()) {
|
||||
TaoCrypt::Source source(cert509->get_buffer(), cert509->get_length());
|
||||
TaoCrypt::CertDecoder cert(source, false);
|
||||
cert.DecodeToKey();
|
||||
if (int err = cert.GetError().What())
|
||||
if (x509* cert = list_.front()) {
|
||||
TaoCrypt::Source source(cert->get_buffer(), cert->get_length());
|
||||
TaoCrypt::CertDecoder cd(source, false);
|
||||
cd.DecodeToKey();
|
||||
if (int err = cd.GetError().What())
|
||||
return err;
|
||||
if (cert.GetKeyType() == TaoCrypt::RSAk)
|
||||
if (cd.GetKeyType() == TaoCrypt::RSAk)
|
||||
keyType_ = rsa_sa_algo;
|
||||
else
|
||||
keyType_ = dsa_sa_algo;
|
||||
|
@ -61,7 +61,7 @@ struct MD5::MD5Impl {
|
||||
MD5::MD5() : pimpl_(new (ys) MD5Impl) {}
|
||||
|
||||
|
||||
MD5::~MD5() { delete pimpl_; }
|
||||
MD5::~MD5() { ysDelete(pimpl_); }
|
||||
|
||||
|
||||
MD5::MD5(const MD5& that) : Digest(), pimpl_(new (ys)
|
||||
@ -119,11 +119,10 @@ struct SHA::SHAImpl {
|
||||
SHA::SHA() : pimpl_(new (ys) SHAImpl) {}
|
||||
|
||||
|
||||
SHA::~SHA() { delete pimpl_; }
|
||||
SHA::~SHA() { ysDelete(pimpl_); }
|
||||
|
||||
|
||||
SHA::SHA(const SHA& that) : Digest(), pimpl_(new (ys)
|
||||
SHAImpl(that.pimpl_->sha_)) {}
|
||||
SHA::SHA(const SHA& that) : Digest(), pimpl_(new (ys) SHAImpl(that.pimpl_->sha_)) {}
|
||||
|
||||
SHA& SHA::operator=(const SHA& that)
|
||||
{
|
||||
@ -177,11 +176,10 @@ struct RMD::RMDImpl {
|
||||
RMD::RMD() : pimpl_(new (ys) RMDImpl) {}
|
||||
|
||||
|
||||
RMD::~RMD() { delete pimpl_; }
|
||||
RMD::~RMD() { ysDelete(pimpl_); }
|
||||
|
||||
|
||||
RMD::RMD(const RMD& that) : Digest(), pimpl_(new (ys)
|
||||
RMDImpl(that.pimpl_->rmd_)) {}
|
||||
RMD::RMD(const RMD& that) : Digest(), pimpl_(new (ys) RMDImpl(that.pimpl_->rmd_)) {}
|
||||
|
||||
RMD& RMD::operator=(const RMD& that)
|
||||
{
|
||||
@ -238,7 +236,7 @@ HMAC_MD5::HMAC_MD5(const byte* secret, unsigned int len)
|
||||
}
|
||||
|
||||
|
||||
HMAC_MD5::~HMAC_MD5() { delete pimpl_; }
|
||||
HMAC_MD5::~HMAC_MD5() { ysDelete(pimpl_); }
|
||||
|
||||
|
||||
uint HMAC_MD5::get_digestSize() const
|
||||
@ -288,7 +286,7 @@ HMAC_SHA::HMAC_SHA(const byte* secret, unsigned int len)
|
||||
}
|
||||
|
||||
|
||||
HMAC_SHA::~HMAC_SHA() { delete pimpl_; }
|
||||
HMAC_SHA::~HMAC_SHA() { ysDelete(pimpl_); }
|
||||
|
||||
|
||||
uint HMAC_SHA::get_digestSize() const
|
||||
@ -339,7 +337,7 @@ HMAC_RMD::HMAC_RMD(const byte* secret, unsigned int len)
|
||||
}
|
||||
|
||||
|
||||
HMAC_RMD::~HMAC_RMD() { delete pimpl_; }
|
||||
HMAC_RMD::~HMAC_RMD() { ysDelete(pimpl_); }
|
||||
|
||||
|
||||
uint HMAC_RMD::get_digestSize() const
|
||||
@ -383,7 +381,7 @@ struct DES::DESImpl {
|
||||
|
||||
DES::DES() : pimpl_(new (ys) DESImpl) {}
|
||||
|
||||
DES::~DES() { delete pimpl_; }
|
||||
DES::~DES() { ysDelete(pimpl_); }
|
||||
|
||||
|
||||
void DES::set_encryptKey(const byte* k, const byte* iv)
|
||||
@ -419,7 +417,7 @@ struct DES_EDE::DES_EDEImpl {
|
||||
|
||||
DES_EDE::DES_EDE() : pimpl_(new (ys) DES_EDEImpl) {}
|
||||
|
||||
DES_EDE::~DES_EDE() { delete pimpl_; }
|
||||
DES_EDE::~DES_EDE() { ysDelete(pimpl_); }
|
||||
|
||||
|
||||
void DES_EDE::set_encryptKey(const byte* k, const byte* iv)
|
||||
@ -457,7 +455,7 @@ struct RC4::RC4Impl {
|
||||
|
||||
RC4::RC4() : pimpl_(new (ys) RC4Impl) {}
|
||||
|
||||
RC4::~RC4() { delete pimpl_; }
|
||||
RC4::~RC4() { ysDelete(pimpl_); }
|
||||
|
||||
|
||||
void RC4::set_encryptKey(const byte* k, const byte*)
|
||||
@ -499,7 +497,7 @@ struct AES::AESImpl {
|
||||
|
||||
AES::AES(unsigned int ks) : pimpl_(new (ys) AESImpl(ks)) {}
|
||||
|
||||
AES::~AES() { delete pimpl_; }
|
||||
AES::~AES() { ysDelete(pimpl_); }
|
||||
|
||||
|
||||
int AES::get_keySize() const
|
||||
@ -540,7 +538,7 @@ struct RandomPool::RandomImpl {
|
||||
|
||||
RandomPool::RandomPool() : pimpl_(new (ys) RandomImpl) {}
|
||||
|
||||
RandomPool::~RandomPool() { delete pimpl_; }
|
||||
RandomPool::~RandomPool() { ysDelete(pimpl_); }
|
||||
|
||||
int RandomPool::GetError() const
|
||||
{
|
||||
@ -593,7 +591,7 @@ DSS::DSS(const byte* key, unsigned int sz, bool publicKey)
|
||||
|
||||
DSS::~DSS()
|
||||
{
|
||||
delete pimpl_;
|
||||
ysDelete(pimpl_);
|
||||
}
|
||||
|
||||
|
||||
@ -663,7 +661,7 @@ RSA::RSA(const byte* key, unsigned int sz, bool publicKey)
|
||||
|
||||
RSA::~RSA()
|
||||
{
|
||||
delete pimpl_;
|
||||
ysDelete(pimpl_);
|
||||
}
|
||||
|
||||
|
||||
@ -727,7 +725,7 @@ struct Integer::IntegerImpl {
|
||||
|
||||
Integer::Integer() : pimpl_(new (ys) IntegerImpl) {}
|
||||
|
||||
Integer::~Integer() { delete pimpl_; }
|
||||
Integer::~Integer() { ysDelete(pimpl_); }
|
||||
|
||||
|
||||
|
||||
@ -759,7 +757,12 @@ struct DiffieHellman::DHImpl {
|
||||
|
||||
DHImpl(TaoCrypt::RandomNumberGenerator& r) : ranPool_(r), publicKey_(0),
|
||||
privateKey_(0), agreedKey_(0) {}
|
||||
~DHImpl() {delete[] agreedKey_; delete[] privateKey_; delete[] publicKey_;}
|
||||
~DHImpl()
|
||||
{
|
||||
ysArrayDelete(agreedKey_);
|
||||
ysArrayDelete(privateKey_);
|
||||
ysArrayDelete(publicKey_);
|
||||
}
|
||||
|
||||
DHImpl(const DHImpl& that) : dh_(that.dh_), ranPool_(that.ranPool_),
|
||||
publicKey_(0), privateKey_(0), agreedKey_(0)
|
||||
@ -831,7 +834,7 @@ DiffieHellman::DiffieHellman(const Integer& p, const Integer& g,
|
||||
pimpl_->publicKey_);
|
||||
}
|
||||
|
||||
DiffieHellman::~DiffieHellman() { delete pimpl_; }
|
||||
DiffieHellman::~DiffieHellman() { ysDelete(pimpl_); }
|
||||
|
||||
|
||||
// Client side and view, use server that for p and g
|
||||
@ -957,7 +960,7 @@ x509* PemToDer(const char* fname, CertType type)
|
||||
Base64Decoder b64Dec(der);
|
||||
|
||||
uint sz = der.size();
|
||||
mySTL::auto_ptr<x509> x(new (ys) x509(sz));
|
||||
mySTL::auto_ptr<x509> x(new (ys) x509(sz), ysDelete);
|
||||
memcpy(x->use_buffer(), der.get_buffer(), sz);
|
||||
|
||||
fclose(file);
|
||||
@ -967,12 +970,25 @@ x509* PemToDer(const char* fname, CertType type)
|
||||
|
||||
} // namespace
|
||||
|
||||
|
||||
#ifdef __GNUC__
|
||||
template class TaoCrypt::HMAC<TaoCrypt::MD5>;
|
||||
template class TaoCrypt::HMAC<TaoCrypt::SHA>;
|
||||
template class TaoCrypt::HMAC<TaoCrypt::RIPEMD160>;
|
||||
template class TaoCrypt::Mode_BASE<16>;
|
||||
template class TaoCrypt::Mode_BASE<8>;
|
||||
#endif
|
||||
namespace yaSSL {
|
||||
template void ysDelete<DiffieHellman::DHImpl>(DiffieHellman::DHImpl*);
|
||||
template void ysDelete<Integer::IntegerImpl>(Integer::IntegerImpl*);
|
||||
template void ysDelete<RSA::RSAImpl>(RSA::RSAImpl*);
|
||||
template void ysDelete<DSS::DSSImpl>(DSS::DSSImpl*);
|
||||
template void ysDelete<RandomPool::RandomImpl>(RandomPool::RandomImpl*);
|
||||
template void ysDelete<AES::AESImpl>(AES::AESImpl*);
|
||||
template void ysDelete<RC4::RC4Impl>(RC4::RC4Impl*);
|
||||
template void ysDelete<DES_EDE::DES_EDEImpl>(DES_EDE::DES_EDEImpl*);
|
||||
template void ysDelete<DES::DESImpl>(DES::DESImpl*);
|
||||
template void ysDelete<HMAC_RMD::HMAC_RMDImpl>(HMAC_RMD::HMAC_RMDImpl*);
|
||||
template void ysDelete<HMAC_SHA::HMAC_SHAImpl>(HMAC_SHA::HMAC_SHAImpl*);
|
||||
template void ysDelete<HMAC_MD5::HMAC_MD5Impl>(HMAC_MD5::HMAC_MD5Impl*);
|
||||
template void ysDelete<RMD::RMDImpl>(RMD::RMDImpl*);
|
||||
template void ysDelete<SHA::SHAImpl>(SHA::SHAImpl*);
|
||||
template void ysDelete<MD5::MD5Impl>(MD5::MD5Impl*);
|
||||
}
|
||||
#endif // __GNUC__
|
||||
|
||||
#endif // !USE_CRYPTOPP_LIB
|
||||
|
@ -357,7 +357,7 @@ void p_hash(output_buffer& result, const output_buffer& secret,
|
||||
uint lastLen = result.get_capacity() % len;
|
||||
opaque previous[SHA_LEN]; // max size
|
||||
opaque current[SHA_LEN]; // max size
|
||||
mySTL::auto_ptr<Digest> hmac;
|
||||
mySTL::auto_ptr<Digest> hmac(ysDelete);
|
||||
|
||||
if (lastLen) times += 1;
|
||||
|
||||
@ -571,7 +571,7 @@ void hmac(SSL& ssl, byte* digest, const byte* buffer, uint sz,
|
||||
void TLS_hmac(SSL& ssl, byte* digest, const byte* buffer, uint sz,
|
||||
ContentType content, bool verify)
|
||||
{
|
||||
mySTL::auto_ptr<Digest> hmac;
|
||||
mySTL::auto_ptr<Digest> hmac(ysDelete);
|
||||
opaque seq[SEQ_SZ] = { 0x00, 0x00, 0x00, 0x00 };
|
||||
opaque length[LENGTH_SZ];
|
||||
opaque inner[SIZEOF_ENUM + VERSION_SZ + LENGTH_SZ]; // type + version + len
|
||||
@ -648,7 +648,7 @@ void build_certHashes(SSL& ssl, Hashes& hashes)
|
||||
}
|
||||
|
||||
|
||||
mySTL::auto_ptr<input_buffer> null_buffer;
|
||||
mySTL::auto_ptr<input_buffer> null_buffer(ysDelete);
|
||||
|
||||
// do process input requests
|
||||
mySTL::auto_ptr<input_buffer>
|
||||
@ -666,7 +666,7 @@ DoProcessReply(SSL& ssl, mySTL::auto_ptr<input_buffer> buffered)
|
||||
buffered = null_buffer;
|
||||
}
|
||||
|
||||
// add new data
|
||||
// add new (ys) data
|
||||
uint read = ssl.getSocket().receive(buffer.get_buffer() + buffSz, ready);
|
||||
buffer.add_size(read);
|
||||
uint offset = 0;
|
||||
@ -696,7 +696,7 @@ DoProcessReply(SSL& ssl, mySTL::auto_ptr<input_buffer> buffered)
|
||||
// each message in record
|
||||
if (ssl.getSecurity().get_parms().pending_ == false) // cipher on
|
||||
decrypt_message(ssl, buffer, hdr.length_);
|
||||
mySTL::auto_ptr<Message> msg(mf.CreateObject(hdr.type_));
|
||||
mySTL::auto_ptr<Message> msg(mf.CreateObject(hdr.type_), ysDelete);
|
||||
if (!msg.get()) {
|
||||
ssl.SetError(factory_error);
|
||||
return buffered = null_buffer;
|
||||
@ -715,7 +715,7 @@ DoProcessReply(SSL& ssl, mySTL::auto_ptr<input_buffer> buffered)
|
||||
void processReply(SSL& ssl)
|
||||
{
|
||||
if (ssl.GetError()) return;
|
||||
mySTL::auto_ptr<input_buffer> buffered;
|
||||
mySTL::auto_ptr<input_buffer> buffered(ysDelete);
|
||||
|
||||
for (;;) {
|
||||
mySTL::auto_ptr<input_buffer> tmp = DoProcessReply(ssl, buffered);
|
||||
@ -760,7 +760,7 @@ void sendClientKeyExchange(SSL& ssl, BufferOutput buffer)
|
||||
|
||||
RecordLayerHeader rlHeader;
|
||||
HandShakeHeader hsHeader;
|
||||
mySTL::auto_ptr<output_buffer> out(new (ys) output_buffer);
|
||||
mySTL::auto_ptr<output_buffer> out(new (ys) output_buffer, ysDelete);
|
||||
buildHeaders(ssl, hsHeader, rlHeader, ck);
|
||||
buildOutput(*out.get(), rlHeader, hsHeader, ck);
|
||||
hashHandShake(ssl, *out.get());
|
||||
@ -781,7 +781,7 @@ void sendServerKeyExchange(SSL& ssl, BufferOutput buffer)
|
||||
|
||||
RecordLayerHeader rlHeader;
|
||||
HandShakeHeader hsHeader;
|
||||
mySTL::auto_ptr<output_buffer> out(new (ys) output_buffer);
|
||||
mySTL::auto_ptr<output_buffer> out(new (ys) output_buffer, ysDelete);
|
||||
buildHeaders(ssl, hsHeader, rlHeader, sk);
|
||||
buildOutput(*out.get(), rlHeader, hsHeader, sk);
|
||||
hashHandShake(ssl, *out.get());
|
||||
@ -806,7 +806,7 @@ void sendChangeCipher(SSL& ssl, BufferOutput buffer)
|
||||
ChangeCipherSpec ccs;
|
||||
RecordLayerHeader rlHeader;
|
||||
buildHeader(ssl, rlHeader, ccs);
|
||||
mySTL::auto_ptr<output_buffer> out(new (ys) output_buffer);
|
||||
mySTL::auto_ptr<output_buffer> out(new (ys) output_buffer, ysDelete);
|
||||
buildOutput(*out.get(), rlHeader, ccs);
|
||||
|
||||
if (buffer == buffered)
|
||||
@ -823,7 +823,7 @@ void sendFinished(SSL& ssl, ConnectionEnd side, BufferOutput buffer)
|
||||
|
||||
Finished fin;
|
||||
buildFinished(ssl, fin, side == client_end ? client : server);
|
||||
mySTL::auto_ptr<output_buffer> out(new (ys) output_buffer);
|
||||
mySTL::auto_ptr<output_buffer> out(new (ys) output_buffer, ysDelete);
|
||||
cipherFinished(ssl, fin, *out.get()); // hashes handshake
|
||||
|
||||
if (ssl.getSecurity().get_resuming()) {
|
||||
@ -907,7 +907,7 @@ void sendServerHello(SSL& ssl, BufferOutput buffer)
|
||||
ServerHello sh(ssl.getSecurity().get_connection().version_);
|
||||
RecordLayerHeader rlHeader;
|
||||
HandShakeHeader hsHeader;
|
||||
mySTL::auto_ptr<output_buffer> out(new (ys) output_buffer);
|
||||
mySTL::auto_ptr<output_buffer> out(new (ys) output_buffer, ysDelete);
|
||||
|
||||
buildServerHello(ssl, sh);
|
||||
ssl.set_random(sh.get_random(), server_end);
|
||||
@ -930,7 +930,7 @@ void sendServerHelloDone(SSL& ssl, BufferOutput buffer)
|
||||
ServerHelloDone shd;
|
||||
RecordLayerHeader rlHeader;
|
||||
HandShakeHeader hsHeader;
|
||||
mySTL::auto_ptr<output_buffer> out(new (ys) output_buffer);
|
||||
mySTL::auto_ptr<output_buffer> out(new (ys) output_buffer, ysDelete);
|
||||
|
||||
buildHeaders(ssl, hsHeader, rlHeader, shd);
|
||||
buildOutput(*out.get(), rlHeader, hsHeader, shd);
|
||||
@ -951,7 +951,7 @@ void sendCertificate(SSL& ssl, BufferOutput buffer)
|
||||
Certificate cert(ssl.getCrypto().get_certManager().get_cert());
|
||||
RecordLayerHeader rlHeader;
|
||||
HandShakeHeader hsHeader;
|
||||
mySTL::auto_ptr<output_buffer> out(new (ys) output_buffer);
|
||||
mySTL::auto_ptr<output_buffer> out(new (ys) output_buffer, ysDelete);
|
||||
|
||||
buildHeaders(ssl, hsHeader, rlHeader, cert);
|
||||
buildOutput(*out.get(), rlHeader, hsHeader, cert);
|
||||
@ -973,7 +973,7 @@ void sendCertificateRequest(SSL& ssl, BufferOutput buffer)
|
||||
request.Build();
|
||||
RecordLayerHeader rlHeader;
|
||||
HandShakeHeader hsHeader;
|
||||
mySTL::auto_ptr<output_buffer> out(new (ys) output_buffer);
|
||||
mySTL::auto_ptr<output_buffer> out(new (ys) output_buffer, ysDelete);
|
||||
|
||||
buildHeaders(ssl, hsHeader, rlHeader, request);
|
||||
buildOutput(*out.get(), rlHeader, hsHeader, request);
|
||||
@ -995,7 +995,7 @@ void sendCertificateVerify(SSL& ssl, BufferOutput buffer)
|
||||
verify.Build(ssl);
|
||||
RecordLayerHeader rlHeader;
|
||||
HandShakeHeader hsHeader;
|
||||
mySTL::auto_ptr<output_buffer> out(new (ys) output_buffer);
|
||||
mySTL::auto_ptr<output_buffer> out(new (ys) output_buffer, ysDelete);
|
||||
|
||||
buildHeaders(ssl, hsHeader, rlHeader, verify);
|
||||
buildOutput(*out.get(), rlHeader, hsHeader, verify);
|
||||
|
@ -22,7 +22,6 @@
|
||||
/* Locking functions
|
||||
*/
|
||||
|
||||
#include "runtime.hpp"
|
||||
#include "lock.hpp"
|
||||
|
||||
|
||||
|
@ -22,13 +22,12 @@
|
||||
/* Debug logging functions
|
||||
*/
|
||||
|
||||
#include "runtime.hpp"
|
||||
#include "log.hpp"
|
||||
|
||||
#ifdef YASSL_LOG
|
||||
#include <ctime>
|
||||
#include <cstdio>
|
||||
#include <cstring>
|
||||
#include <time.h>
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
#endif
|
||||
|
||||
|
||||
|
@ -26,7 +26,6 @@
|
||||
*/
|
||||
|
||||
|
||||
#include "runtime.hpp"
|
||||
#include "socket_wrapper.hpp"
|
||||
#include "yassl_error.hpp"
|
||||
|
||||
|
@ -32,7 +32,6 @@
|
||||
|
||||
/* see man pages for function descriptions */
|
||||
|
||||
#include "runtime.hpp"
|
||||
#include "openssl/ssl.h"
|
||||
#include "handshake.hpp"
|
||||
#include "yassl_int.hpp"
|
||||
@ -52,25 +51,25 @@ SSL_METHOD* SSLv3_method()
|
||||
|
||||
SSL_METHOD* SSLv3_server_method()
|
||||
{
|
||||
return new SSL_METHOD(server_end, ProtocolVersion(3,0));
|
||||
return new (ys) SSL_METHOD(server_end, ProtocolVersion(3,0));
|
||||
}
|
||||
|
||||
|
||||
SSL_METHOD* SSLv3_client_method()
|
||||
{
|
||||
return new SSL_METHOD(client_end, ProtocolVersion(3,0));
|
||||
return new (ys) SSL_METHOD(client_end, ProtocolVersion(3,0));
|
||||
}
|
||||
|
||||
|
||||
SSL_METHOD* TLSv1_server_method()
|
||||
{
|
||||
return new SSL_METHOD(server_end, ProtocolVersion(3,1));
|
||||
return new (ys) SSL_METHOD(server_end, ProtocolVersion(3,1));
|
||||
}
|
||||
|
||||
|
||||
SSL_METHOD* TLSv1_client_method()
|
||||
{
|
||||
return new SSL_METHOD(client_end, ProtocolVersion(3,1));
|
||||
return new (ys) SSL_METHOD(client_end, ProtocolVersion(3,1));
|
||||
}
|
||||
|
||||
|
||||
@ -83,25 +82,25 @@ SSL_METHOD* SSLv23_server_method()
|
||||
|
||||
SSL_CTX* SSL_CTX_new(SSL_METHOD* method)
|
||||
{
|
||||
return new SSL_CTX(method);
|
||||
return new (ys) SSL_CTX(method);
|
||||
}
|
||||
|
||||
|
||||
void SSL_CTX_free(SSL_CTX* ctx)
|
||||
{
|
||||
delete ctx;
|
||||
ysDelete(ctx);
|
||||
}
|
||||
|
||||
|
||||
SSL* SSL_new(SSL_CTX* ctx)
|
||||
{
|
||||
return new SSL(ctx);
|
||||
return new (ys) SSL(ctx);
|
||||
}
|
||||
|
||||
|
||||
void SSL_free(SSL* ssl)
|
||||
{
|
||||
delete ssl;
|
||||
ysDelete(ssl);
|
||||
}
|
||||
|
||||
|
||||
@ -638,7 +637,7 @@ void OpenSSL_add_all_algorithms() // compatibility only
|
||||
|
||||
DH* DH_new(void)
|
||||
{
|
||||
DH* dh = new DH;
|
||||
DH* dh = new (ys) DH;
|
||||
if (dh)
|
||||
dh->p = dh->g = 0;
|
||||
return dh;
|
||||
@ -647,9 +646,9 @@ DH* DH_new(void)
|
||||
|
||||
void DH_free(DH* dh)
|
||||
{
|
||||
delete dh->g;
|
||||
delete dh->p;
|
||||
delete dh;
|
||||
ysDelete(dh->g);
|
||||
ysDelete(dh->p);
|
||||
ysDelete(dh);
|
||||
}
|
||||
|
||||
|
||||
@ -659,7 +658,7 @@ BIGNUM* BN_bin2bn(const unsigned char* num, int sz, BIGNUM* retVal)
|
||||
{
|
||||
using mySTL::auto_ptr;
|
||||
bool created = false;
|
||||
auto_ptr<BIGNUM> bn;
|
||||
auto_ptr<BIGNUM> bn(ysDelete);
|
||||
|
||||
if (!retVal) {
|
||||
created = true;
|
||||
@ -712,14 +711,14 @@ const char* X509_verify_cert_error_string(long /* error */)
|
||||
const EVP_MD* EVP_md5(void)
|
||||
{
|
||||
// TODO: FIX add to some list for destruction
|
||||
return new MD5;
|
||||
return new (ys) MD5;
|
||||
}
|
||||
|
||||
|
||||
const EVP_CIPHER* EVP_des_ede3_cbc(void)
|
||||
{
|
||||
// TODO: FIX add to some list for destruction
|
||||
return new DES_EDE;
|
||||
return new (ys) DES_EDE;
|
||||
}
|
||||
|
||||
|
||||
|
67
extra/yassl/src/template_instnt.cpp
Normal file
67
extra/yassl/src/template_instnt.cpp
Normal file
@ -0,0 +1,67 @@
|
||||
#include "runtime.hpp"
|
||||
#include "handshake.hpp"
|
||||
#include "yassl_int.hpp"
|
||||
#include "crypto_wrapper.hpp"
|
||||
#include "hmac.hpp"
|
||||
#include "md5.hpp"
|
||||
#include "sha.hpp"
|
||||
#include "ripemd.hpp"
|
||||
#include "openssl/ssl.h"
|
||||
|
||||
#ifdef __GNUC__
|
||||
#if !defined(USE_CRYPTOPP_LIB)
|
||||
namespace TaoCrypt {
|
||||
template class HMAC<MD5>;
|
||||
template class HMAC<SHA>;
|
||||
template class HMAC<RIPEMD160>;
|
||||
}
|
||||
#endif
|
||||
|
||||
namespace mySTL {
|
||||
template class mySTL::list<unsigned char*>;
|
||||
template yaSSL::del_ptr_zero mySTL::for_each(mySTL::list<unsigned char*>::iterator, mySTL::list<unsigned char*>::iterator, yaSSL::del_ptr_zero);
|
||||
template mySTL::pair<int, yaSSL::Message* (*)()>* mySTL::uninit_copy<mySTL::pair<int, yaSSL::Message* (*)()>*, mySTL::pair<int, yaSSL::Message* (*)()>*>(mySTL::pair<int, yaSSL::Message* (*)()>*, mySTL::pair<int, yaSSL::Message* (*)()>*, mySTL::pair<int, yaSSL::Message* (*)()>*);
|
||||
template mySTL::pair<int, yaSSL::HandShakeBase* (*)()>* mySTL::uninit_copy<mySTL::pair<int, yaSSL::HandShakeBase* (*)()>*, mySTL::pair<int, yaSSL::HandShakeBase* (*)()>*>(mySTL::pair<int, yaSSL::HandShakeBase* (*)()>*, mySTL::pair<int, yaSSL::HandShakeBase* (*)()>*, mySTL::pair<int, yaSSL::HandShakeBase* (*)()>*);
|
||||
template void mySTL::destroy<mySTL::pair<int, yaSSL::Message* (*)()>*>(mySTL::pair<int, yaSSL::Message* (*)()>*, mySTL::pair<int, yaSSL::Message* (*)()>*);
|
||||
template void mySTL::destroy<mySTL::pair<int, yaSSL::HandShakeBase* (*)()>*>(mySTL::pair<int, yaSSL::HandShakeBase* (*)()>*, mySTL::pair<int, yaSSL::HandShakeBase* (*)()>*);
|
||||
template mySTL::pair<int, yaSSL::ServerKeyBase* (*)()>* mySTL::uninit_copy<mySTL::pair<int, yaSSL::ServerKeyBase* (*)()>*, mySTL::pair<int, yaSSL::ServerKeyBase* (*)()>*>(mySTL::pair<int, yaSSL::ServerKeyBase* (*)()>*, mySTL::pair<int, yaSSL::ServerKeyBase* (*)()>*, mySTL::pair<int, yaSSL::ServerKeyBase* (*)()>*);
|
||||
template void mySTL::destroy<mySTL::pair<int, yaSSL::ServerKeyBase* (*)()>*>(mySTL::pair<int, yaSSL::ServerKeyBase* (*)()>*, mySTL::pair<int, yaSSL::ServerKeyBase* (*)()>*);
|
||||
template mySTL::pair<int, yaSSL::ClientKeyBase* (*)()>* mySTL::uninit_copy<mySTL::pair<int, yaSSL::ClientKeyBase* (*)()>*, mySTL::pair<int, yaSSL::ClientKeyBase* (*)()>*>(mySTL::pair<int, yaSSL::ClientKeyBase* (*)()>*, mySTL::pair<int, yaSSL::ClientKeyBase* (*)()>*, mySTL::pair<int, yaSSL::ClientKeyBase* (*)()>*);
|
||||
template class mySTL::list<TaoCrypt::Signer*>;
|
||||
template class mySTL::list<yaSSL::SSL_SESSION*>;
|
||||
template class mySTL::list<yaSSL::input_buffer*>;
|
||||
template class mySTL::list<yaSSL::output_buffer*>;
|
||||
template class mySTL::list<yaSSL::x509*>;
|
||||
template void mySTL::destroy<mySTL::pair<int, yaSSL::ClientKeyBase* (*)()>*>(mySTL::pair<int, yaSSL::ClientKeyBase* (*)()>*, mySTL::pair<int, yaSSL::ClientKeyBase* (*)()>*);
|
||||
template yaSSL::del_ptr_zero mySTL::for_each<mySTL::list<TaoCrypt::Signer*>::iterator, yaSSL::del_ptr_zero>(mySTL::list<TaoCrypt::Signer*>::iterator, mySTL::list<TaoCrypt::Signer*>::iterator, yaSSL::del_ptr_zero);
|
||||
template yaSSL::del_ptr_zero mySTL::for_each<mySTL::list<yaSSL::SSL_SESSION*>::iterator, yaSSL::del_ptr_zero>(mySTL::list<yaSSL::SSL_SESSION*>::iterator, mySTL::list<yaSSL::SSL_SESSION*>::iterator, yaSSL::del_ptr_zero);
|
||||
template yaSSL::del_ptr_zero mySTL::for_each<mySTL::list<yaSSL::input_buffer*>::iterator, yaSSL::del_ptr_zero>(mySTL::list<yaSSL::input_buffer*>::iterator, mySTL::list<yaSSL::input_buffer*>::iterator, yaSSL::del_ptr_zero);
|
||||
template yaSSL::del_ptr_zero mySTL::for_each<mySTL::list<yaSSL::output_buffer*>::iterator, yaSSL::del_ptr_zero>(mySTL::list<yaSSL::output_buffer*>::iterator, mySTL::list<yaSSL::output_buffer*>::iterator, yaSSL::del_ptr_zero);
|
||||
template yaSSL::del_ptr_zero mySTL::for_each<mySTL::list<yaSSL::x509*>::iterator, yaSSL::del_ptr_zero>(mySTL::list<yaSSL::x509*>::iterator, mySTL::list<yaSSL::x509*>::iterator, yaSSL::del_ptr_zero);
|
||||
}
|
||||
|
||||
namespace yaSSL {
|
||||
template void ysDelete<SSL_CTX>(yaSSL::SSL_CTX*);
|
||||
template void ysDelete<SSL>(yaSSL::SSL*);
|
||||
template void ysDelete<BIGNUM>(yaSSL::BIGNUM*);
|
||||
template void ysDelete<unsigned char>(unsigned char*);
|
||||
template void ysDelete<DH>(yaSSL::DH*);
|
||||
template void ysDelete<TaoCrypt::Signer>(TaoCrypt::Signer*);
|
||||
template void ysDelete<SSL_SESSION>(yaSSL::SSL_SESSION*);
|
||||
template void ysDelete<input_buffer>(input_buffer*);
|
||||
template void ysDelete<output_buffer>(output_buffer*);
|
||||
template void ysDelete<x509>(x509*);
|
||||
template void ysDelete<Auth>(Auth*);
|
||||
template void ysDelete<HandShakeBase>(HandShakeBase*);
|
||||
template void ysDelete<ServerKeyBase>(ServerKeyBase*);
|
||||
template void ysDelete<ClientKeyBase>(ClientKeyBase*);
|
||||
template void ysDelete<SSL_METHOD>(SSL_METHOD*);
|
||||
template void ysDelete<DiffieHellman>(DiffieHellman*);
|
||||
template void ysDelete<BulkCipher>(BulkCipher*);
|
||||
template void ysDelete<Digest>(Digest*);
|
||||
template void ysDelete<X509>(X509*);
|
||||
template void ysDelete<Message>(Message*);
|
||||
template void ysArrayDelete<unsigned char>(unsigned char*);
|
||||
template void ysArrayDelete<char>(char*);
|
||||
}
|
||||
#endif
|
@ -23,7 +23,6 @@
|
||||
*
|
||||
*/
|
||||
|
||||
#include "runtime.hpp"
|
||||
#include "timer.hpp"
|
||||
|
||||
namespace yaSSL {
|
||||
|
@ -23,7 +23,6 @@
|
||||
/* yaSSL error implements and an exception class
|
||||
*/
|
||||
|
||||
#include "runtime.hpp"
|
||||
#include "yassl_error.hpp"
|
||||
|
||||
namespace yaSSL {
|
||||
|
@ -130,7 +130,7 @@ void DH_Server::build(SSL& ssl)
|
||||
parms_.alloc_pub(pubSz));
|
||||
|
||||
short sigSz = 0;
|
||||
mySTL::auto_ptr<Auth> auth;
|
||||
mySTL::auto_ptr<Auth> auth(ysDelete);
|
||||
const CertManager& cert = ssl.getCrypto().get_certManager();
|
||||
|
||||
if (ssl.getSecurity().get_parms().sig_algo_ == rsa_sa_algo)
|
||||
@ -234,7 +234,7 @@ EncryptedPreMasterSecret::EncryptedPreMasterSecret()
|
||||
|
||||
EncryptedPreMasterSecret::~EncryptedPreMasterSecret()
|
||||
{
|
||||
delete[] secret_;
|
||||
ysArrayDelete(secret_);
|
||||
}
|
||||
|
||||
|
||||
@ -284,7 +284,7 @@ ClientDiffieHellmanPublic::ClientDiffieHellmanPublic()
|
||||
|
||||
ClientDiffieHellmanPublic::~ClientDiffieHellmanPublic()
|
||||
{
|
||||
delete[] Yc_;
|
||||
ysArrayDelete(Yc_);
|
||||
}
|
||||
|
||||
|
||||
@ -400,8 +400,8 @@ DH_Server::DH_Server()
|
||||
|
||||
DH_Server::~DH_Server()
|
||||
{
|
||||
delete[] keyMessage_;
|
||||
delete[] signature_;
|
||||
ysArrayDelete(keyMessage_);
|
||||
ysArrayDelete(signature_);
|
||||
}
|
||||
|
||||
|
||||
@ -594,7 +594,7 @@ void HandShakeHeader::Process(input_buffer& input, SSL& ssl)
|
||||
{
|
||||
ssl.verifyState(*this);
|
||||
const HandShakeFactory& hsf = ssl.getFactory().getHandShake();
|
||||
mySTL::auto_ptr<HandShakeBase> hs(hsf.CreateObject(type_));
|
||||
mySTL::auto_ptr<HandShakeBase> hs(hsf.CreateObject(type_), ysDelete);
|
||||
if (!hs.get()) {
|
||||
ssl.SetError(factory_error);
|
||||
return;
|
||||
@ -1067,9 +1067,9 @@ ServerDHParams::ServerDHParams()
|
||||
|
||||
ServerDHParams::~ServerDHParams()
|
||||
{
|
||||
delete[] Ys_;
|
||||
delete[] g_;
|
||||
delete[] p_;
|
||||
ysArrayDelete(Ys_);
|
||||
ysArrayDelete(g_);
|
||||
ysArrayDelete(p_);
|
||||
}
|
||||
|
||||
|
||||
@ -1466,7 +1466,7 @@ ServerKeyExchange::ServerKeyExchange()
|
||||
|
||||
ServerKeyExchange::~ServerKeyExchange()
|
||||
{
|
||||
delete server_key_;
|
||||
ysDelete(server_key_);
|
||||
}
|
||||
|
||||
|
||||
@ -1647,7 +1647,7 @@ CertificateVerify::CertificateVerify() : signature_(0)
|
||||
|
||||
CertificateVerify::~CertificateVerify()
|
||||
{
|
||||
delete[] signature_;
|
||||
ysArrayDelete(signature_);
|
||||
}
|
||||
|
||||
|
||||
@ -1657,7 +1657,7 @@ void CertificateVerify::Build(SSL& ssl)
|
||||
|
||||
uint16 sz = 0;
|
||||
byte len[VERIFY_HEADER];
|
||||
mySTL::auto_ptr<byte> sig;
|
||||
mySTL::auto_ptr<byte> sig(ysArrayDelete);
|
||||
|
||||
// sign
|
||||
const CertManager& cert = ssl.getCrypto().get_certManager();
|
||||
@ -1796,7 +1796,7 @@ ClientKeyExchange::ClientKeyExchange()
|
||||
|
||||
ClientKeyExchange::~ClientKeyExchange()
|
||||
{
|
||||
delete client_key_;
|
||||
ysDelete(client_key_);
|
||||
}
|
||||
|
||||
|
||||
@ -1969,7 +1969,7 @@ Connection::Connection(ProtocolVersion v, RandomPool& ran)
|
||||
|
||||
Connection::~Connection()
|
||||
{
|
||||
CleanMaster(); CleanPreMaster(); delete[] pre_master_secret_;
|
||||
CleanMaster(); CleanPreMaster(); ysArrayDelete(pre_master_secret_);
|
||||
}
|
||||
|
||||
|
||||
@ -2004,7 +2004,7 @@ void Connection::CleanPreMaster()
|
||||
volatile opaque* p = pre_master_secret_;
|
||||
clean(p, pre_secret_len_, random_);
|
||||
|
||||
delete[] pre_master_secret_;
|
||||
ysArrayDelete(pre_master_secret_);
|
||||
pre_master_secret_ = 0;
|
||||
}
|
||||
}
|
||||
@ -2089,30 +2089,5 @@ void InitClientKeyFactory(ClientKeyFactory& ckf)
|
||||
ckf.Register(fortezza_kea, CreateFortezzaClient);
|
||||
}
|
||||
|
||||
|
||||
} // namespace
|
||||
|
||||
#ifdef __GNUC__
|
||||
namespace mySTL {
|
||||
template class mySTL::list<unsigned char*>;
|
||||
template yaSSL::del_ptr_zero mySTL::for_each(mySTL::list<unsigned char*>::iterator, mySTL::list<unsigned char*>::iterator, yaSSL::del_ptr_zero);
|
||||
template mySTL::pair<int, yaSSL::Message* (*)()>* mySTL::uninit_copy<mySTL::pair<int, yaSSL::Message* (*)()>*, mySTL::pair<int, yaSSL::Message* (*)()>*>(mySTL::pair<int, yaSSL::Message* (*)()>*, mySTL::pair<int, yaSSL::Message* (*)()>*, mySTL::pair<int, yaSSL::Message* (*)()>*);
|
||||
template mySTL::pair<int, yaSSL::HandShakeBase* (*)()>* mySTL::uninit_copy<mySTL::pair<int, yaSSL::HandShakeBase* (*)()>*, mySTL::pair<int, yaSSL::HandShakeBase* (*)()>*>(mySTL::pair<int, yaSSL::HandShakeBase* (*)()>*, mySTL::pair<int, yaSSL::HandShakeBase* (*)()>*, mySTL::pair<int, yaSSL::HandShakeBase* (*)()>*);
|
||||
template void mySTL::destroy<mySTL::pair<int, yaSSL::Message* (*)()>*>(mySTL::pair<int, yaSSL::Message* (*)()>*, mySTL::pair<int, yaSSL::Message* (*)()>*);
|
||||
template void mySTL::destroy<mySTL::pair<int, yaSSL::HandShakeBase* (*)()>*>(mySTL::pair<int, yaSSL::HandShakeBase* (*)()>*, mySTL::pair<int, yaSSL::HandShakeBase* (*)()>*);
|
||||
template mySTL::pair<int, yaSSL::ServerKeyBase* (*)()>* mySTL::uninit_copy<mySTL::pair<int, yaSSL::ServerKeyBase* (*)()>*, mySTL::pair<int, yaSSL::ServerKeyBase* (*)()>*>(mySTL::pair<int, yaSSL::ServerKeyBase* (*)()>*, mySTL::pair<int, yaSSL::ServerKeyBase* (*)()>*, mySTL::pair<int, yaSSL::ServerKeyBase* (*)()>*);
|
||||
template void mySTL::destroy<mySTL::pair<int, yaSSL::ServerKeyBase* (*)()>*>(mySTL::pair<int, yaSSL::ServerKeyBase* (*)()>*, mySTL::pair<int, yaSSL::ServerKeyBase* (*)()>*);
|
||||
template mySTL::pair<int, yaSSL::ClientKeyBase* (*)()>* mySTL::uninit_copy<mySTL::pair<int, yaSSL::ClientKeyBase* (*)()>*, mySTL::pair<int, yaSSL::ClientKeyBase* (*)()>*>(mySTL::pair<int, yaSSL::ClientKeyBase* (*)()>*, mySTL::pair<int, yaSSL::ClientKeyBase* (*)()>*, mySTL::pair<int, yaSSL::ClientKeyBase* (*)()>*);
|
||||
template class mySTL::list<TaoCrypt::Signer*>;
|
||||
template class mySTL::list<yaSSL::SSL_SESSION*>;
|
||||
template class mySTL::list<yaSSL::input_buffer*>;
|
||||
template class mySTL::list<yaSSL::output_buffer*>;
|
||||
template class mySTL::list<yaSSL::x509*>;
|
||||
template void mySTL::destroy<mySTL::pair<int, yaSSL::ClientKeyBase* (*)()>*>(mySTL::pair<int, yaSSL::ClientKeyBase* (*)()>*, mySTL::pair<int, yaSSL::ClientKeyBase* (*)()>*);
|
||||
template yaSSL::del_ptr_zero mySTL::for_each<mySTL::list<TaoCrypt::Signer*>::iterator, yaSSL::del_ptr_zero>(mySTL::list<TaoCrypt::Signer*>::iterator, mySTL::list<TaoCrypt::Signer*>::iterator, yaSSL::del_ptr_zero);
|
||||
template yaSSL::del_ptr_zero mySTL::for_each<mySTL::list<yaSSL::SSL_SESSION*>::iterator, yaSSL::del_ptr_zero>(mySTL::list<yaSSL::SSL_SESSION*>::iterator, mySTL::list<yaSSL::SSL_SESSION*>::iterator, yaSSL::del_ptr_zero);
|
||||
template yaSSL::del_ptr_zero mySTL::for_each<mySTL::list<yaSSL::input_buffer*>::iterator, yaSSL::del_ptr_zero>(mySTL::list<yaSSL::input_buffer*>::iterator, mySTL::list<yaSSL::input_buffer*>::iterator, yaSSL::del_ptr_zero);
|
||||
template yaSSL::del_ptr_zero mySTL::for_each<mySTL::list<yaSSL::output_buffer*>::iterator, yaSSL::del_ptr_zero>(mySTL::list<yaSSL::output_buffer*>::iterator, mySTL::list<yaSSL::output_buffer*>::iterator, yaSSL::del_ptr_zero);
|
||||
template yaSSL::del_ptr_zero mySTL::for_each<mySTL::list<yaSSL::x509*>::iterator, yaSSL::del_ptr_zero>(mySTL::list<yaSSL::x509*>::iterator, mySTL::list<yaSSL::x509*>::iterator, yaSSL::del_ptr_zero);
|
||||
}
|
||||
#endif
|
||||
|
||||
|
@ -24,7 +24,6 @@
|
||||
* draft along with type conversion functions.
|
||||
*/
|
||||
|
||||
#include "runtime.hpp"
|
||||
#include "yassl_int.hpp"
|
||||
#include "handshake.hpp"
|
||||
#include "timer.hpp"
|
||||
@ -33,34 +32,39 @@
|
||||
|
||||
void* operator new(size_t sz, yaSSL::new_t)
|
||||
{
|
||||
void* ptr = ::operator new(sz);
|
||||
|
||||
void* ptr = malloc(sz ? sz : 1);
|
||||
if (!ptr) abort();
|
||||
|
||||
return ptr;
|
||||
}
|
||||
|
||||
void* operator new[](size_t sz, yaSSL::new_t n)
|
||||
void* operator new[](size_t sz, yaSSL::new_t)
|
||||
{
|
||||
#if defined(_MSC_VER) && (_MSC_VER < 1300)
|
||||
void* ptr = ::operator new(sz); // no ::operator new[]
|
||||
#else
|
||||
void* ptr = ::operator new[](sz);
|
||||
#endif
|
||||
|
||||
void* ptr = malloc(sz ? sz : 1);
|
||||
if (!ptr) abort();
|
||||
|
||||
return ptr;
|
||||
}
|
||||
|
||||
void operator delete(void* ptr, yaSSL::new_t)
|
||||
{
|
||||
if (ptr) free(ptr);
|
||||
}
|
||||
|
||||
void operator delete[](void* ptr, yaSSL::new_t)
|
||||
{
|
||||
if (ptr) free(ptr);
|
||||
}
|
||||
|
||||
|
||||
|
||||
namespace yaSSL {
|
||||
|
||||
|
||||
using mySTL::min;
|
||||
|
||||
new_t ys; // for yaSSL library new
|
||||
|
||||
new_t ys; // for library new
|
||||
|
||||
|
||||
// convert a 32 bit integer into a 24 bit one
|
||||
@ -936,12 +940,14 @@ struct SumBuffer {
|
||||
} // namespace for locals
|
||||
using namespace yassl_int_cpp_local1;
|
||||
|
||||
|
||||
uint SSL::bufferedData()
|
||||
{
|
||||
return mySTL::for_each(buffers_.getData().begin(),buffers_.getData().end(),
|
||||
SumData()).total_;
|
||||
}
|
||||
|
||||
|
||||
// use input buffer to fill data
|
||||
void SSL::fillData(Data& data)
|
||||
{
|
||||
@ -962,7 +968,7 @@ void SSL::fillData(Data& data)
|
||||
|
||||
if (readSz == frontSz) {
|
||||
buffers_.useData().pop_front();
|
||||
delete front;
|
||||
ysDelete(front);
|
||||
}
|
||||
if (data.get_length() == dataSz)
|
||||
break;
|
||||
@ -986,7 +992,7 @@ void SSL::flushBuffer()
|
||||
out.write(front->get_buffer(), front->get_size());
|
||||
|
||||
buffers_.useHandShake().pop_front();
|
||||
delete front;
|
||||
ysDelete(front);
|
||||
}
|
||||
Send(out.get_buffer(), out.get_size());
|
||||
}
|
||||
@ -1346,18 +1352,19 @@ SSL_SESSION::~SSL_SESSION()
|
||||
}
|
||||
|
||||
|
||||
Sessions Sessions::instance; // simple singleton
|
||||
Sessions Sessions::instance_; // simple singleton
|
||||
|
||||
Sessions& GetSessions()
|
||||
{
|
||||
return Sessions::instance;
|
||||
return Sessions::instance_;
|
||||
}
|
||||
|
||||
sslFactory sslFactory::instance;
|
||||
|
||||
sslFactory sslFactory::instance_; // simple singleton
|
||||
|
||||
sslFactory& GetSSL_Factory()
|
||||
{
|
||||
return sslFactory::instance;
|
||||
return sslFactory::instance_;
|
||||
}
|
||||
|
||||
|
||||
@ -1397,6 +1404,7 @@ struct sess_match {
|
||||
} // local namespace
|
||||
using namespace yassl_int_cpp_local2;
|
||||
|
||||
|
||||
// lookup session by id, return a copy if space provided
|
||||
SSL_SESSION* Sessions::lookup(const opaque* id, SSL_SESSION* copy)
|
||||
{
|
||||
@ -1479,9 +1487,9 @@ SSL_CTX::SSL_CTX(SSL_METHOD* meth)
|
||||
|
||||
SSL_CTX::~SSL_CTX()
|
||||
{
|
||||
delete method_;
|
||||
delete certificate_;
|
||||
delete privateKey_;
|
||||
ysDelete(method_);
|
||||
ysDelete(certificate_);
|
||||
ysDelete(privateKey_);
|
||||
|
||||
mySTL::for_each(caList_.begin(), caList_.end(), del_ptr_zero());
|
||||
}
|
||||
@ -1687,9 +1695,9 @@ Crypto::Crypto()
|
||||
|
||||
Crypto::~Crypto()
|
||||
{
|
||||
delete dh_;
|
||||
delete cipher_;
|
||||
delete digest_;
|
||||
ysDelete(dh_);
|
||||
ysDelete(cipher_);
|
||||
ysDelete(digest_);
|
||||
}
|
||||
|
||||
|
||||
@ -1939,7 +1947,7 @@ X509_NAME::X509_NAME(const char* n, size_t sz)
|
||||
|
||||
X509_NAME::~X509_NAME()
|
||||
{
|
||||
delete[] name_;
|
||||
ysArrayDelete(name_);
|
||||
}
|
||||
|
||||
|
||||
|
@ -37,11 +37,12 @@ enum { AES_BLOCK_SIZE = 16 };
|
||||
|
||||
|
||||
// AES encryption and decryption, see FIPS-197
|
||||
class AES : public Mode_BASE<AES_BLOCK_SIZE> {
|
||||
class AES : public Mode_BASE {
|
||||
public:
|
||||
enum { BLOCK_SIZE = AES_BLOCK_SIZE };
|
||||
|
||||
AES(CipherDir DIR, Mode MODE) : dir_(DIR), mode_(MODE) {}
|
||||
AES(CipherDir DIR, Mode MODE)
|
||||
: Mode_BASE(BLOCK_SIZE), dir_(DIR), mode_(MODE) {}
|
||||
|
||||
void Process(byte*, const byte*, word32);
|
||||
void SetKey(const byte* iv, word32 sz, CipherDir fake = ENCRYPTION);
|
||||
|
@ -24,11 +24,10 @@
|
||||
#ifndef TAO_CRYPT_ALGEBRA_HPP
|
||||
#define TAO_CRYPT_ALGEBRA_HPP
|
||||
|
||||
#include "misc.hpp"
|
||||
#include "integer.hpp"
|
||||
|
||||
namespace TaoCrypt {
|
||||
|
||||
class Integer;
|
||||
|
||||
// "const Element&" returned by member functions are references
|
||||
// to internal data members. Since each object may have only
|
||||
@ -38,11 +37,11 @@ class Integer;
|
||||
// But this should be fine:
|
||||
// abcd = group.Add(a, group.Add(b, group.Add(c,d));
|
||||
|
||||
//! Abstract Group
|
||||
template <class T> class TAOCRYPT_NO_VTABLE AbstractGroup
|
||||
// Abstract Group
|
||||
class TAOCRYPT_NO_VTABLE AbstractGroup : public virtual_base
|
||||
{
|
||||
public:
|
||||
typedef T Element;
|
||||
typedef Integer Element;
|
||||
|
||||
virtual ~AbstractGroup() {}
|
||||
|
||||
@ -65,14 +64,13 @@ public:
|
||||
const Integer *exponents, unsigned int exponentsCount) const;
|
||||
};
|
||||
|
||||
//! Abstract Ring
|
||||
template <class T> class TAOCRYPT_NO_VTABLE AbstractRing
|
||||
: public AbstractGroup<T>
|
||||
// Abstract Ring
|
||||
class TAOCRYPT_NO_VTABLE AbstractRing : public AbstractGroup
|
||||
{
|
||||
public:
|
||||
typedef T Element;
|
||||
typedef Integer Element;
|
||||
|
||||
AbstractRing() {m_mg.m_pRing = this;}
|
||||
AbstractRing() : AbstractGroup() {m_mg.m_pRing = this;}
|
||||
AbstractRing(const AbstractRing &source) {m_mg.m_pRing = this;}
|
||||
AbstractRing& operator=(const AbstractRing &source) {return *this;}
|
||||
|
||||
@ -91,14 +89,14 @@ public:
|
||||
virtual void SimultaneousExponentiate(Element *results, const Element&,
|
||||
const Integer *exponents, unsigned int exponentsCount) const;
|
||||
|
||||
virtual const AbstractGroup<T>& MultiplicativeGroup() const
|
||||
virtual const AbstractGroup& MultiplicativeGroup() const
|
||||
{return m_mg;}
|
||||
|
||||
private:
|
||||
class MultiplicativeGroupT : public AbstractGroup<T>
|
||||
class MultiplicativeGroupT : public AbstractGroup
|
||||
{
|
||||
public:
|
||||
const AbstractRing<T>& GetRing() const
|
||||
const AbstractRing& GetRing() const
|
||||
{return *m_pRing;}
|
||||
|
||||
bool Equal(const Element &a, const Element &b) const
|
||||
@ -137,44 +135,19 @@ private:
|
||||
{GetRing().SimultaneousExponentiate(results, base, exponents,
|
||||
exponentsCount);}
|
||||
|
||||
const AbstractRing<T> *m_pRing;
|
||||
const AbstractRing* m_pRing;
|
||||
};
|
||||
|
||||
MultiplicativeGroupT m_mg;
|
||||
};
|
||||
|
||||
// ********************************************************
|
||||
|
||||
//! Base and Exponent
|
||||
template <class T, class E = Integer>
|
||||
struct BaseAndExponent
|
||||
// Abstract Euclidean Domain
|
||||
class TAOCRYPT_NO_VTABLE AbstractEuclideanDomain
|
||||
: public AbstractRing
|
||||
{
|
||||
public:
|
||||
BaseAndExponent() {}
|
||||
BaseAndExponent(const T &base, const E &exponent) : base(base),
|
||||
exponent(exponent) {}
|
||||
bool operator<(const BaseAndExponent<T, E> &rhs) const
|
||||
{return exponent < rhs.exponent;}
|
||||
T base;
|
||||
E exponent;
|
||||
};
|
||||
|
||||
// VC60 workaround: incomplete member template support
|
||||
template <class Element, class Iterator>
|
||||
Element GeneralCascadeMultiplication(const AbstractGroup<Element> &group,
|
||||
Iterator begin, Iterator end);
|
||||
template <class Element, class Iterator>
|
||||
Element GeneralCascadeExponentiation(const AbstractRing<Element> &ring,
|
||||
Iterator begin, Iterator end);
|
||||
|
||||
// ********************************************************
|
||||
|
||||
//! Abstract Euclidean Domain
|
||||
template <class T> class TAOCRYPT_NO_VTABLE AbstractEuclideanDomain
|
||||
: public AbstractRing<T>
|
||||
{
|
||||
public:
|
||||
typedef T Element;
|
||||
typedef Integer Element;
|
||||
|
||||
virtual void DivisionAlgorithm(Element &r, Element &q, const Element &a,
|
||||
const Element &d) const =0;
|
||||
@ -186,13 +159,12 @@ protected:
|
||||
mutable Element result;
|
||||
};
|
||||
|
||||
// ********************************************************
|
||||
|
||||
//! EuclideanDomainOf
|
||||
template <class T> class EuclideanDomainOf : public AbstractEuclideanDomain<T>
|
||||
// EuclideanDomainOf
|
||||
class EuclideanDomainOf : public AbstractEuclideanDomain
|
||||
{
|
||||
public:
|
||||
typedef T Element;
|
||||
typedef Integer Element;
|
||||
|
||||
EuclideanDomainOf() {}
|
||||
|
||||
@ -249,68 +221,8 @@ private:
|
||||
mutable Element result;
|
||||
};
|
||||
|
||||
//! Quotient Ring
|
||||
template<class T> class QuotientRing : public AbstractRing<typename T::Element>
|
||||
{
|
||||
public:
|
||||
typedef T EuclideanDomain;
|
||||
typedef typename T::Element Element;
|
||||
|
||||
QuotientRing(const EuclideanDomain &domain, const Element &modulus)
|
||||
: m_domain(domain), m_modulus(modulus) {}
|
||||
|
||||
const EuclideanDomain & GetDomain() const
|
||||
{return m_domain;}
|
||||
|
||||
const Element& GetModulus() const
|
||||
{return m_modulus;}
|
||||
|
||||
bool Equal(const Element &a, const Element &b) const
|
||||
{return m_domain.Equal(m_domain.Mod(m_domain.Subtract(a, b),
|
||||
m_modulus), m_domain.Identity());}
|
||||
|
||||
const Element& Identity() const
|
||||
{return m_domain.Identity();}
|
||||
|
||||
const Element& Add(const Element &a, const Element &b) const
|
||||
{return m_domain.Add(a, b);}
|
||||
|
||||
Element& Accumulate(Element &a, const Element &b) const
|
||||
{return m_domain.Accumulate(a, b);}
|
||||
|
||||
const Element& Inverse(const Element &a) const
|
||||
{return m_domain.Inverse(a);}
|
||||
|
||||
const Element& Subtract(const Element &a, const Element &b) const
|
||||
{return m_domain.Subtract(a, b);}
|
||||
|
||||
Element& Reduce(Element &a, const Element &b) const
|
||||
{return m_domain.Reduce(a, b);}
|
||||
|
||||
const Element& Double(const Element &a) const
|
||||
{return m_domain.Double(a);}
|
||||
|
||||
bool IsUnit(const Element &a) const
|
||||
{return m_domain.IsUnit(m_domain.Gcd(a, m_modulus));}
|
||||
|
||||
const Element& MultiplicativeIdentity() const
|
||||
{return m_domain.MultiplicativeIdentity();}
|
||||
|
||||
const Element& Multiply(const Element &a, const Element &b) const
|
||||
{return m_domain.Mod(m_domain.Multiply(a, b), m_modulus);}
|
||||
|
||||
const Element& Square(const Element &a) const
|
||||
{return m_domain.Mod(m_domain.Square(a), m_modulus);}
|
||||
|
||||
const Element& MultiplicativeInverse(const Element &a) const;
|
||||
|
||||
protected:
|
||||
EuclideanDomain m_domain;
|
||||
Element m_modulus;
|
||||
};
|
||||
|
||||
|
||||
} // namespace
|
||||
|
||||
|
||||
#endif // TAO_CRYPT_ALGEBRA_HPP
|
||||
|
@ -106,7 +106,7 @@ class DH;
|
||||
|
||||
|
||||
// General BER decoding
|
||||
class BER_Decoder {
|
||||
class BER_Decoder : public virtual_base {
|
||||
protected:
|
||||
Source& source_;
|
||||
public:
|
||||
@ -184,7 +184,7 @@ class PublicKey {
|
||||
word32 sz_;
|
||||
public:
|
||||
explicit PublicKey(const byte* k = 0, word32 s = 0);
|
||||
~PublicKey() { delete[] key_; }
|
||||
~PublicKey() { tcArrayDelete(key_); }
|
||||
|
||||
const byte* GetKey() const { return key_; }
|
||||
word32 size() const { return sz_; }
|
||||
@ -287,7 +287,7 @@ word32 DecodeDSA_Signature(byte* decoded, const byte* encoded, word32 sz);
|
||||
|
||||
|
||||
// General DER encoding
|
||||
class DER_Encoder {
|
||||
class DER_Encoder : public virtual_base {
|
||||
public:
|
||||
DER_Encoder() {}
|
||||
virtual ~DER_Encoder() {}
|
||||
|
@ -34,10 +34,6 @@
|
||||
#include <stddef.h> // ptrdiff_t
|
||||
|
||||
|
||||
#if defined(_MSC_VER) && defined(_CRTAPI1)
|
||||
#define TAOCRYPT_MSVCRT6
|
||||
#endif
|
||||
|
||||
|
||||
namespace TaoCrypt {
|
||||
|
||||
@ -110,7 +106,7 @@ public:
|
||||
void deallocate(void* p, size_type n)
|
||||
{
|
||||
memset(p, 0, n * sizeof(T));
|
||||
delete [] (T*)p;
|
||||
tcArrayDelete((T*)p);
|
||||
}
|
||||
|
||||
pointer reallocate(T* p, size_type oldSize, size_type newSize,
|
||||
|
@ -36,12 +36,13 @@ namespace TaoCrypt {
|
||||
enum { DES_BLOCK_SIZE = 8 };
|
||||
|
||||
// Base for all DES types
|
||||
class DES_BASE : public Mode_BASE<DES_BLOCK_SIZE> {
|
||||
class DES_BASE : public Mode_BASE {
|
||||
public:
|
||||
enum { BLOCK_SIZE = DES_BLOCK_SIZE, KEY_SIZE = 32, BOXES = 8,
|
||||
BOX_SIZE = 64 };
|
||||
|
||||
DES_BASE(CipherDir DIR, Mode MODE) : dir_(DIR), mode_(MODE) {}
|
||||
DES_BASE(CipherDir DIR, Mode MODE)
|
||||
: Mode_BASE(BLOCK_SIZE), dir_(DIR), mode_(MODE) {}
|
||||
|
||||
void Process(byte*, const byte*, word32);
|
||||
protected:
|
||||
|
@ -65,7 +65,8 @@ UNKOWN_HASH_E = 1034, // "unknown hash OID"
|
||||
DSA_SZ_E = 1035, // "bad DSA r or s size"
|
||||
BEFORE_DATE_E = 1036, // "before date in the future"
|
||||
AFTER_DATE_E = 1037, // "after date in the past"
|
||||
SIG_CONFIRM_E = 1038 // "bad signature confirmation"
|
||||
SIG_CONFIRM_E = 1038, // "bad self signature confirmation"
|
||||
SIG_OTHER_E = 1039 // "bad other signature confirmation"
|
||||
|
||||
};
|
||||
|
||||
|
@ -32,7 +32,7 @@ namespace TaoCrypt {
|
||||
|
||||
|
||||
// HASH
|
||||
class HASH {
|
||||
class HASH : public virtual_base {
|
||||
public:
|
||||
virtual ~HASH() {}
|
||||
|
||||
@ -51,8 +51,8 @@ class HASHwithTransform : public HASH {
|
||||
public:
|
||||
HASHwithTransform(word32 digSz, word32 buffSz)
|
||||
: digest_(new (tc) word32[digSz]), buffer_(new (tc) byte[buffSz]) {}
|
||||
virtual ~HASHwithTransform() { delete[] buffer_; delete[] digest_; }
|
||||
|
||||
virtual ~HASHwithTransform() { tcArrayDelete(buffer_);
|
||||
tcArrayDelete(digest_); }
|
||||
virtual ByteOrder getByteOrder() const = 0;
|
||||
virtual word32 getPadSize() const = 0;
|
||||
|
||||
|
@ -29,8 +29,8 @@
|
||||
#include "block.hpp"
|
||||
#include "random.hpp"
|
||||
#include "file.hpp"
|
||||
#include <string.h>
|
||||
#include "algorithm.hpp" // mySTL::swap
|
||||
#include <string.h>
|
||||
|
||||
|
||||
#ifdef TAOCRYPT_X86ASM_AVAILABLE
|
||||
@ -128,9 +128,6 @@ public:
|
||||
Integer(signed long value);
|
||||
Integer(Sign s, word highWord, word lowWord);
|
||||
|
||||
explicit Integer(const char* str);
|
||||
explicit Integer(const wchar_t* str);
|
||||
|
||||
// BER Decode Source
|
||||
explicit Integer(Source&);
|
||||
|
||||
@ -141,7 +138,6 @@ public:
|
||||
|
||||
static const Integer& Zero();
|
||||
static const Integer& One();
|
||||
static const Integer &Two();
|
||||
|
||||
Integer& Ref() { return *this; }
|
||||
|
||||
@ -254,15 +250,10 @@ public:
|
||||
private:
|
||||
friend class ModularArithmetic;
|
||||
friend class MontgomeryRepresentation;
|
||||
friend class HalfMontgomeryRepresentation;
|
||||
|
||||
Integer(word value, unsigned int length);
|
||||
|
||||
static const Integer zero;
|
||||
static const Integer one;
|
||||
static const Integer two;
|
||||
|
||||
int PositiveCompare(const Integer& t) const;
|
||||
|
||||
friend void PositiveAdd(Integer& sum, const Integer& a, const Integer& b);
|
||||
friend void PositiveSubtract(Integer& diff, const Integer& a,
|
||||
const Integer& b);
|
||||
@ -272,6 +263,9 @@ private:
|
||||
Integer& dividend, const Integer& divisor);
|
||||
AlignedWordBlock reg_;
|
||||
Sign sign_;
|
||||
|
||||
static const Integer zero_;
|
||||
static const Integer one_;
|
||||
};
|
||||
|
||||
inline bool operator==(const Integer& a, const Integer& b)
|
||||
@ -308,6 +302,7 @@ inline void swap(Integer &a, Integer &b)
|
||||
|
||||
Integer CRT(const Integer& xp, const Integer& p, const Integer& xq,
|
||||
const Integer& q, const Integer& u);
|
||||
|
||||
inline Integer ModularExponentiation(const Integer& a, const Integer& e,
|
||||
const Integer& m)
|
||||
{
|
||||
|
@ -27,9 +27,18 @@
|
||||
#include <stdlib.h>
|
||||
#include <assert.h>
|
||||
#include <string.h>
|
||||
#include "types.hpp"
|
||||
#include "type_traits.hpp"
|
||||
|
||||
/*
|
||||
namespace GCC_ABI {
|
||||
extern "C" int __cxa_pure_virtual();
|
||||
} */
|
||||
|
||||
namespace TaoCrypt {
|
||||
|
||||
// using GCC_ABI::__cxa_pure_virtual;
|
||||
|
||||
// library allocation
|
||||
struct new_t {}; // TaoCrypt New type
|
||||
extern new_t tc; // pass in parameter
|
||||
@ -39,74 +48,38 @@ extern new_t tc; // pass in parameter
|
||||
void* operator new (size_t, TaoCrypt::new_t);
|
||||
void* operator new[](size_t, TaoCrypt::new_t);
|
||||
|
||||
void operator delete (void*, TaoCrypt::new_t);
|
||||
void operator delete[](void*, TaoCrypt::new_t);
|
||||
|
||||
|
||||
namespace TaoCrypt {
|
||||
|
||||
template<typename T>
|
||||
void tcDelete(T* ptr)
|
||||
{
|
||||
if (ptr) ptr->~T();
|
||||
::operator delete(ptr, TaoCrypt::tc);
|
||||
}
|
||||
|
||||
// define this if running on a big-endian CPU
|
||||
#if !defined(LITTLE_ENDIAN_ORDER) && (defined(__BIG_ENDIAN__) || \
|
||||
defined(__sparc) || defined(__sparc__) || defined(__hppa__) || \
|
||||
defined(__mips__) || (defined(__MWERKS__) && !defined(__INTEL__)))
|
||||
#define BIG_ENDIAN_ORDER
|
||||
#endif
|
||||
template<typename T>
|
||||
void tcArrayDelete(T* ptr)
|
||||
{
|
||||
// can't do array placement destruction since not tracking size in
|
||||
// allocation, only allow builtins to use array placement since they
|
||||
// don't need destructors called
|
||||
typedef char builtin[IsFundamentalType<T>::Yes ? 1 : -1];
|
||||
(void)sizeof(builtin);
|
||||
|
||||
#ifndef BIG_ENDIAN_ORDER
|
||||
#define LITTLE_ENDIAN_ORDER
|
||||
#endif
|
||||
::operator delete[](ptr, TaoCrypt::tc);
|
||||
}
|
||||
|
||||
|
||||
typedef unsigned char byte;
|
||||
typedef unsigned short word16;
|
||||
typedef unsigned int word32;
|
||||
|
||||
#if defined(__GNUC__) || defined(__MWERKS__) || defined(_LONGLONG_TYPE)
|
||||
#define WORD64_AVAILABLE
|
||||
typedef unsigned long long word64;
|
||||
#define W64LIT(x) x##LL
|
||||
#elif defined(_MSC_VER) || defined(__BCPLUSPLUS__)
|
||||
#define WORD64_AVAILABLE
|
||||
typedef unsigned __int64 word64;
|
||||
#define W64LIT(x) x##ui64
|
||||
#elif defined(__DECCXX)
|
||||
#define WORD64_AVAILABLE
|
||||
typedef unsigned long word64;
|
||||
#endif
|
||||
|
||||
// define largest word type
|
||||
#ifdef WORD64_AVAILABLE
|
||||
typedef word64 lword;
|
||||
#else
|
||||
typedef word32 lword;
|
||||
#endif
|
||||
|
||||
// FIXME the !defined(__sun) is a temporarely solution until asm for
|
||||
// __x86_64__ and Solaris is written
|
||||
#if defined(__alpha__) || defined(__ia64__) || defined(_ARCH_PPC64) || \
|
||||
defined(__mips64) || (defined(__x86_64__) && !defined(__sun))
|
||||
// These platforms have 64-bit CPU registers. Unfortunately most C++ compilers
|
||||
// don't allow any way to access the 64-bit by 64-bit multiply instruction
|
||||
// without using assembly, so in order to use word64 as word, the assembly
|
||||
// instruction must be defined in Dword::Multiply().
|
||||
typedef word32 hword;
|
||||
typedef word64 word;
|
||||
#else
|
||||
#define TAOCRYPT_NATIVE_DWORD_AVAILABLE
|
||||
#ifdef WORD64_AVAILABLE
|
||||
#define TAOCRYPT_SLOW_WORD64
|
||||
// define this if your CPU is not64-bit to use alternative code
|
||||
// that avoids word64
|
||||
typedef word16 hword;
|
||||
typedef word32 word;
|
||||
typedef word64 dword;
|
||||
#else
|
||||
typedef byte hword;
|
||||
typedef word16 word;
|
||||
typedef word32 dword;
|
||||
#endif
|
||||
#endif
|
||||
|
||||
const word32 WORD_SIZE = sizeof(word);
|
||||
const word32 WORD_BITS = WORD_SIZE * 8;
|
||||
// to resolve compiler generated operator delete on base classes with
|
||||
// virtual destructors, make sure doesn't get called
|
||||
class virtual_base {
|
||||
public:
|
||||
static void operator delete(void*) { assert(0); }
|
||||
};
|
||||
|
||||
|
||||
#if defined(_MSC_VER) || defined(__BCPLUSPLUS__)
|
||||
|
@ -27,14 +27,13 @@
|
||||
#define TAO_CRYPT_MODARITH_HPP
|
||||
|
||||
#include "misc.hpp"
|
||||
#include "integer.hpp"
|
||||
#include "algebra.hpp"
|
||||
|
||||
namespace TaoCrypt {
|
||||
|
||||
|
||||
//! ModularArithmetic
|
||||
class ModularArithmetic : public AbstractRing<Integer>
|
||||
// ModularArithmetic
|
||||
class ModularArithmetic : public AbstractRing
|
||||
{
|
||||
public:
|
||||
|
||||
@ -45,7 +44,7 @@ public:
|
||||
: modulus(modulus), result((word)0, modulus.reg_.size()) {}
|
||||
|
||||
ModularArithmetic(const ModularArithmetic &ma)
|
||||
: AbstractRing<Integer>(),
|
||||
: AbstractRing(),
|
||||
modulus(ma.modulus), result((word)0, modulus.reg_.size()) {}
|
||||
|
||||
const Integer& GetModulus() const {return modulus;}
|
||||
@ -149,11 +148,11 @@ public:
|
||||
|
||||
Integer CascadeExponentiate(const Integer &x, const Integer &e1,
|
||||
const Integer &y, const Integer &e2) const
|
||||
{return AbstractRing<Integer>::CascadeExponentiate(x, e1, y, e2);}
|
||||
{return AbstractRing::CascadeExponentiate(x, e1, y, e2);}
|
||||
|
||||
void SimultaneousExponentiate(Element *results, const Element &base,
|
||||
const Integer *exponents, unsigned int exponentsCount) const
|
||||
{AbstractRing<Integer>::SimultaneousExponentiate(results, base,
|
||||
{AbstractRing::SimultaneousExponentiate(results, base,
|
||||
exponents, exponentsCount);}
|
||||
|
||||
private:
|
||||
|
@ -56,10 +56,11 @@ private:
|
||||
|
||||
|
||||
// Mode Base for block ciphers, static size
|
||||
template<int BLOCK_SIZE>
|
||||
class Mode_BASE {
|
||||
class Mode_BASE : public virtual_base {
|
||||
public:
|
||||
Mode_BASE() {}
|
||||
enum { MaxBlockSz = 16 };
|
||||
|
||||
explicit Mode_BASE(int sz) : blockSz_(sz) { assert(sz <= MaxBlockSz); }
|
||||
virtual ~Mode_BASE() {}
|
||||
|
||||
virtual void ProcessAndXorBlock(const byte*, const byte*, byte*) const = 0;
|
||||
@ -68,10 +69,11 @@ public:
|
||||
void CBC_Encrypt(byte*, const byte*, word32);
|
||||
void CBC_Decrypt(byte*, const byte*, word32);
|
||||
|
||||
void SetIV(const byte* iv) { memcpy(reg_, iv, BLOCK_SIZE); }
|
||||
void SetIV(const byte* iv) { memcpy(reg_, iv, blockSz_); }
|
||||
private:
|
||||
byte reg_[BLOCK_SIZE];
|
||||
byte tmp_[BLOCK_SIZE];
|
||||
byte reg_[MaxBlockSz];
|
||||
byte tmp_[MaxBlockSz];
|
||||
int blockSz_;
|
||||
|
||||
Mode_BASE(const Mode_BASE&); // hide copy
|
||||
Mode_BASE& operator=(const Mode_BASE&); // and assign
|
||||
@ -79,51 +81,48 @@ private:
|
||||
|
||||
|
||||
// ECB Process blocks
|
||||
template<int BLOCK_SIZE>
|
||||
void Mode_BASE<BLOCK_SIZE>::ECB_Process(byte* out, const byte* in, word32 sz)
|
||||
inline void Mode_BASE::ECB_Process(byte* out, const byte* in, word32 sz)
|
||||
{
|
||||
word32 blocks = sz / BLOCK_SIZE;
|
||||
word32 blocks = sz / blockSz_;
|
||||
|
||||
while (blocks--) {
|
||||
ProcessAndXorBlock(in, 0, out);
|
||||
out += BLOCK_SIZE;
|
||||
in += BLOCK_SIZE;
|
||||
out += blockSz_;
|
||||
in += blockSz_;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// CBC Encrypt
|
||||
template<int BLOCK_SIZE>
|
||||
void Mode_BASE<BLOCK_SIZE>::CBC_Encrypt(byte* out, const byte* in, word32 sz)
|
||||
inline void Mode_BASE::CBC_Encrypt(byte* out, const byte* in, word32 sz)
|
||||
{
|
||||
word32 blocks = sz / BLOCK_SIZE;
|
||||
word32 blocks = sz / blockSz_;
|
||||
|
||||
while (blocks--) {
|
||||
xorbuf(reg_, in, BLOCK_SIZE);
|
||||
xorbuf(reg_, in, blockSz_);
|
||||
ProcessAndXorBlock(reg_, 0, reg_);
|
||||
memcpy(out, reg_, BLOCK_SIZE);
|
||||
out += BLOCK_SIZE;
|
||||
in += BLOCK_SIZE;
|
||||
memcpy(out, reg_, blockSz_);
|
||||
out += blockSz_;
|
||||
in += blockSz_;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// CBC Decrypt
|
||||
template<int BLOCK_SIZE>
|
||||
void Mode_BASE<BLOCK_SIZE>::CBC_Decrypt(byte* out, const byte* in, word32 sz)
|
||||
inline void Mode_BASE::CBC_Decrypt(byte* out, const byte* in, word32 sz)
|
||||
{
|
||||
word32 blocks = sz / BLOCK_SIZE;
|
||||
byte hold[BLOCK_SIZE];
|
||||
word32 blocks = sz / blockSz_;
|
||||
byte hold[MaxBlockSz];
|
||||
|
||||
while (blocks--) {
|
||||
memcpy(tmp_, in, BLOCK_SIZE);
|
||||
memcpy(tmp_, in, blockSz_);
|
||||
ProcessAndXorBlock(tmp_, 0, out);
|
||||
xorbuf(out, reg_, BLOCK_SIZE);
|
||||
memcpy(hold, reg_, BLOCK_SIZE); // swap reg_ and tmp_
|
||||
memcpy(reg_, tmp_, BLOCK_SIZE);
|
||||
memcpy(tmp_, hold, BLOCK_SIZE);
|
||||
out += BLOCK_SIZE;
|
||||
in += BLOCK_SIZE;
|
||||
xorbuf(out, reg_, blockSz_);
|
||||
memcpy(hold, reg_, blockSz_); // swap reg_ and tmp_
|
||||
memcpy(reg_, tmp_, blockSz_);
|
||||
memcpy(tmp_, hold, blockSz_);
|
||||
out += blockSz_;
|
||||
in += blockSz_;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -31,30 +31,6 @@
|
||||
|
||||
#if __GNUC__ > 2
|
||||
|
||||
#include <stdlib.h>
|
||||
|
||||
|
||||
static void* operator new (size_t sz)
|
||||
{
|
||||
return malloc (sz ? sz : 1);
|
||||
}
|
||||
|
||||
static void* operator new[](size_t sz)
|
||||
{
|
||||
return malloc (sz ? sz : 1);
|
||||
}
|
||||
|
||||
static void operator delete (void* ptr)
|
||||
{
|
||||
if (ptr) free(ptr);
|
||||
}
|
||||
|
||||
static void operator delete[] (void* ptr)
|
||||
{
|
||||
if (ptr) free(ptr);
|
||||
}
|
||||
|
||||
|
||||
extern "C" {
|
||||
#include <assert.h>
|
||||
|
||||
|
80
extra/yassl/taocrypt/include/type_traits.hpp
Normal file
80
extra/yassl/taocrypt/include/type_traits.hpp
Normal file
@ -0,0 +1,80 @@
|
||||
/* type_traits.hpp
|
||||
*
|
||||
* Copyright (C) 2003 Sawtooth Consulting Ltd.
|
||||
*
|
||||
* This file is part of yaSSL.
|
||||
*
|
||||
* yaSSL is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* yaSSL is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
|
||||
*/
|
||||
|
||||
/* type_traits defines fundamental types
|
||||
* see discussion in C++ Templates, $19.1
|
||||
*/
|
||||
|
||||
|
||||
#ifndef TAO_CRYPT_TYPE_TRAITS_HPP
|
||||
#define TAO_CRYPT_TYPE_TRAITS_HPP
|
||||
|
||||
#include "types.hpp"
|
||||
|
||||
namespace TaoCrypt {
|
||||
|
||||
|
||||
// primary template: in general T is not a fundamental type
|
||||
|
||||
template <typename T>
|
||||
class IsFundamentalType {
|
||||
public:
|
||||
enum { Yes = 0, No = 1 };
|
||||
};
|
||||
|
||||
|
||||
// macro to specialize for fundamental types
|
||||
#define MK_FUNDAMENTAL_TYPE(T) \
|
||||
template<> class IsFundamentalType<T> { \
|
||||
public: \
|
||||
enum { Yes = 1, No = 0 }; \
|
||||
};
|
||||
|
||||
|
||||
MK_FUNDAMENTAL_TYPE(void)
|
||||
|
||||
MK_FUNDAMENTAL_TYPE(bool)
|
||||
MK_FUNDAMENTAL_TYPE( char)
|
||||
MK_FUNDAMENTAL_TYPE(signed char)
|
||||
MK_FUNDAMENTAL_TYPE(unsigned char)
|
||||
|
||||
MK_FUNDAMENTAL_TYPE(signed short)
|
||||
MK_FUNDAMENTAL_TYPE(unsigned short)
|
||||
MK_FUNDAMENTAL_TYPE(signed int)
|
||||
MK_FUNDAMENTAL_TYPE(unsigned int)
|
||||
MK_FUNDAMENTAL_TYPE(signed long)
|
||||
MK_FUNDAMENTAL_TYPE(unsigned long)
|
||||
|
||||
MK_FUNDAMENTAL_TYPE(float)
|
||||
MK_FUNDAMENTAL_TYPE( double)
|
||||
MK_FUNDAMENTAL_TYPE(long double)
|
||||
|
||||
#ifdef WORD64_AVAILABLE
|
||||
MK_FUNDAMENTAL_TYPE(word64)
|
||||
#endif
|
||||
|
||||
|
||||
#undef MK_FUNDAMENTAL_TYPE
|
||||
|
||||
|
||||
} // namespace
|
||||
|
||||
#endif // TAO_CRYPT_TYPE_TRAITS_HPP
|
99
extra/yassl/taocrypt/include/types.hpp
Normal file
99
extra/yassl/taocrypt/include/types.hpp
Normal file
@ -0,0 +1,99 @@
|
||||
/* types.hpp
|
||||
*
|
||||
* Copyright (C) 2003 Sawtooth Consulting Ltd.
|
||||
*
|
||||
* This file is part of yaSSL.
|
||||
*
|
||||
* yaSSL is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* yaSSL is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
|
||||
*/
|
||||
|
||||
/* based on Wei Dai's misc.h from CryptoPP, basic crypt types */
|
||||
|
||||
|
||||
#ifndef TAO_CRYPT_TYPES_HPP
|
||||
#define TAO_CRYPT_TYPES_HPP
|
||||
|
||||
namespace TaoCrypt {
|
||||
|
||||
// define this if running on a big-endian CPU
|
||||
#if !defined(LITTLE_ENDIAN_ORDER) && (defined(__BIG_ENDIAN__) || \
|
||||
defined(__sparc) || defined(__sparc__) || defined(__hppa__) || \
|
||||
defined(__mips__) || (defined(__MWERKS__) && !defined(__INTEL__)))
|
||||
#define BIG_ENDIAN_ORDER
|
||||
#endif
|
||||
|
||||
#ifndef BIG_ENDIAN_ORDER
|
||||
#define LITTLE_ENDIAN_ORDER
|
||||
#endif
|
||||
|
||||
|
||||
typedef unsigned char byte;
|
||||
typedef unsigned short word16;
|
||||
typedef unsigned int word32;
|
||||
|
||||
#if defined(__GNUC__) || defined(__MWERKS__) || defined(_LONGLONG_TYPE)
|
||||
#define WORD64_AVAILABLE
|
||||
typedef unsigned long long word64;
|
||||
#define W64LIT(x) x##LL
|
||||
#elif defined(_MSC_VER) || defined(__BCPLUSPLUS__)
|
||||
#define WORD64_AVAILABLE
|
||||
typedef unsigned __int64 word64;
|
||||
#define W64LIT(x) x##ui64
|
||||
#elif defined(__DECCXX)
|
||||
#define WORD64_AVAILABLE
|
||||
typedef unsigned long word64;
|
||||
#endif
|
||||
|
||||
// define largest word type
|
||||
#ifdef WORD64_AVAILABLE
|
||||
typedef word64 lword;
|
||||
#else
|
||||
typedef word32 lword;
|
||||
#endif
|
||||
|
||||
|
||||
// TODO: FIXME, add asm multiply for x86_64 on Solaris and remove !__sun
|
||||
|
||||
#if defined(__alpha__) || defined(__ia64__) || defined(_ARCH_PPC64) || \
|
||||
defined(__mips64) || (defined(__x86_64__) && !defined(__sun))
|
||||
// These platforms have 64-bit CPU registers. Unfortunately most C++ compilers
|
||||
// don't allow any way to access the 64-bit by 64-bit multiply instruction
|
||||
// without using assembly, so in order to use word64 as word, the assembly
|
||||
// instruction must be defined in Dword::Multiply().
|
||||
typedef word32 hword;
|
||||
typedef word64 word;
|
||||
#else
|
||||
#define TAOCRYPT_NATIVE_DWORD_AVAILABLE
|
||||
#ifdef WORD64_AVAILABLE
|
||||
#define TAOCRYPT_SLOW_WORD64
|
||||
// define this if your CPU is not64-bit to use alternative code
|
||||
// that avoids word64
|
||||
typedef word16 hword;
|
||||
typedef word32 word;
|
||||
typedef word64 dword;
|
||||
#else
|
||||
typedef byte hword;
|
||||
typedef word16 word;
|
||||
typedef word32 dword;
|
||||
#endif
|
||||
#endif
|
||||
|
||||
const word32 WORD_SIZE = sizeof(word);
|
||||
const word32 WORD_BITS = WORD_SIZE * 8;
|
||||
|
||||
|
||||
} // namespace
|
||||
|
||||
#endif // TAO_CRYPT_TYPES_HPP
|
@ -3,5 +3,6 @@ INCLUDES = -I../include -I../../mySTL
|
||||
noinst_LIBRARIES = libtaocrypt.a
|
||||
libtaocrypt_a_SOURCES = aes.cpp aestables.cpp algebra.cpp arc4.cpp asn.cpp \
|
||||
coding.cpp dh.cpp des.cpp dsa.cpp file.cpp hash.cpp integer.cpp \
|
||||
md2.cpp md5.cpp misc.cpp random.cpp ripemd.cpp rsa.cpp sha.cpp
|
||||
md2.cpp md5.cpp misc.cpp random.cpp ripemd.cpp rsa.cpp sha.cpp \
|
||||
template_instnt.cpp
|
||||
EXTRA_DIST = ../include/*.hpp
|
||||
|
@ -21,7 +21,6 @@
|
||||
|
||||
/* based on Wei Dai's aestables.cpp from CryptoPP */
|
||||
|
||||
#include "runtime.hpp"
|
||||
#include "aes.hpp"
|
||||
|
||||
|
||||
|
@ -23,51 +23,49 @@
|
||||
|
||||
#include "runtime.hpp"
|
||||
#include "algebra.hpp"
|
||||
#include "integer.hpp"
|
||||
#include "vector.hpp" // mySTL::vector (simple)
|
||||
|
||||
|
||||
namespace TaoCrypt {
|
||||
|
||||
template <class T> const T& AbstractGroup<T>::Double(const Element &a) const
|
||||
|
||||
const Integer& AbstractGroup::Double(const Element &a) const
|
||||
{
|
||||
return Add(a, a);
|
||||
}
|
||||
|
||||
template <class T> const T& AbstractGroup<T>::Subtract(const Element &a,
|
||||
const Element &b) const
|
||||
const Integer& AbstractGroup::Subtract(const Element &a, const Element &b) const
|
||||
{
|
||||
// make copy of a in case Inverse() overwrites it
|
||||
Element a1(a);
|
||||
return Add(a1, Inverse(b));
|
||||
}
|
||||
|
||||
template <class T> T& AbstractGroup<T>::Accumulate(Element &a,
|
||||
const Element &b) const
|
||||
Integer& AbstractGroup::Accumulate(Element &a, const Element &b) const
|
||||
{
|
||||
return a = Add(a, b);
|
||||
}
|
||||
|
||||
template <class T> T& AbstractGroup<T>::Reduce(Element &a,
|
||||
const Element &b) const
|
||||
Integer& AbstractGroup::Reduce(Element &a, const Element &b) const
|
||||
{
|
||||
return a = Subtract(a, b);
|
||||
}
|
||||
|
||||
template <class T> const T& AbstractRing<T>::Square(const Element &a) const
|
||||
const Integer& AbstractRing::Square(const Element &a) const
|
||||
{
|
||||
return Multiply(a, a);
|
||||
}
|
||||
|
||||
template <class T> const T& AbstractRing<T>::Divide(const Element &a,
|
||||
const Element &b) const
|
||||
|
||||
const Integer& AbstractRing::Divide(const Element &a, const Element &b) const
|
||||
{
|
||||
// make copy of a in case MultiplicativeInverse() overwrites it
|
||||
Element a1(a);
|
||||
return Multiply(a1, MultiplicativeInverse(b));
|
||||
}
|
||||
|
||||
template <class T> const T& AbstractEuclideanDomain<T>::Mod(const Element &a,
|
||||
|
||||
const Integer& AbstractEuclideanDomain::Mod(const Element &a,
|
||||
const Element &b) const
|
||||
{
|
||||
Element q;
|
||||
@ -75,7 +73,7 @@ template <class T> const T& AbstractEuclideanDomain<T>::Mod(const Element &a,
|
||||
return result;
|
||||
}
|
||||
|
||||
template <class T> const T& AbstractEuclideanDomain<T>::Gcd(const Element &a,
|
||||
const Integer& AbstractEuclideanDomain::Gcd(const Element &a,
|
||||
const Element &b) const
|
||||
{
|
||||
Element g[3]={b, a};
|
||||
@ -90,37 +88,8 @@ template <class T> const T& AbstractEuclideanDomain<T>::Gcd(const Element &a,
|
||||
return result = g[i0];
|
||||
}
|
||||
|
||||
template <class T> const typename
|
||||
QuotientRing<T>::Element& QuotientRing<T>::MultiplicativeInverse(
|
||||
const Element &a) const
|
||||
{
|
||||
Element g[3]={m_modulus, a};
|
||||
#ifdef __BCPLUSPLUS__
|
||||
// BC++50 workaround
|
||||
Element v[3];
|
||||
v[0]=m_domain.Identity();
|
||||
v[1]=m_domain.MultiplicativeIdentity();
|
||||
#else
|
||||
Element v[3]={m_domain.Identity(), m_domain.MultiplicativeIdentity()};
|
||||
#endif
|
||||
Element y;
|
||||
unsigned int i0=0, i1=1, i2=2;
|
||||
|
||||
while (!Equal(g[i1], Identity()))
|
||||
{
|
||||
// y = g[i0] / g[i1];
|
||||
// g[i2] = g[i0] % g[i1];
|
||||
m_domain.DivisionAlgorithm(g[i2], y, g[i0], g[i1]);
|
||||
// v[i2] = v[i0] - (v[i1] * y);
|
||||
v[i2] = m_domain.Subtract(v[i0], m_domain.Multiply(v[i1], y));
|
||||
unsigned int t = i0; i0 = i1; i1 = i2; i2 = t;
|
||||
}
|
||||
|
||||
return m_domain.IsUnit(g[i0]) ? m_domain.Divide(v[i0], g[i0]) :
|
||||
m_domain.Identity();
|
||||
}
|
||||
|
||||
template <class T> T AbstractGroup<T>::ScalarMultiply(const Element &base,
|
||||
Integer AbstractGroup::ScalarMultiply(const Element &base,
|
||||
const Integer &exponent) const
|
||||
{
|
||||
Element result;
|
||||
@ -128,7 +97,8 @@ template <class T> T AbstractGroup<T>::ScalarMultiply(const Element &base,
|
||||
return result;
|
||||
}
|
||||
|
||||
template <class T> T AbstractGroup<T>::CascadeScalarMultiply(const Element &x,
|
||||
|
||||
Integer AbstractGroup::CascadeScalarMultiply(const Element &x,
|
||||
const Integer &e1, const Element &y, const Integer &e2) const
|
||||
{
|
||||
const unsigned expLen = max(e1.BitCount(), e2.BitCount());
|
||||
@ -258,8 +228,8 @@ struct WindowSlider
|
||||
bool fastNegate, negateNext, firstTime, finished;
|
||||
};
|
||||
|
||||
template <class T>
|
||||
void AbstractGroup<T>::SimultaneousMultiply(T *results, const T &base,
|
||||
|
||||
void AbstractGroup::SimultaneousMultiply(Integer *results, const Integer &base,
|
||||
const Integer *expBegin, unsigned int expCount) const
|
||||
{
|
||||
mySTL::vector<mySTL::vector<Element> > buckets(expCount);
|
||||
@ -321,7 +291,7 @@ void AbstractGroup<T>::SimultaneousMultiply(T *results, const T &base,
|
||||
}
|
||||
}
|
||||
|
||||
template <class T> T AbstractRing<T>::Exponentiate(const Element &base,
|
||||
Integer AbstractRing::Exponentiate(const Element &base,
|
||||
const Integer &exponent) const
|
||||
{
|
||||
Element result;
|
||||
@ -329,26 +299,29 @@ template <class T> T AbstractRing<T>::Exponentiate(const Element &base,
|
||||
return result;
|
||||
}
|
||||
|
||||
template <class T> T AbstractRing<T>::CascadeExponentiate(const Element &x,
|
||||
|
||||
Integer AbstractRing::CascadeExponentiate(const Element &x,
|
||||
const Integer &e1, const Element &y, const Integer &e2) const
|
||||
{
|
||||
return MultiplicativeGroup().AbstractGroup<T>::CascadeScalarMultiply(
|
||||
return MultiplicativeGroup().AbstractGroup::CascadeScalarMultiply(
|
||||
x, e1, y, e2);
|
||||
}
|
||||
|
||||
template <class Element, class Iterator> Element GeneralCascadeExponentiation(
|
||||
const AbstractRing<Element> &ring, Iterator begin, Iterator end)
|
||||
{
|
||||
return GeneralCascadeMultiplication<Element>(ring.MultiplicativeGroup(),
|
||||
begin, end);
|
||||
}
|
||||
|
||||
template <class T>
|
||||
void AbstractRing<T>::SimultaneousExponentiate(T *results, const T &base,
|
||||
void AbstractRing::SimultaneousExponentiate(Integer *results,
|
||||
const Integer &base,
|
||||
const Integer *exponents, unsigned int expCount) const
|
||||
{
|
||||
MultiplicativeGroup().AbstractGroup<T>::SimultaneousMultiply(results, base,
|
||||
MultiplicativeGroup().AbstractGroup::SimultaneousMultiply(results, base,
|
||||
exponents, expCount);
|
||||
}
|
||||
|
||||
|
||||
} // namespace
|
||||
|
||||
#ifdef __GNUC__
|
||||
namespace mySTL {
|
||||
template TaoCrypt::WindowSlider* uninit_copy<TaoCrypt::WindowSlider*, TaoCrypt::WindowSlider*>(TaoCrypt::WindowSlider*, TaoCrypt::WindowSlider*, TaoCrypt::WindowSlider*);
|
||||
template void destroy<TaoCrypt::WindowSlider*>(TaoCrypt::WindowSlider*, TaoCrypt::WindowSlider*);
|
||||
}
|
||||
#endif
|
||||
|
@ -21,7 +21,6 @@
|
||||
|
||||
/* based on Wei Dai's arc4.cpp from CryptoPP */
|
||||
|
||||
#include "runtime.hpp"
|
||||
#include "arc4.hpp"
|
||||
|
||||
|
||||
|
@ -199,14 +199,14 @@ void PublicKey::SetKey(const byte* k)
|
||||
|
||||
void PublicKey::AddToEnd(const byte* data, word32 len)
|
||||
{
|
||||
mySTL::auto_ptr<byte> tmp(new (tc) byte[sz_ + len]);
|
||||
mySTL::auto_ptr<byte> tmp(new (tc) byte[sz_ + len], tcArrayDelete);
|
||||
|
||||
memcpy(tmp.get(), key_, sz_);
|
||||
memcpy(tmp.get() + sz_, data, len);
|
||||
|
||||
byte* del = 0;
|
||||
mySTL::swap(del, key_);
|
||||
delete[] del;
|
||||
tcArrayDelete(del);
|
||||
|
||||
key_ = tmp.release();
|
||||
sz_ += len;
|
||||
@ -228,7 +228,7 @@ Signer::Signer(const byte* k, word32 kSz, const char* n, const byte* h)
|
||||
|
||||
Signer::~Signer()
|
||||
{
|
||||
delete[] name_;
|
||||
tcArrayDelete(name_);
|
||||
}
|
||||
|
||||
|
||||
@ -433,9 +433,9 @@ CertDecoder::CertDecoder(Source& s, bool decode, SignerList* signers)
|
||||
|
||||
CertDecoder::~CertDecoder()
|
||||
{
|
||||
delete[] subject_;
|
||||
delete[] issuer_;
|
||||
delete[] signature_;
|
||||
tcArrayDelete(subject_);
|
||||
tcArrayDelete(issuer_);
|
||||
tcArrayDelete(signature_);
|
||||
}
|
||||
|
||||
|
||||
@ -480,7 +480,7 @@ void CertDecoder::Decode(SignerList* signers)
|
||||
}
|
||||
else
|
||||
if (!ValidateSignature(signers))
|
||||
source_.SetError(SIG_CONFIRM_E);
|
||||
source_.SetError(SIG_OTHER_E);
|
||||
}
|
||||
|
||||
|
||||
@ -807,7 +807,7 @@ bool CertDecoder::ValidateSignature(SignerList* signers)
|
||||
bool CertDecoder::ConfirmSignature(Source& pub)
|
||||
{
|
||||
HashType ht;
|
||||
mySTL::auto_ptr<HASH> hasher;
|
||||
mySTL::auto_ptr<HASH> hasher(tcDelete);
|
||||
|
||||
if (signatureOID_ == MD5wRSA) {
|
||||
hasher.reset(new (tc) MD5);
|
||||
|
@ -22,7 +22,6 @@
|
||||
/* coding.cpp implements hex and base64 encoding/decoing
|
||||
*/
|
||||
|
||||
#include "runtime.hpp"
|
||||
#include "coding.hpp"
|
||||
#include "file.hpp"
|
||||
|
||||
|
@ -23,10 +23,8 @@
|
||||
/* dh.cpp implements Diffie-Hellman support
|
||||
*/
|
||||
|
||||
#include "runtime.hpp"
|
||||
#include "dh.hpp"
|
||||
#include "asn.hpp"
|
||||
#include <math.h>
|
||||
|
||||
namespace TaoCrypt {
|
||||
|
||||
|
@ -20,15 +20,12 @@
|
||||
*/
|
||||
|
||||
|
||||
#include "runtime.hpp"
|
||||
#include "dsa.hpp"
|
||||
#include "sha.hpp"
|
||||
#include "asn.hpp"
|
||||
#include "modarith.hpp"
|
||||
#include "stdexcept.hpp"
|
||||
|
||||
#include "algebra.cpp" // for GCC 3.2 on aix ?
|
||||
|
||||
|
||||
namespace TaoCrypt {
|
||||
|
||||
|
@ -22,7 +22,6 @@
|
||||
/* file.cpp implements File Sources and Sinks
|
||||
*/
|
||||
|
||||
#include "runtime.hpp"
|
||||
#include "file.hpp"
|
||||
|
||||
|
||||
|
@ -32,17 +32,15 @@
|
||||
# pragma warning(disable: 4250 4660 4661 4786 4355)
|
||||
#endif
|
||||
|
||||
#include "runtime.hpp"
|
||||
#include "integer.hpp"
|
||||
#include "modarith.hpp"
|
||||
#include "asn.hpp"
|
||||
#include "stdexcept.hpp"
|
||||
|
||||
#include "algebra.cpp"
|
||||
|
||||
|
||||
#ifdef __DECCXX
|
||||
#include <c_asm.h> // for asm multiply overflow
|
||||
#include <c_asm.h> // for asm overflow assembly
|
||||
#endif
|
||||
|
||||
|
||||
@ -130,7 +128,7 @@ void AlignedAllocator<T>::deallocate(void* p, size_type n)
|
||||
#endif
|
||||
}
|
||||
else
|
||||
delete [] (T *)p;
|
||||
tcArrayDelete((T *)p);
|
||||
}
|
||||
|
||||
#endif // SSE2
|
||||
@ -178,7 +176,7 @@ DWord() {}
|
||||
#elif defined(__DECCXX)
|
||||
r.halfs_.high = asm("umulh %a0, %a1, %v0", a, b);
|
||||
#else
|
||||
#error unsupported alpha compiler for asm multiply overflow
|
||||
#error can not implement multiply overflow
|
||||
#endif
|
||||
#elif defined(__ia64__)
|
||||
r.halfs_.low = a*b;
|
||||
@ -392,6 +390,7 @@ S DivideThreeWordsByTwo(S* A, S B0, S B1, D* dummy_VC6_WorkAround = 0)
|
||||
return Q;
|
||||
}
|
||||
|
||||
|
||||
// do a 4 word by 2 word divide, returns 2 word quotient in Q0 and Q1
|
||||
template <class S, class D>
|
||||
inline D DivideFourWordsByTwo(S *T, const D &Al, const D &Ah, const D &B)
|
||||
@ -470,66 +469,6 @@ static inline unsigned int RoundupSize(unsigned int n)
|
||||
}
|
||||
|
||||
|
||||
template <class T>
|
||||
static Integer StringToInteger(const T *str)
|
||||
{
|
||||
word radix;
|
||||
|
||||
unsigned int length;
|
||||
for (length = 0; str[length] != 0; length++) {}
|
||||
|
||||
Integer v;
|
||||
|
||||
if (length == 0)
|
||||
return v;
|
||||
|
||||
switch (str[length-1])
|
||||
{
|
||||
case 'h':
|
||||
case 'H':
|
||||
radix=16;
|
||||
break;
|
||||
case 'o':
|
||||
case 'O':
|
||||
radix=8;
|
||||
break;
|
||||
case 'b':
|
||||
case 'B':
|
||||
radix=2;
|
||||
break;
|
||||
default:
|
||||
radix=10;
|
||||
}
|
||||
|
||||
if (length > 2 && str[0] == '0' && str[1] == 'x')
|
||||
radix = 16;
|
||||
|
||||
for (unsigned i=0; i<length; i++)
|
||||
{
|
||||
word digit;
|
||||
|
||||
if (str[i] >= '0' && str[i] <= '9')
|
||||
digit = str[i] - '0';
|
||||
else if (str[i] >= 'A' && str[i] <= 'F')
|
||||
digit = str[i] - 'A' + 10;
|
||||
else if (str[i] >= 'a' && str[i] <= 'f')
|
||||
digit = str[i] - 'a' + 10;
|
||||
else
|
||||
digit = radix;
|
||||
|
||||
if (digit < radix)
|
||||
{
|
||||
v *= radix;
|
||||
v += digit;
|
||||
}
|
||||
}
|
||||
|
||||
if (str[0] == '-')
|
||||
v.Negate();
|
||||
|
||||
return v;
|
||||
}
|
||||
|
||||
static int Compare(const word *A, const word *B, unsigned int N)
|
||||
{
|
||||
while (N--)
|
||||
@ -2308,85 +2247,6 @@ void RecursiveMultiplyBottom(word *R, word *T, const word *A, const word *B,
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
template <class P>
|
||||
void RecursiveMultiplyTop(word *R, word *T, const word *L, const word *A,
|
||||
const word *B, unsigned int N, const P *dummy=0)
|
||||
{
|
||||
assert(N>=2 && N%2==0);
|
||||
|
||||
if (N==4)
|
||||
{
|
||||
P::Multiply4(T, A, B);
|
||||
((dword *)R)[0] = ((dword *)T)[2];
|
||||
((dword *)R)[1] = ((dword *)T)[3];
|
||||
}
|
||||
else if (N==2)
|
||||
{
|
||||
P::Multiply2(T, A, B);
|
||||
((dword *)R)[0] = ((dword *)T)[1];
|
||||
}
|
||||
else
|
||||
{
|
||||
const unsigned int N2 = N/2;
|
||||
int carry;
|
||||
|
||||
int aComp = Compare(A0, A1, N2);
|
||||
int bComp = Compare(B0, B1, N2);
|
||||
|
||||
switch (2*aComp + aComp + bComp)
|
||||
{
|
||||
case -4:
|
||||
P::Subtract(R0, A1, A0, N2);
|
||||
P::Subtract(R1, B0, B1, N2);
|
||||
RecursiveMultiply<P>(T0, T2, R0, R1, N2);
|
||||
P::Subtract(T1, T1, R0, N2);
|
||||
carry = -1;
|
||||
break;
|
||||
case -2:
|
||||
P::Subtract(R0, A1, A0, N2);
|
||||
P::Subtract(R1, B0, B1, N2);
|
||||
RecursiveMultiply<P>(T0, T2, R0, R1, N2);
|
||||
carry = 0;
|
||||
break;
|
||||
case 2:
|
||||
P::Subtract(R0, A0, A1, N2);
|
||||
P::Subtract(R1, B1, B0, N2);
|
||||
RecursiveMultiply<P>(T0, T2, R0, R1, N2);
|
||||
carry = 0;
|
||||
break;
|
||||
case 4:
|
||||
P::Subtract(R0, A1, A0, N2);
|
||||
P::Subtract(R1, B0, B1, N2);
|
||||
RecursiveMultiply<P>(T0, T2, R0, R1, N2);
|
||||
P::Subtract(T1, T1, R1, N2);
|
||||
carry = -1;
|
||||
break;
|
||||
default:
|
||||
SetWords(T0, 0, N);
|
||||
carry = 0;
|
||||
}
|
||||
|
||||
RecursiveMultiply<P>(T2, R0, A1, B1, N2);
|
||||
|
||||
// now T[01] holds (A1-A0)*(B0-B1), T[23] holds A1*B1
|
||||
|
||||
word c2 = P::Subtract(R0, L+N2, L, N2);
|
||||
c2 += P::Subtract(R0, R0, T0, N2);
|
||||
word t = (Compare(R0, T2, N2) == -1);
|
||||
|
||||
carry += t;
|
||||
carry += Increment(R0, N2, c2+t);
|
||||
carry += P::Add(R0, R0, T1, N2);
|
||||
carry += P::Add(R0, R0, T3, N2);
|
||||
assert (carry >= 0 && carry <= 2);
|
||||
|
||||
CopyWords(R1, T3, N2);
|
||||
Increment(R1, N2, carry);
|
||||
}
|
||||
}
|
||||
*/
|
||||
|
||||
|
||||
void RecursiveMultiplyTop(word *R, word *T, const word *L, const word *A,
|
||||
const word *B, unsigned int N)
|
||||
@ -2739,20 +2599,6 @@ Integer::Integer(word value, unsigned int length)
|
||||
}
|
||||
|
||||
|
||||
Integer::Integer(const char *str)
|
||||
: reg_(2), sign_(POSITIVE)
|
||||
{
|
||||
*this = StringToInteger(str);
|
||||
}
|
||||
|
||||
|
||||
Integer::Integer(const wchar_t *str)
|
||||
: reg_(2), sign_(POSITIVE)
|
||||
{
|
||||
*this = StringToInteger(str);
|
||||
}
|
||||
|
||||
|
||||
Integer::Integer(const byte *encodedInteger, unsigned int byteCount,
|
||||
Signedness s)
|
||||
{
|
||||
@ -2844,25 +2690,19 @@ unsigned int Integer::Encode(byte* output, unsigned int outputLen,
|
||||
}
|
||||
|
||||
|
||||
const Integer Integer::zero(1,2);
|
||||
const Integer Integer::zero_;
|
||||
|
||||
const Integer &Integer::Zero()
|
||||
{
|
||||
return zero;
|
||||
return zero_;
|
||||
}
|
||||
|
||||
const Integer Integer::one(1,2);
|
||||
|
||||
const Integer Integer::one_(1,2);
|
||||
|
||||
const Integer &Integer::One()
|
||||
{
|
||||
return one;
|
||||
}
|
||||
|
||||
const Integer Integer::two(1,2);
|
||||
|
||||
const Integer &Integer::Two()
|
||||
{
|
||||
return two;
|
||||
return one_;
|
||||
}
|
||||
|
||||
|
||||
@ -3358,76 +3198,6 @@ Integer Integer::Times(const Integer &b) const
|
||||
#undef R2
|
||||
#undef R3
|
||||
|
||||
/*
|
||||
// do a 3 word by 2 word divide, returns quotient and leaves remainder in A
|
||||
static word SubatomicDivide(word *A, word B0, word B1)
|
||||
{
|
||||
// assert {A[2],A[1]} < {B1,B0}, so quotient can fit in a word
|
||||
assert(A[2] < B1 || (A[2]==B1 && A[1] < B0));
|
||||
|
||||
dword p, u;
|
||||
word Q;
|
||||
|
||||
// estimate the quotient: do a 2 word by 1 word divide
|
||||
if (B1+1 == 0)
|
||||
Q = A[2];
|
||||
else
|
||||
Q = word(MAKE_DWORD(A[1], A[2]) / (B1+1));
|
||||
|
||||
// now subtract Q*B from A
|
||||
p = (dword) B0*Q;
|
||||
u = (dword) A[0] - LOW_WORD(p);
|
||||
A[0] = LOW_WORD(u);
|
||||
u = (dword) A[1] - HIGH_WORD(p) - (word)(0-HIGH_WORD(u)) - (dword)B1*Q;
|
||||
A[1] = LOW_WORD(u);
|
||||
A[2] += HIGH_WORD(u);
|
||||
|
||||
// Q <= actual quotient, so fix it
|
||||
while (A[2] || A[1] > B1 || (A[1]==B1 && A[0]>=B0))
|
||||
{
|
||||
u = (dword) A[0] - B0;
|
||||
A[0] = LOW_WORD(u);
|
||||
u = (dword) A[1] - B1 - (word)(0-HIGH_WORD(u));
|
||||
A[1] = LOW_WORD(u);
|
||||
A[2] += HIGH_WORD(u);
|
||||
Q++;
|
||||
assert(Q); // shouldn't overflow
|
||||
}
|
||||
|
||||
return Q;
|
||||
}
|
||||
*/
|
||||
|
||||
|
||||
/*
|
||||
// do a 4 word by 2 word divide, returns 2 word quotient in Q0 and Q1
|
||||
static inline void AtomicDivide(word *Q, const word *A, const word *B)
|
||||
{
|
||||
if (!B[0] && !B[1]) // if divisor is 0, we assume divisor==2**(2*WORD_BITS)
|
||||
{
|
||||
Q[0] = A[2];
|
||||
Q[1] = A[3];
|
||||
}
|
||||
else
|
||||
{
|
||||
word T[4];
|
||||
T[0] = A[0]; T[1] = A[1]; T[2] = A[2]; T[3] = A[3];
|
||||
Q[1] = SubatomicDivide(T+1, B[0], B[1]);
|
||||
Q[0] = SubatomicDivide(T, B[0], B[1]);
|
||||
|
||||
#ifndef NDEBUG
|
||||
// multiply quotient and divisor and add remainder
|
||||
// make sure it equals dividend
|
||||
assert(!T[2] && !T[3] && (T[1] < B[1] || (T[1]==B[1] && T[0]<B[0])));
|
||||
word P[4];
|
||||
LowLevel::Multiply2(P, Q, B);
|
||||
Add(P, P, T, 4);
|
||||
assert(memcmp(P, A, 4*WORD_SIZE)==0);
|
||||
#endif
|
||||
}
|
||||
}
|
||||
*/
|
||||
|
||||
|
||||
static inline void AtomicDivide(word *Q, const word *A, const word *B)
|
||||
{
|
||||
@ -3772,7 +3542,7 @@ Integer a_exp_b_mod_c(const Integer &x, const Integer& e, const Integer& m)
|
||||
|
||||
Integer Integer::Gcd(const Integer &a, const Integer &b)
|
||||
{
|
||||
return EuclideanDomainOf<Integer>().Gcd(a, b);
|
||||
return EuclideanDomainOf().Gcd(a, b);
|
||||
}
|
||||
|
||||
Integer Integer::InverseMod(const Integer &m) const
|
||||
@ -3955,7 +3725,7 @@ Integer ModularArithmetic::CascadeExponentiate(const Integer &x,
|
||||
dr.ConvertIn(y), e2));
|
||||
}
|
||||
else
|
||||
return AbstractRing<Integer>::CascadeExponentiate(x, e1, y, e2);
|
||||
return AbstractRing::CascadeExponentiate(x, e1, y, e2);
|
||||
}
|
||||
|
||||
void ModularArithmetic::SimultaneousExponentiate(Integer *results,
|
||||
@ -3971,7 +3741,7 @@ void ModularArithmetic::SimultaneousExponentiate(Integer *results,
|
||||
results[i] = dr.ConvertOut(results[i]);
|
||||
}
|
||||
else
|
||||
AbstractRing<Integer>::SimultaneousExponentiate(results, base,
|
||||
AbstractRing::SimultaneousExponentiate(results, base,
|
||||
exponents, exponentsCount);
|
||||
}
|
||||
|
||||
@ -4170,10 +3940,6 @@ Integer CRT(const Integer &xp, const Integer &p, const Integer &xq,
|
||||
}
|
||||
|
||||
#ifdef __GNUC__
|
||||
template Integer StringToInteger<char>(char const*);
|
||||
template Integer StringToInteger<wchar_t>(wchar_t const*);
|
||||
template class EuclideanDomainOf<Integer>;
|
||||
template class AbstractEuclideanDomain<Integer>;
|
||||
template unsigned int DivideThreeWordsByTwo<unsigned int, DWord>(unsigned int*, unsigned int, unsigned int, DWord*);
|
||||
#endif
|
||||
|
||||
|
@ -22,33 +22,65 @@
|
||||
/* based on Wei Dai's misc.cpp from CryptoPP */
|
||||
|
||||
|
||||
#include "runtime.hpp"
|
||||
#include "misc.hpp"
|
||||
#include <new> // for NewHandler
|
||||
|
||||
|
||||
void* operator new(size_t sz, TaoCrypt::new_t)
|
||||
{
|
||||
void* ptr = ::operator new(sz);
|
||||
|
||||
void* ptr = malloc(sz ? sz : 1);
|
||||
if (!ptr) abort();
|
||||
|
||||
return ptr;
|
||||
}
|
||||
|
||||
void* operator new[](size_t sz, TaoCrypt::new_t tc)
|
||||
void* operator new[](size_t sz, TaoCrypt::new_t)
|
||||
{
|
||||
#if defined(_MSC_VER) && (_MSC_VER < 1300)
|
||||
void* ptr = ::operator new(sz); // no ::operator new[]
|
||||
#else
|
||||
void* ptr = ::operator new[](sz);
|
||||
#endif
|
||||
|
||||
void* ptr = malloc(sz ? sz : 1);
|
||||
if (!ptr) abort();
|
||||
|
||||
return ptr;
|
||||
}
|
||||
|
||||
void operator delete(void* ptr, TaoCrypt::new_t)
|
||||
{
|
||||
if (ptr) free(ptr);
|
||||
}
|
||||
|
||||
void operator delete[](void* ptr, TaoCrypt::new_t)
|
||||
{
|
||||
if (ptr) free(ptr);
|
||||
}
|
||||
|
||||
|
||||
/* uncomment to test
|
||||
// make sure not using globals anywhere by forgetting to use overloaded
|
||||
void* operator new(size_t sz)
|
||||
{
|
||||
assert(0);
|
||||
return malloc(sz);
|
||||
}
|
||||
|
||||
void operator delete(void* ptr)
|
||||
{
|
||||
assert(0);
|
||||
}
|
||||
|
||||
void* operator new[](size_t sz)
|
||||
{
|
||||
assert(0);
|
||||
return malloc(sz);
|
||||
}
|
||||
|
||||
void operator delete[](void* ptr)
|
||||
{
|
||||
assert(0);
|
||||
}
|
||||
*/
|
||||
|
||||
/* namespace GCC_ABI {
|
||||
extern "C" int __cxa_pure_virtual() { assert(0); return 0; }
|
||||
} */
|
||||
|
||||
|
||||
namespace TaoCrypt {
|
||||
|
@ -24,9 +24,7 @@
|
||||
specific seed, switch to /dev/random for more security but may block
|
||||
*/
|
||||
|
||||
#include "runtime.hpp"
|
||||
#include "random.hpp"
|
||||
#include "stdexcept.hpp"
|
||||
|
||||
#if defined(WIN32)
|
||||
#define _WIN32_WINNT 0x0400
|
||||
|
@ -21,13 +21,11 @@
|
||||
|
||||
/* based on Wei Dai's rsa.cpp from CryptoPP */
|
||||
|
||||
#include "runtime.hpp"
|
||||
#include "rsa.hpp"
|
||||
#include "asn.hpp"
|
||||
#include "modarith.hpp"
|
||||
#include "stdexcept.hpp"
|
||||
|
||||
#include "algebra.cpp" // for GCC 3.2 on aix ?
|
||||
|
||||
|
||||
namespace TaoCrypt {
|
||||
@ -211,28 +209,5 @@ word32 SSL_Decrypt(const RSA_PublicKey& key, const byte* sig, byte* plain)
|
||||
lengths.PaddedBlockBitLength(), plain);
|
||||
}
|
||||
|
||||
#ifdef __GNUC__
|
||||
template AllocatorWithCleanup<unsigned char>::pointer StdReallocate<unsigned char, AllocatorWithCleanup<unsigned char> >(AllocatorWithCleanup<unsigned char>&, unsigned char*, AllocatorWithCleanup<unsigned char>::size_type, AllocatorWithCleanup<unsigned char>::size_type, bool);
|
||||
template AllocatorWithCleanup<unsigned int>::pointer StdReallocate<unsigned int, AllocatorWithCleanup<unsigned int> >(AllocatorWithCleanup<unsigned int>&, unsigned int*, AllocatorWithCleanup<unsigned int>::size_type, AllocatorWithCleanup<unsigned int>::size_type, bool);
|
||||
template class AbstractGroup<Integer>;
|
||||
template class AbstractRing<Integer>;
|
||||
template class RSA_Decryptor<RSA_BlockType2>;
|
||||
template class RSA_Encryptor<RSA_BlockType1>;
|
||||
template class RSA_Encryptor<RSA_BlockType2>;
|
||||
#endif
|
||||
|
||||
} // namespace
|
||||
|
||||
#ifdef __GNUC__
|
||||
namespace mySTL {
|
||||
template TaoCrypt::Integer* uninit_copy<TaoCrypt::Integer*, TaoCrypt::Integer*>(TaoCrypt::Integer*, TaoCrypt::Integer*, TaoCrypt::Integer*);
|
||||
template TaoCrypt::Integer* uninit_fill_n<TaoCrypt::Integer*, unsigned int, TaoCrypt::Integer>(TaoCrypt::Integer*, unsigned int, TaoCrypt::Integer const&);
|
||||
template TaoCrypt::WindowSlider* uninit_copy<TaoCrypt::WindowSlider*, TaoCrypt::WindowSlider*>(TaoCrypt::WindowSlider*, TaoCrypt::WindowSlider*, TaoCrypt::WindowSlider*);
|
||||
template vector<TaoCrypt::Integer>* uninit_fill_n<vector<TaoCrypt::Integer>*, unsigned int, vector<TaoCrypt::Integer> >(vector<TaoCrypt::Integer>*, unsigned int, vector<TaoCrypt::Integer> const&);
|
||||
template void destroy<TaoCrypt::Integer*>(TaoCrypt::Integer*, TaoCrypt::Integer*);
|
||||
template void destroy<TaoCrypt::WindowSlider*>(TaoCrypt::WindowSlider*, TaoCrypt::WindowSlider*);
|
||||
template void destroy<vector<TaoCrypt::Integer>*>(vector<TaoCrypt::Integer>*, vector<TaoCrypt::Integer>*);
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
|
31
extra/yassl/taocrypt/src/template_instnt.cpp
Normal file
31
extra/yassl/taocrypt/src/template_instnt.cpp
Normal file
@ -0,0 +1,31 @@
|
||||
#include "integer.hpp"
|
||||
#include "rsa.hpp"
|
||||
#include "algebra.hpp"
|
||||
#include "vector.hpp"
|
||||
#include "hash.hpp"
|
||||
|
||||
#ifdef __GNUC__
|
||||
namespace TaoCrypt {
|
||||
#if defined(SSE2_INTRINSICS_AVAILABLE)
|
||||
template AlignedAllocator<unsigned int>::pointer StdReallocate<unsigned int, AlignedAllocator<unsigned int> >(AlignedAllocator<unsigned int>&, unsigned int*, AlignedAllocator<unsigned int>::size_type, AlignedAllocator<unsigned int>::size_type, bool);
|
||||
#endif
|
||||
template AllocatorWithCleanup<unsigned char>::pointer StdReallocate<unsigned char, AllocatorWithCleanup<unsigned char> >(AllocatorWithCleanup<unsigned char>&, unsigned char*, AllocatorWithCleanup<unsigned char>::size_type, AllocatorWithCleanup<unsigned char>::size_type, bool);
|
||||
template AllocatorWithCleanup<unsigned int>::pointer StdReallocate<unsigned int, AllocatorWithCleanup<unsigned int> >(AllocatorWithCleanup<unsigned int>&, unsigned int*, AllocatorWithCleanup<unsigned int>::size_type, AllocatorWithCleanup<unsigned int>::size_type, bool);
|
||||
template class RSA_Decryptor<RSA_BlockType2>;
|
||||
template class RSA_Encryptor<RSA_BlockType1>;
|
||||
template class RSA_Encryptor<RSA_BlockType2>;
|
||||
}
|
||||
|
||||
namespace mySTL {
|
||||
template vector<TaoCrypt::Integer>* uninit_fill_n<vector<TaoCrypt::Integer>*, unsigned int, vector<TaoCrypt::Integer> >(vector<TaoCrypt::Integer>*, unsigned int, vector<TaoCrypt::Integer> const&);
|
||||
template void destroy<vector<TaoCrypt::Integer>*>(vector<TaoCrypt::Integer>*, vector<TaoCrypt::Integer>*);
|
||||
template TaoCrypt::Integer* uninit_copy<TaoCrypt::Integer*, TaoCrypt::Integer*>(TaoCrypt::Integer*, TaoCrypt::Integer*, TaoCrypt::Integer*);
|
||||
template TaoCrypt::Integer* uninit_fill_n<TaoCrypt::Integer*, unsigned int, TaoCrypt::Integer>(TaoCrypt::Integer*, unsigned int, TaoCrypt::Integer const&);
|
||||
template void destroy<TaoCrypt::Integer*>(TaoCrypt::Integer*, TaoCrypt::Integer*);
|
||||
}
|
||||
|
||||
template void TaoCrypt::tcDelete<TaoCrypt::HASH>(TaoCrypt::HASH*);
|
||||
template void TaoCrypt::tcArrayDelete<unsigned>(unsigned*);
|
||||
template void TaoCrypt::tcArrayDelete<unsigned char>(unsigned char*);
|
||||
template void TaoCrypt::tcArrayDelete<char>(char*);
|
||||
#endif
|
@ -76,6 +76,7 @@ functions */
|
||||
#define F_EXCLUSIVE 1 /* We have only exclusive locking */
|
||||
#define F_TO_EOF (INT_MAX32/2) /* size for lock of all file */
|
||||
#define F_OK 0 /* parameter to access() */
|
||||
#define W_OK 2
|
||||
|
||||
#define S_IROTH S_IREAD /* for my_lib */
|
||||
|
||||
@ -399,6 +400,7 @@ inline double ulonglong2double(ulonglong value)
|
||||
/* #undef HAVE_CHARSET_cp850 */
|
||||
/* #undef HAVE_CHARSET_cp852 */
|
||||
/* #undef HAVE_CHARSET_cp866 */
|
||||
#define HAVE_CHARSET_cp932 1
|
||||
/* #undef HAVE_CHARSET_dec8 */
|
||||
#define HAVE_CHARSET_eucjpms 1
|
||||
#define HAVE_CHARSET_euckr 1
|
||||
|
@ -48,6 +48,11 @@
|
||||
#define USE_PRAGMA_INTERFACE
|
||||
#endif
|
||||
|
||||
/* Determine when to use "#pragma implementation" */
|
||||
#if !defined(__INTEL_COMPILER) && defined(__GNUC__) && (__GNUC__ < 3)
|
||||
#define USE_PRAGMA_IMPLEMENTATION
|
||||
#endif
|
||||
|
||||
#if defined(i386) && !defined(__i386__)
|
||||
#define __i386__
|
||||
#endif
|
||||
@ -310,12 +315,14 @@ C_MODE_END
|
||||
#endif
|
||||
#if defined(__ia64__)
|
||||
#define new my_arg_new
|
||||
#define need_to_restore_new 1
|
||||
#endif
|
||||
C_MODE_START
|
||||
#include <asm/atomic.h>
|
||||
C_MODE_END
|
||||
#if defined(__ia64__)
|
||||
#ifdef need_to_restore_new /* probably safer than #ifdef new */
|
||||
#undef new
|
||||
#undef need_to_restore_new
|
||||
#endif
|
||||
#endif
|
||||
#include <errno.h> /* Recommended by debian */
|
||||
|
@ -605,6 +605,7 @@ extern int my_access(const char *path, int amode);
|
||||
#else
|
||||
#define my_access access
|
||||
#endif
|
||||
extern int check_if_legal_filename(const char *path);
|
||||
|
||||
#ifndef TERMINATE
|
||||
extern void TERMINATE(FILE *file);
|
||||
|
@ -3151,6 +3151,7 @@ row_drop_table_for_mysql(
|
||||
foreign = UT_LIST_GET_FIRST(table->referenced_list);
|
||||
|
||||
while (foreign && foreign->foreign_table == table) {
|
||||
check_next_foreign:
|
||||
foreign = UT_LIST_GET_NEXT(referenced_list, foreign);
|
||||
}
|
||||
|
||||
@ -3179,6 +3180,10 @@ row_drop_table_for_mysql(
|
||||
goto funct_exit;
|
||||
}
|
||||
|
||||
if (foreign && trx->check_foreigns) {
|
||||
goto check_next_foreign;
|
||||
}
|
||||
|
||||
if (table->n_mysql_handles_opened > 0) {
|
||||
ibool added;
|
||||
|
||||
|
@ -1758,8 +1758,9 @@ innobase_shutdown_for_mysql(void)
|
||||
to die; all which counts is that we flushed the log; a 'very fast'
|
||||
shutdown is essentially a crash. */
|
||||
|
||||
if (srv_fast_shutdown)
|
||||
return((int) DB_SUCCESS);
|
||||
if (srv_fast_shutdown == 2) {
|
||||
return(DB_SUCCESS);
|
||||
}
|
||||
|
||||
/* All threads end up waiting for certain events. Put those events
|
||||
to the signaled state. Then the threads will exit themselves in
|
||||
|
@ -50,6 +50,9 @@ CREATE TABLE host (
|
||||
Lock_tables_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL,
|
||||
Create_view_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL,
|
||||
Show_view_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL,
|
||||
Create_routine_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL,
|
||||
Alter_routine_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL,
|
||||
Execute_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL,
|
||||
PRIMARY KEY Host (Host,Db)
|
||||
) engine=MyISAM
|
||||
CHARACTER SET utf8 COLLATE utf8_bin
|
||||
@ -489,10 +492,11 @@ CREATE TABLE procs_priv (
|
||||
Db char(64) binary DEFAULT '' NOT NULL,
|
||||
User char(16) binary DEFAULT '' NOT NULL,
|
||||
Routine_name char(64) binary DEFAULT '' NOT NULL,
|
||||
Routine_type enum('FUNCTION','PROCEDURE') NOT NULL,
|
||||
Grantor char(77) DEFAULT '' NOT NULL,
|
||||
Timestamp timestamp(14),
|
||||
Proc_priv set('Execute','Alter Routine','Grant') COLLATE utf8_general_ci DEFAULT '' NOT NULL,
|
||||
PRIMARY KEY (Host,Db,User,Routine_name),
|
||||
Timestamp timestamp(14),
|
||||
PRIMARY KEY (Host,Db,User,Routine_name,Routine_type),
|
||||
KEY Grantor (Grantor)
|
||||
) engine=MyISAM
|
||||
CHARACTER SET utf8 COLLATE utf8_bin
|
||||
|
@ -1212,8 +1212,8 @@ start_master()
|
||||
$NOT_FIRST_MASTER_EXTRA_OPTS"
|
||||
fi
|
||||
|
||||
CUR_MYERR=$MASTER_MYERR
|
||||
CUR_MYSOCK=$MASTER_MYSOCK
|
||||
CUR_MYERR=$MASTER_MYERR$1
|
||||
CUR_MYSOCK=$MASTER_MYSOCK$1
|
||||
|
||||
# For embedded server we collect the server flags and return
|
||||
if [ "x$USE_EMBEDDED_SERVER" = "x1" ] ; then
|
||||
|
@ -60,3 +60,9 @@ count(distinct a)
|
||||
1
|
||||
1
|
||||
drop table t1;
|
||||
create table t1 (f1 int, f2 int);
|
||||
insert into t1 values (0,1),(1,2);
|
||||
select count(distinct if(f1,3,f2)) from t1;
|
||||
count(distinct if(f1,3,f2))
|
||||
2
|
||||
drop table t1;
|
||||
|
@ -579,3 +579,21 @@ select * from t2;
|
||||
b
|
||||
1
|
||||
drop table t1,t2;
|
||||
use test;
|
||||
create table t1 (a int);
|
||||
create table t1 select * from t1;
|
||||
ERROR HY000: You can't specify target table 't1' for update in FROM clause
|
||||
create table t2 union = (t1) select * from t1;
|
||||
ERROR HY000: You can't specify target table 't1' for update in FROM clause
|
||||
flush tables with read lock;
|
||||
unlock tables;
|
||||
drop table t1;
|
||||
create table t1(column.name int);
|
||||
ERROR 42000: Incorrect table name 'column'
|
||||
create table t1(test.column.name int);
|
||||
ERROR 42000: Incorrect table name 'column'
|
||||
create table t1(xyz.t1.name int);
|
||||
ERROR 42000: Incorrect database name 'xyz'
|
||||
create table t1(t1.name int);
|
||||
create table t2(test.t2.name int);
|
||||
drop table t1,t2;
|
||||
|
138
mysql-test/r/default.result
Normal file
138
mysql-test/r/default.result
Normal file
@ -0,0 +1,138 @@
|
||||
drop table if exists t1,t2,t3,t4,t5,t6;
|
||||
drop database if exists mysqltest;
|
||||
CREATE TABLE t1 (a varchar(30) binary NOT NULL DEFAULT ' ',
|
||||
b varchar(1) binary NOT NULL DEFAULT ' ',
|
||||
c varchar(4) binary NOT NULL DEFAULT '0000',
|
||||
d tinyblob NULL,
|
||||
e tinyblob NULL,
|
||||
f tinyblob NULL,
|
||||
g tinyblob NULL,
|
||||
h tinyblob NULL,
|
||||
i tinyblob NULL,
|
||||
j tinyblob NULL,
|
||||
k tinyblob NULL,
|
||||
l tinyblob NULL,
|
||||
m tinyblob NULL,
|
||||
n tinyblob NULL,
|
||||
o tinyblob NULL,
|
||||
p tinyblob NULL,
|
||||
q varchar(30) binary NOT NULL DEFAULT ' ',
|
||||
r varchar(30) binary NOT NULL DEFAULT ' ',
|
||||
s tinyblob NULL,
|
||||
t varchar(4) binary NOT NULL DEFAULT ' ',
|
||||
u varchar(1) binary NOT NULL DEFAULT ' ',
|
||||
v varchar(30) binary NOT NULL DEFAULT ' ',
|
||||
w varchar(30) binary NOT NULL DEFAULT ' ',
|
||||
x tinyblob NULL,
|
||||
y varchar(5) binary NOT NULL DEFAULT ' ',
|
||||
z varchar(20) binary NOT NULL DEFAULT ' ',
|
||||
a1 varchar(30) binary NOT NULL DEFAULT ' ',
|
||||
b1 tinyblob NULL)
|
||||
ENGINE=InnoDB DEFAULT CHARACTER SET = latin1 COLLATE latin1_bin;
|
||||
SHOW CREATE TABLE t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`a` varchar(30) collate latin1_bin NOT NULL default ' ',
|
||||
`b` varchar(1) collate latin1_bin NOT NULL default ' ',
|
||||
`c` varchar(4) collate latin1_bin NOT NULL default '0000',
|
||||
`d` tinyblob,
|
||||
`e` tinyblob,
|
||||
`f` tinyblob,
|
||||
`g` tinyblob,
|
||||
`h` tinyblob,
|
||||
`i` tinyblob,
|
||||
`j` tinyblob,
|
||||
`k` tinyblob,
|
||||
`l` tinyblob,
|
||||
`m` tinyblob,
|
||||
`n` tinyblob,
|
||||
`o` tinyblob,
|
||||
`p` tinyblob,
|
||||
`q` varchar(30) collate latin1_bin NOT NULL default ' ',
|
||||
`r` varchar(30) collate latin1_bin NOT NULL default ' ',
|
||||
`s` tinyblob,
|
||||
`t` varchar(4) collate latin1_bin NOT NULL default ' ',
|
||||
`u` varchar(1) collate latin1_bin NOT NULL default ' ',
|
||||
`v` varchar(30) collate latin1_bin NOT NULL default ' ',
|
||||
`w` varchar(30) collate latin1_bin NOT NULL default ' ',
|
||||
`x` tinyblob,
|
||||
`y` varchar(5) collate latin1_bin NOT NULL default ' ',
|
||||
`z` varchar(20) collate latin1_bin NOT NULL default ' ',
|
||||
`a1` varchar(30) collate latin1_bin NOT NULL default ' ',
|
||||
`b1` tinyblob
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=latin1 COLLATE=latin1_bin
|
||||
INSERT into t1 (b) values ('1');
|
||||
SHOW WARNINGS;
|
||||
Level Code Message
|
||||
SELECT * from t1;
|
||||
a b c d e f g h i j k l m n o p q r s t u v w x y z a1 b1
|
||||
1 0000 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL
|
||||
CREATE TABLE t2 (a varchar(30) binary NOT NULL DEFAULT ' ',
|
||||
b varchar(1) binary NOT NULL DEFAULT ' ',
|
||||
c varchar(4) binary NOT NULL DEFAULT '0000',
|
||||
d tinyblob NULL,
|
||||
e tinyblob NULL,
|
||||
f tinyblob NULL,
|
||||
g tinyblob NULL,
|
||||
h tinyblob NULL,
|
||||
i tinyblob NULL,
|
||||
j tinyblob NULL,
|
||||
k tinyblob NULL,
|
||||
l tinyblob NULL,
|
||||
m tinyblob NULL,
|
||||
n tinyblob NULL,
|
||||
o tinyblob NULL,
|
||||
p tinyblob NULL,
|
||||
q varchar(30) binary NOT NULL DEFAULT ' ',
|
||||
r varchar(30) binary NOT NULL DEFAULT ' ',
|
||||
s tinyblob NULL,
|
||||
t varchar(4) binary NOT NULL DEFAULT ' ',
|
||||
u varchar(1) binary NOT NULL DEFAULT ' ',
|
||||
v varchar(30) binary NOT NULL DEFAULT ' ',
|
||||
w varchar(30) binary NOT NULL DEFAULT ' ',
|
||||
x tinyblob NULL,
|
||||
y varchar(5) binary NOT NULL DEFAULT ' ',
|
||||
z varchar(20) binary NOT NULL DEFAULT ' ',
|
||||
a1 varchar(30) binary NOT NULL DEFAULT ' ',
|
||||
b1 tinyblob NULL)
|
||||
ENGINE=MyISAM DEFAULT CHARACTER SET = latin1 COLLATE latin1_bin;
|
||||
SHOW CREATE TABLE t2;
|
||||
Table Create Table
|
||||
t2 CREATE TABLE `t2` (
|
||||
`a` varchar(30) collate latin1_bin NOT NULL default ' ',
|
||||
`b` varchar(1) collate latin1_bin NOT NULL default ' ',
|
||||
`c` varchar(4) collate latin1_bin NOT NULL default '0000',
|
||||
`d` tinyblob,
|
||||
`e` tinyblob,
|
||||
`f` tinyblob,
|
||||
`g` tinyblob,
|
||||
`h` tinyblob,
|
||||
`i` tinyblob,
|
||||
`j` tinyblob,
|
||||
`k` tinyblob,
|
||||
`l` tinyblob,
|
||||
`m` tinyblob,
|
||||
`n` tinyblob,
|
||||
`o` tinyblob,
|
||||
`p` tinyblob,
|
||||
`q` varchar(30) collate latin1_bin NOT NULL default ' ',
|
||||
`r` varchar(30) collate latin1_bin NOT NULL default ' ',
|
||||
`s` tinyblob,
|
||||
`t` varchar(4) collate latin1_bin NOT NULL default ' ',
|
||||
`u` varchar(1) collate latin1_bin NOT NULL default ' ',
|
||||
`v` varchar(30) collate latin1_bin NOT NULL default ' ',
|
||||
`w` varchar(30) collate latin1_bin NOT NULL default ' ',
|
||||
`x` tinyblob,
|
||||
`y` varchar(5) collate latin1_bin NOT NULL default ' ',
|
||||
`z` varchar(20) collate latin1_bin NOT NULL default ' ',
|
||||
`a1` varchar(30) collate latin1_bin NOT NULL default ' ',
|
||||
`b1` tinyblob
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_bin
|
||||
INSERT into t2 (b) values ('1');
|
||||
SHOW WARNINGS;
|
||||
Level Code Message
|
||||
SELECT * from t2;
|
||||
a b c d e f g h i j k l m n o p q r s t u v w x y z a1 b1
|
||||
1 0000 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL
|
||||
drop table t1;
|
||||
drop table t2;
|
@ -906,9 +906,100 @@ INSERT INTO federated.t1 (name, country_id, other) VALUES ('Lenz', 2, 22222);
|
||||
INSERT INTO federated.t1 (name, country_id, other) VALUES ('Marizio', 3, 33333);
|
||||
INSERT INTO federated.t1 (name, country_id, other) VALUES ('Monty', 4, 33333);
|
||||
INSERT INTO federated.t1 (name, country_id, other) VALUES ('Sanja', 5, 33333);
|
||||
EXPLAIN SELECT federated.t1.name AS name, federated.t1.country_id AS country_id,
|
||||
federated.t1.other AS other, federated.countries.country AS country
|
||||
FROM federated.t1, federated.countries WHERE
|
||||
federated.t1.country_id = federated.countries.id;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE countries ALL PRIMARY NULL NULL NULL 5
|
||||
1 SIMPLE t1 ref country_id country_id 4 federated.countries.id 120
|
||||
SELECT federated.t1.name AS name, federated.t1.country_id AS country_id,
|
||||
federated.t1.other AS other, federated.countries.country AS country
|
||||
FROM federated.t1, federated.countries WHERE
|
||||
federated.t1.country_id = federated.countries.id;
|
||||
name country_id other country
|
||||
Kumar 1 11111 India
|
||||
Lenz 2 22222 Germany
|
||||
Marizio 3 33333 Italy
|
||||
Monty 4 33333 Finland
|
||||
Sanja 5 33333 Ukraine
|
||||
EXPLAIN SELECT federated.t1.name AS name, federated.t1.country_id AS country_id,
|
||||
federated.t1.other AS other, federated.countries.country AS country
|
||||
FROM federated.t1 INNER JOIN federated.countries ON
|
||||
federated.t1.country_id = federated.countries.id;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE countries ALL PRIMARY NULL NULL NULL 5
|
||||
1 SIMPLE t1 ref country_id country_id 4 federated.countries.id 120
|
||||
SELECT federated.t1.name AS name, federated.t1.country_id AS country_id,
|
||||
federated.t1.other AS other, federated.countries.country AS country
|
||||
FROM federated.t1 INNER JOIN federated.countries ON
|
||||
federated.t1.country_id = federated.countries.id;
|
||||
name country_id other country
|
||||
Kumar 1 11111 India
|
||||
Lenz 2 22222 Germany
|
||||
Marizio 3 33333 Italy
|
||||
Monty 4 33333 Finland
|
||||
Sanja 5 33333 Ukraine
|
||||
EXPLAIN SELECT federated.t1.name AS name, federated.t1.country_id AS country_id,
|
||||
federated.t1.other AS other, federated.countries.country AS country
|
||||
FROM federated.t1 INNER JOIN federated.countries ON
|
||||
federated.t1.country_id = federated.countries.id
|
||||
WHERE federated.t1.name = 'Monty';
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE countries ALL PRIMARY NULL NULL NULL 5
|
||||
1 SIMPLE t1 ref country_id country_id 4 federated.countries.id 120 Using where
|
||||
SELECT federated.t1.name AS name, federated.t1.country_id AS country_id,
|
||||
federated.t1.other AS other, federated.countries.country AS country
|
||||
FROM federated.t1 INNER JOIN federated.countries ON
|
||||
federated.t1.country_id = federated.countries.id
|
||||
WHERE federated.t1.name = 'Monty';
|
||||
name country_id other country
|
||||
Monty 4 33333 Finland
|
||||
EXPLAIN SELECT federated.t1.*, federated.countries.country
|
||||
FROM federated.t1 LEFT JOIN federated.countries
|
||||
ON federated.t1.country_id = federated.countries.id
|
||||
ORDER BY federated.countries.id;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 ALL NULL NULL NULL NULL 10000 Using temporary; Using filesort
|
||||
1 SIMPLE countries eq_ref PRIMARY PRIMARY 4 federated.t1.country_id 1
|
||||
SELECT federated.t1.*, federated.countries.country
|
||||
FROM federated.t1 left join federated.countries
|
||||
ON federated.t1.country_id = federated.countries.id;
|
||||
FROM federated.t1 LEFT JOIN federated.countries
|
||||
ON federated.t1.country_id = federated.countries.id
|
||||
ORDER BY federated.countries.id;
|
||||
id country_id name other country
|
||||
1 1 Kumar 11111 India
|
||||
2 2 Lenz 22222 Germany
|
||||
3 3 Marizio 33333 Italy
|
||||
4 4 Monty 33333 Finland
|
||||
5 5 Sanja 33333 Ukraine
|
||||
EXPLAIN SELECT federated.t1.*, federated.countries.country
|
||||
FROM federated.t1 LEFT JOIN federated.countries
|
||||
ON federated.t1.country_id = federated.countries.id
|
||||
ORDER BY federated.countries.country;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 ALL NULL NULL NULL NULL 10000 Using temporary; Using filesort
|
||||
1 SIMPLE countries eq_ref PRIMARY PRIMARY 4 federated.t1.country_id 1
|
||||
SELECT federated.t1.*, federated.countries.country
|
||||
FROM federated.t1 LEFT JOIN federated.countries
|
||||
ON federated.t1.country_id = federated.countries.id
|
||||
ORDER BY federated.countries.country;
|
||||
id country_id name other country
|
||||
4 4 Monty 33333 Finland
|
||||
2 2 Lenz 22222 Germany
|
||||
1 1 Kumar 11111 India
|
||||
3 3 Marizio 33333 Italy
|
||||
5 5 Sanja 33333 Ukraine
|
||||
EXPLAIN SELECT federated.t1.*, federated.countries.country
|
||||
FROM federated.t1 RIGHT JOIN federated.countries
|
||||
ON federated.t1.country_id = federated.countries.id
|
||||
ORDER BY federated.t1.country_id;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE countries ALL NULL NULL NULL NULL 5 Using temporary; Using filesort
|
||||
1 SIMPLE t1 ref country_id country_id 4 federated.countries.id 120
|
||||
SELECT federated.t1.*, federated.countries.country
|
||||
FROM federated.t1 RIGHT JOIN federated.countries
|
||||
ON federated.t1.country_id = federated.countries.id
|
||||
ORDER BY federated.t1.country_id;
|
||||
id country_id name other country
|
||||
1 1 Kumar 11111 India
|
||||
2 2 Lenz 22222 Germany
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user