Commit 0274088f authored by vva@genie.(none)'s avatar vva@genie.(none)

additions for compiling for Win via samba

parent 2e4e1b3b
Mail by sasha, should be rewritten as a HOWTO sometimes Mail by sasha, should be rewritten as a HOWTO sometimes
vva added point C) for Windows-project
----------- -----------
I have set up a repository with BitKeeper on work. There are still some things I have set up a repository with BitKeeper on work. There are still some things
...@@ -29,6 +30,12 @@ you will need just to set up a slave repository on your machine: ...@@ -29,6 +30,12 @@ you will need just to set up a slave repository on your machine:
Now you have the entire source tree in the current directory. Let's compile it: Now you have the entire source tree in the current directory. Let's compile it:
BUILD/compile-pentium-debug BUILD/compile-pentium-debug
C) Windows project.
- Compile Linux-project (see points above)
- run VC++Files/prepare
- make repository accessible for Windows (using samba)
- open VC++Files/mysql.dsw in Microsoft Visual Stidio (5.0 or above)
After you edit a file, you need to check it in using bk citool or bk ci After you edit a file, you need to check it in using bk citool or bk ci
filename. Note that ci is different than commit - you ci a file, but you commit filename. Note that ci is different than commit - you ci a file, but you commit
......
...@@ -42,7 +42,7 @@ RSC=rc.exe ...@@ -42,7 +42,7 @@ RSC=rc.exe
# PROP Ignore_Export_Lib 0 # PROP Ignore_Export_Lib 0
# PROP Target_Dir "" # PROP Target_Dir ""
# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c # ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
# ADD CPP /nologo /G6 /MT /W3 /O2 /I "../include" /I "../" /I "../sql" /D "NDEBUG" /D "DBUG_OFF" /D "_CONSOLE" /D "_MBCS" /D "_WINDOWS" /D "MYSQL_SERVER" /FD /c # ADD CPP /nologo /G6 /MT /W3 /O2 /I "../include" /I "../" /I "../client" /D "NDEBUG" /D "DBUG_OFF" /D "_CONSOLE" /D "_MBCS" /D "_WINDOWS" /D "MYSQL_SERVER" /FD /c
# ADD BASE RSC /l 0x409 /d "NDEBUG" # ADD BASE RSC /l 0x409 /d "NDEBUG"
# ADD RSC /l 0x409 /d "NDEBUG" # ADD RSC /l 0x409 /d "NDEBUG"
BSC32=bscmake.exe BSC32=bscmake.exe
...@@ -67,7 +67,7 @@ LINK32=link.exe ...@@ -67,7 +67,7 @@ LINK32=link.exe
# PROP Ignore_Export_Lib 0 # PROP Ignore_Export_Lib 0
# PROP Target_Dir "" # PROP Target_Dir ""
# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c # ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
# ADD CPP /nologo /G6 /MTd /W3 /Gm /ZI /Od /I "../include" /I "../" /I "../sql" /D "_DEBUG" /D "SAFEMALLOC" /D "SAFE_MUTEX" /D "_CONSOLE" /D "_MBCS" /D "_WINDOWS" /D "MYSQL_SERVER" /FD /c # ADD CPP /nologo /G6 /MTd /W3 /Gm /ZI /Od /I "../include" /I "../" /I "../client" /D "_DEBUG" /D "SAFEMALLOC" /D "SAFE_MUTEX" /D "_CONSOLE" /D "_MBCS" /D "_WINDOWS" /D "MYSQL_SERVER" /FD /c
# ADD BASE RSC /l 0x409 /d "_DEBUG" # ADD BASE RSC /l 0x409 /d "_DEBUG"
# ADD RSC /l 0x409 /d "_DEBUG" # ADD RSC /l 0x409 /d "_DEBUG"
BSC32=bscmake.exe BSC32=bscmake.exe
...@@ -88,7 +88,7 @@ LINK32=link.exe ...@@ -88,7 +88,7 @@ LINK32=link.exe
# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" # PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
# Begin Source File # Begin Source File
SOURCE=..\client\mysqlbinlog.cpp SOURCE=.\mysqlbinlog.cpp
# End Source File # End Source File
# End Group # End Group
# Begin Group "Header Files" # Begin Group "Header Files"
......
// ChildFrm.cpp : implementation of the CChildFrame class
//
#include "stdafx.h"
#include "MySqlManager.h"
#include "ChildFrm.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CChildFrame
IMPLEMENT_DYNCREATE(CChildFrame, CMDIChildWnd)
BEGIN_MESSAGE_MAP(CChildFrame, CMDIChildWnd)
//{{AFX_MSG_MAP(CChildFrame)
// NOTE - the ClassWizard will add and remove mapping macros here.
// DO NOT EDIT what you see in these blocks of generated code !
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CChildFrame construction/destruction
CChildFrame::CChildFrame()
{
// TODO: add member initialization code here
}
CChildFrame::~CChildFrame()
{
}
BOOL CChildFrame::PreCreateWindow(CREATESTRUCT& cs)
{
// TODO: Modify the Window class or styles here by modifying
// the CREATESTRUCT cs
return CMDIChildWnd::PreCreateWindow(cs);
}
/////////////////////////////////////////////////////////////////////////////
// CChildFrame diagnostics
#ifdef _DEBUG
void CChildFrame::AssertValid() const
{
CMDIChildWnd::AssertValid();
}
void CChildFrame::Dump(CDumpContext& dc) const
{
CMDIChildWnd::Dump(dc);
}
#endif //_DEBUG
/////////////////////////////////////////////////////////////////////////////
// CChildFrame message handlers
// ChildFrm.h : interface of the CChildFrame class
//
/////////////////////////////////////////////////////////////////////////////
#if !defined(AFX_CHILDFRM_H__826CB2F0_8B6D_11D1_AEC1_00600806E071__INCLUDED_)
#define AFX_CHILDFRM_H__826CB2F0_8B6D_11D1_AEC1_00600806E071__INCLUDED_
#if _MSC_VER >= 1000
#pragma once
#endif // _MSC_VER >= 1000
class CChildFrame : public CMDIChildWnd
{
DECLARE_DYNCREATE(CChildFrame)
public:
CChildFrame();
// Attributes
public:
// Operations
public:
// Overrides
// ClassWizard generated virtual function overrides
//{{AFX_VIRTUAL(CChildFrame)
virtual BOOL PreCreateWindow(CREATESTRUCT& cs);
//}}AFX_VIRTUAL
// Implementation
public:
virtual ~CChildFrame();
#ifdef _DEBUG
virtual void AssertValid() const;
virtual void Dump(CDumpContext& dc) const;
#endif
// Generated message map functions
protected:
//{{AFX_MSG(CChildFrame)
// NOTE - the ClassWizard will add and remove member functions here.
// DO NOT EDIT what you see in these blocks of generated code!
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
};
/////////////////////////////////////////////////////////////////////////////
//{{AFX_INSERT_LOCATION}}
// Microsoft Developer Studio will insert additional declarations immediately before the previous line.
#endif // !defined(AFX_CHILDFRM_H__826CB2F0_8B6D_11D1_AEC1_00600806E071__INCLUDED_)
// MainFrm.cpp : implementation of the CMainFrame class
//
#include "stdafx.h"
#include "MySqlManager.h"
#include "MainFrm.h"
CMainFrame* CMainFrame::g_pMainFrame = NULL;
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CMainFrame
IMPLEMENT_DYNAMIC(CMainFrame, CMDIFrameWnd)
BEGIN_MESSAGE_MAP(CMainFrame, CMDIFrameWnd)
//{{AFX_MSG_MAP(CMainFrame)
// NOTE - the ClassWizard will add and remove mapping macros here.
// DO NOT EDIT what you see in these blocks of generated code !
ON_WM_CREATE()
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
static UINT indicators[] =
{
ID_SEPARATOR, // status line indicator
ID_INDICATOR_CAPS,
ID_INDICATOR_NUM,
ID_INDICATOR_SCRL,
};
/////////////////////////////////////////////////////////////////////////////
// CMainFrame construction/destruction
CMainFrame::CMainFrame()
{
// TODO: add member initialization code here
}
CMainFrame::~CMainFrame()
{
}
int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (CMDIFrameWnd::OnCreate(lpCreateStruct) == -1)
return -1;
if (!m_wndToolBar.Create(this) ||
!m_wndToolBar.LoadToolBar(IDR_MAINFRAME))
{
TRACE0("Failed to create toolbar\n");
return -1; // fail to create
}
if (!m_wndStatusBar.Create(this) ||
!m_wndStatusBar.SetIndicators(indicators,
sizeof(indicators)/sizeof(UINT)))
{
TRACE0("Failed to create status bar\n");
return -1; // fail to create
}
// TODO: Remove this if you don't want tool tips or a resizeable toolbar
m_wndToolBar.SetBarStyle(m_wndToolBar.GetBarStyle() |
CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC);
// TODO: Delete these three lines if you don't want the toolbar to
// be dockable
m_wndToolBar.EnableDocking(CBRS_ALIGN_ANY);
EnableDocking(CBRS_ALIGN_ANY);
DockControlBar(&m_wndToolBar);
return 0;
}
BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs)
{
// TODO: Modify the Window class or styles here by modifying
// the CREATESTRUCT cs
return CMDIFrameWnd::PreCreateWindow(cs);
}
/////////////////////////////////////////////////////////////////////////////
// CMainFrame diagnostics
#ifdef _DEBUG
void CMainFrame::AssertValid() const
{
CMDIFrameWnd::AssertValid();
}
void CMainFrame::Dump(CDumpContext& dc) const
{
CMDIFrameWnd::Dump(dc);
}
#endif //_DEBUG
/////////////////////////////////////////////////////////////////////////////
// CMainFrame message handlers
int CMainFrame::StatusMsg ( LPCSTR fmt, ... )
{
char buf [2048];
va_list args;
va_start(args, fmt);
int ret = vsprintf(buf, fmt, args);
if ( this != NULL )
{
static char g_StatusMsg_Buffer_TT [ 2048 ];
memcpy ( g_StatusMsg_Buffer_TT, buf, sizeof(g_StatusMsg_Buffer_TT) );
m_wndStatusBar.SetPaneText ( 0, buf );
m_wndStatusBar.UpdateWindow ();
}
va_end(args);
return ( ret );
}
BOOL CMainFrame::OnCreateClient(LPCREATESTRUCT lpcs, CCreateContext* pContext)
{
g_pMainFrame = this;
return CMDIFrameWnd::OnCreateClient(lpcs, pContext);
}
// MainFrm.h : interface of the CMainFrame class
//
/////////////////////////////////////////////////////////////////////////////
#if !defined(AFX_MAINFRM_H__826CB2EE_8B6D_11D1_AEC1_00600806E071__INCLUDED_)
#define AFX_MAINFRM_H__826CB2EE_8B6D_11D1_AEC1_00600806E071__INCLUDED_
#if _MSC_VER >= 1000
#pragma once
#endif // _MSC_VER >= 1000
class CMainFrame : public CMDIFrameWnd
{
DECLARE_DYNAMIC(CMainFrame)
public:
CMainFrame();
// Attributes
public:
// Operations
public:
// Overrides
// ClassWizard generated virtual function overrides
//{{AFX_VIRTUAL(CMainFrame)
public:
virtual BOOL PreCreateWindow(CREATESTRUCT& cs);
protected:
virtual BOOL OnCreateClient(LPCREATESTRUCT lpcs, CCreateContext* pContext);
//}}AFX_VIRTUAL
// Implementation
public:
virtual ~CMainFrame();
#ifdef _DEBUG
virtual void AssertValid() const;
virtual void Dump(CDumpContext& dc) const;
#endif
int StatusMsg ( LPCSTR fmt, ... );
protected: // control bar embedded members
CStatusBar m_wndStatusBar;
CToolBar m_wndToolBar;
// Generated message map functions
protected:
//{{AFX_MSG(CMainFrame)
afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);
// NOTE - the ClassWizard will add and remove member functions here.
// DO NOT EDIT what you see in these blocks of generated code!
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
public:
static CMainFrame* g_pMainFrame;
};
#define MainFrame ( CMainFrame::g_pMainFrame ? CMainFrame::g_pMainFrame : (CMainFrame*) AfxGetMainWnd() -> GetTopLevelFrame() )
/////////////////////////////////////////////////////////////////////////////
//{{AFX_INSERT_LOCATION}}
// Microsoft Developer Studio will insert additional declarations immediately before the previous line.
#endif // !defined(AFX_MAINFRM_H__826CB2EE_8B6D_11D1_AEC1_00600806E071__INCLUDED_)
# Microsoft Developer Studio Generated NMAKE File, Based on MySqlManager.dsp
!IF "$(CFG)" == ""
CFG=MySqlManager - Win32 Debug
!MESSAGE No configuration specified. Defaulting to MySqlManager - Win32 Debug.
!ENDIF
!IF "$(CFG)" != "MySqlManager - Win32 Release" && "$(CFG)" != "MySqlManager - Win32 Debug"
!MESSAGE Invalid configuration "$(CFG)" specified.
!MESSAGE You can specify a configuration when running NMAKE
!MESSAGE by defining the macro CFG on the command line. For example:
!MESSAGE
!MESSAGE NMAKE /f "MySqlManager.mak" CFG="MySqlManager - Win32 Debug"
!MESSAGE
!MESSAGE Possible choices for configuration are:
!MESSAGE
!MESSAGE "MySqlManager - Win32 Release" (based on "Win32 (x86) Application")
!MESSAGE "MySqlManager - Win32 Debug" (based on "Win32 (x86) Application")
!MESSAGE
!ERROR An invalid configuration is specified.
!ENDIF
!IF "$(OS)" == "Windows_NT"
NULL=
!ELSE
NULL=nul
!ENDIF
CPP=cl.exe
MTL=midl.exe
RSC=rc.exe
!IF "$(CFG)" == "MySqlManager - Win32 Release"
OUTDIR=.\release
INTDIR=.\release
# Begin Custom Macros
OutDir=.\release
# End Custom Macros
!IF "$(RECURSE)" == "0"
ALL : "..\client_release\MySqlManager.exe" "$(OUTDIR)\MySqlManager.pch"
!ELSE
ALL : "mysqlclient - Win32 Release" "..\client_release\MySqlManager.exe" "$(OUTDIR)\MySqlManager.pch"
!ENDIF
!IF "$(RECURSE)" == "1"
CLEAN :"mysqlclient - Win32 ReleaseCLEAN"
!ELSE
CLEAN :
!ENDIF
-@erase "$(INTDIR)\ChildFrm.obj"
-@erase "$(INTDIR)\MainFrm.obj"
-@erase "$(INTDIR)\MySqlManager.obj"
-@erase "$(INTDIR)\MySqlManager.pch"
-@erase "$(INTDIR)\MySqlManager.res"
-@erase "$(INTDIR)\MySqlManagerDoc.obj"
-@erase "$(INTDIR)\MySqlManagerView.obj"
-@erase "$(INTDIR)\RegisterServer.obj"
-@erase "$(INTDIR)\StdAfx.obj"
-@erase "$(INTDIR)\ToolSql.obj"
-@erase "$(INTDIR)\ToolSqlQuery.obj"
-@erase "$(INTDIR)\ToolSqlResults.obj"
-@erase "$(INTDIR)\ToolSqlStatus.obj"
-@erase "$(INTDIR)\vc60.idb"
-@erase "..\client_release\MySqlManager.exe"
"$(OUTDIR)" :
if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
CPP_PROJ=/nologo /G6 /MT /W3 /GX /O1 /I "../include" /D "NDEBUG" /D "DBUG_OFF" /D "_WINDOWS" /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /c
MTL_PROJ=/nologo /D "NDEBUG" /mktyplib203 /o "NUL" /win32
RSC_PROJ=/l 0x409 /fo"$(INTDIR)\MySqlManager.res" /d "NDEBUG" /d "_AFXDLL"
BSC32=bscmake.exe
BSC32_FLAGS=/nologo /o"$(OUTDIR)\MySqlManager.bsc"
BSC32_SBRS= \
LINK32=link.exe
LINK32_FLAGS=/nologo /subsystem:windows /incremental:no /pdb:"$(OUTDIR)\MySqlManager.pdb" /machine:I386 /out:"../client_release/MySqlManager.exe"
LINK32_OBJS= \
"$(INTDIR)\ChildFrm.obj" \
"$(INTDIR)\MainFrm.obj" \
"$(INTDIR)\MySqlManager.obj" \
"$(INTDIR)\MySqlManagerDoc.obj" \
"$(INTDIR)\MySqlManagerView.obj" \
"$(INTDIR)\RegisterServer.obj" \
"$(INTDIR)\StdAfx.obj" \
"$(INTDIR)\ToolSql.obj" \
"$(INTDIR)\ToolSqlQuery.obj" \
"$(INTDIR)\ToolSqlResults.obj" \
"$(INTDIR)\ToolSqlStatus.obj" \
"$(INTDIR)\MySqlManager.res" \
"..\lib_release\mysqlclient.lib"
"..\client_release\MySqlManager.exe" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS)
$(LINK32) @<<
$(LINK32_FLAGS) $(LINK32_OBJS)
<<
!ELSEIF "$(CFG)" == "MySqlManager - Win32 Debug"
OUTDIR=.\debug
INTDIR=.\debug
# Begin Custom Macros
OutDir=.\debug
# End Custom Macros
!IF "$(RECURSE)" == "0"
ALL : "..\client_debug\MySqlManager.exe" "$(OUTDIR)\MySqlManager.pch"
!ELSE
ALL : "mysqlclient - Win32 Debug" "..\client_debug\MySqlManager.exe" "$(OUTDIR)\MySqlManager.pch"
!ENDIF
!IF "$(RECURSE)" == "1"
CLEAN :"mysqlclient - Win32 DebugCLEAN"
!ELSE
CLEAN :
!ENDIF
-@erase "$(INTDIR)\ChildFrm.obj"
-@erase "$(INTDIR)\MainFrm.obj"
-@erase "$(INTDIR)\MySqlManager.obj"
-@erase "$(INTDIR)\MySqlManager.pch"
-@erase "$(INTDIR)\MySqlManager.res"
-@erase "$(INTDIR)\MySqlManagerDoc.obj"
-@erase "$(INTDIR)\MySqlManagerView.obj"
-@erase "$(INTDIR)\RegisterServer.obj"
-@erase "$(INTDIR)\StdAfx.obj"
-@erase "$(INTDIR)\ToolSql.obj"
-@erase "$(INTDIR)\ToolSqlQuery.obj"
-@erase "$(INTDIR)\ToolSqlResults.obj"
-@erase "$(INTDIR)\ToolSqlStatus.obj"
-@erase "$(INTDIR)\vc60.idb"
-@erase "$(INTDIR)\vc60.pdb"
-@erase "$(OUTDIR)\MySqlManager.pdb"
-@erase "..\client_debug\MySqlManager.exe"
"$(OUTDIR)" :
if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
CPP_PROJ=/nologo /G6 /MTd /W3 /Gm /GX /ZI /Od /I "../include" /D "_DEBUG" /D "_WINDOWS" /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /c
MTL_PROJ=/nologo /D "_DEBUG" /o "NUL" /win32
RSC_PROJ=/l 0x409 /fo"$(INTDIR)\MySqlManager.res" /d "_DEBUG"
BSC32=bscmake.exe
BSC32_FLAGS=/nologo /o"$(OUTDIR)\MySqlManager.bsc"
BSC32_SBRS= \
LINK32=link.exe
LINK32_FLAGS=wsock32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib uuid.lib /nologo /subsystem:windows /incremental:no /pdb:"$(OUTDIR)\MySqlManager.pdb" /debug /machine:I386 /out:"../client_debug/MySqlManager.exe" /pdbtype:sept /libpath:"..\lib_debug\\"
LINK32_OBJS= \
"$(INTDIR)\ChildFrm.obj" \
"$(INTDIR)\MainFrm.obj" \
"$(INTDIR)\MySqlManager.obj" \
"$(INTDIR)\MySqlManagerDoc.obj" \
"$(INTDIR)\MySqlManagerView.obj" \
"$(INTDIR)\RegisterServer.obj" \
"$(INTDIR)\StdAfx.obj" \
"$(INTDIR)\ToolSql.obj" \
"$(INTDIR)\ToolSqlQuery.obj" \
"$(INTDIR)\ToolSqlResults.obj" \
"$(INTDIR)\ToolSqlStatus.obj" \
"$(INTDIR)\MySqlManager.res" \
"..\lib_debug\mysqlclient.lib"
"..\client_debug\MySqlManager.exe" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS)
$(LINK32) @<<
$(LINK32_FLAGS) $(LINK32_OBJS)
<<
!ENDIF
.c{$(INTDIR)}.obj::
$(CPP) @<<
$(CPP_PROJ) $<
<<
.cpp{$(INTDIR)}.obj::
$(CPP) @<<
$(CPP_PROJ) $<
<<
.cxx{$(INTDIR)}.obj::
$(CPP) @<<
$(CPP_PROJ) $<
<<
.c{$(INTDIR)}.sbr::
$(CPP) @<<
$(CPP_PROJ) $<
<<
.cpp{$(INTDIR)}.sbr::
$(CPP) @<<
$(CPP_PROJ) $<
<<
.cxx{$(INTDIR)}.sbr::
$(CPP) @<<
$(CPP_PROJ) $<
<<
!IF "$(NO_EXTERNAL_DEPS)" != "1"
!IF EXISTS("MySqlManager.dep")
!INCLUDE "MySqlManager.dep"
!ELSE
!MESSAGE Warning: cannot find "MySqlManager.dep"
!ENDIF
!ENDIF
!IF "$(CFG)" == "MySqlManager - Win32 Release" || "$(CFG)" == "MySqlManager - Win32 Debug"
SOURCE=.\ChildFrm.cpp
"$(INTDIR)\ChildFrm.obj" : $(SOURCE) "$(INTDIR)"
SOURCE=.\MainFrm.cpp
"$(INTDIR)\MainFrm.obj" : $(SOURCE) "$(INTDIR)"
SOURCE=.\MySqlManager.cpp
"$(INTDIR)\MySqlManager.obj" : $(SOURCE) "$(INTDIR)"
SOURCE=.\MySqlManager.rc
"$(INTDIR)\MySqlManager.res" : $(SOURCE) "$(INTDIR)"
$(RSC) $(RSC_PROJ) $(SOURCE)
SOURCE=.\MySqlManagerDoc.cpp
"$(INTDIR)\MySqlManagerDoc.obj" : $(SOURCE) "$(INTDIR)"
SOURCE=.\MySqlManagerView.cpp
"$(INTDIR)\MySqlManagerView.obj" : $(SOURCE) "$(INTDIR)"
SOURCE=.\RegisterServer.cpp
"$(INTDIR)\RegisterServer.obj" : $(SOURCE) "$(INTDIR)"
SOURCE=.\StdAfx.cpp
!IF "$(CFG)" == "MySqlManager - Win32 Release"
CPP_SWITCHES=/nologo /G6 /MT /W3 /GX /O1 /I "../include" /D "NDEBUG" /D "DBUG_OFF" /D "_WINDOWS" /Fp"$(INTDIR)\MySqlManager.pch" /Yc"stdafx.h" /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /c
"$(INTDIR)\StdAfx.obj" "$(INTDIR)\MySqlManager.pch" : $(SOURCE) "$(INTDIR)"
$(CPP) @<<
$(CPP_SWITCHES) $(SOURCE)
<<
!ELSEIF "$(CFG)" == "MySqlManager - Win32 Debug"
CPP_SWITCHES=/nologo /G6 /MTd /W3 /Gm /GX /ZI /Od /I "../include" /D "_DEBUG" /D "_WINDOWS" /Fp"$(INTDIR)\MySqlManager.pch" /Yc"stdafx.h" /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /c
"$(INTDIR)\StdAfx.obj" "$(INTDIR)\MySqlManager.pch" : $(SOURCE) "$(INTDIR)"
$(CPP) @<<
$(CPP_SWITCHES) $(SOURCE)
<<
!ENDIF
SOURCE=.\ToolSql.cpp
"$(INTDIR)\ToolSql.obj" : $(SOURCE) "$(INTDIR)"
SOURCE=.\ToolSqlQuery.cpp
"$(INTDIR)\ToolSqlQuery.obj" : $(SOURCE) "$(INTDIR)"
SOURCE=.\ToolSqlResults.cpp
"$(INTDIR)\ToolSqlResults.obj" : $(SOURCE) "$(INTDIR)"
SOURCE=.\ToolSqlStatus.cpp
"$(INTDIR)\ToolSqlStatus.obj" : $(SOURCE) "$(INTDIR)"
!IF "$(CFG)" == "MySqlManager - Win32 Release"
"mysqlclient - Win32 Release" :
cd "\MYSQL-3.23\client"
$(MAKE) /$(MAKEFLAGS) /F ".\mysqlclient.mak" CFG="mysqlclient - Win32 Release"
cd "..\mysqlmanager"
"mysqlclient - Win32 ReleaseCLEAN" :
cd "\MYSQL-3.23\client"
$(MAKE) /$(MAKEFLAGS) /F ".\mysqlclient.mak" CFG="mysqlclient - Win32 Release" RECURSE=1 CLEAN
cd "..\mysqlmanager"
!ELSEIF "$(CFG)" == "MySqlManager - Win32 Debug"
"mysqlclient - Win32 Debug" :
cd "\MYSQL-3.23\client"
$(MAKE) /$(MAKEFLAGS) /F ".\mysqlclient.mak" CFG="mysqlclient - Win32 Debug"
cd "..\mysqlmanager"
"mysqlclient - Win32 DebugCLEAN" :
cd "\MYSQL-3.23\client"
$(MAKE) /$(MAKEFLAGS) /F ".\mysqlclient.mak" CFG="mysqlclient - Win32 Debug" RECURSE=1 CLEAN
cd "..\mysqlmanager"
!ENDIF
!ENDIF
========================================================================
MICROSOFT FOUNDATION CLASS LIBRARY : MySqlManager
========================================================================
AppWizard has created this MySqlManager application for you. This application
not only demonstrates the basics of using the Microsoft Foundation classes
but is also a starting point for writing your application.
This file contains a summary of what you will find in each of the files that
make up your MySqlManager application.
MySqlManager.h
This is the main header file for the application. It includes other
project specific headers (including Resource.h) and declares the
CMySqlManagerApp application class.
MySqlManager.cpp
This is the main application source file that contains the application
class CMySqlManagerApp.
MySqlManager.rc
This is a listing of all of the Microsoft Windows resources that the
program uses. It includes the icons, bitmaps, and cursors that are stored
in the RES subdirectory. This file can be directly edited in Microsoft
Developer Studio.
res\MySqlManager.ico
This is an icon file, which is used as the application's icon. This
icon is included by the main resource file MySqlManager.rc.
res\MySqlManager.rc2
This file contains resources that are not edited by Microsoft
Developer Studio. You should place all resources not
editable by the resource editor in this file.
MySqlManager.clw
This file contains information used by ClassWizard to edit existing
classes or add new classes. ClassWizard also uses this file to store
information needed to create and edit message maps and dialog data
maps and to create prototype member functions.
/////////////////////////////////////////////////////////////////////////////
For the main frame window:
MainFrm.h, MainFrm.cpp
These files contain the frame class CMainFrame, which is derived from
CMDIFrameWnd and controls all MDI frame features.
res\Toolbar.bmp
This bitmap file is used to create tiled images for the toolbar.
The initial toolbar and status bar are constructed in the
CMainFrame class. Edit this toolbar bitmap along with the
array in MainFrm.cpp to add more toolbar buttons.
/////////////////////////////////////////////////////////////////////////////
AppWizard creates one document type and one view:
MySqlManagerDoc.h, MySqlManagerDoc.cpp - the document
These files contain your CMySqlManagerDoc class. Edit these files to
add your special document data and to implement file saving and loading
(via CMySqlManagerDoc::Serialize).
MySqlManagerView.h, MySqlManagerView.cpp - the view of the document
These files contain your CMySqlManagerView class.
CMySqlManagerView objects are used to view CMySqlManagerDoc objects.
res\MySqlManagerDoc.ico
This is an icon file, which is used as the icon for MDI child windows
for the CMySqlManagerDoc class. This icon is included by the main
resource file MySqlManager.rc.
/////////////////////////////////////////////////////////////////////////////
Other standard files:
StdAfx.h, StdAfx.cpp
These files are used to build a precompiled header (PCH) file
named MySqlManager.pch and a precompiled types file named StdAfx.obj.
Resource.h
This is the standard header file, which defines new resource IDs.
Microsoft Developer Studio reads and updates this file.
/////////////////////////////////////////////////////////////////////////////
Other notes:
AppWizard uses "TODO:" to indicate parts of the source code you
should add to or customize.
If your application uses MFC in a shared DLL, and your application is
in a language other than the operating system's current language, you
will need to copy the corresponding localized resources MFC40XXX.DLL
from the Microsoft Visual C++ CD-ROM onto the system or system32 directory,
and rename it to be MFCLOC.DLL. ("XXX" stands for the language abbreviation.
For example, MFC40DEU.DLL contains resources translated to German.) If you
don't do this, some of the UI elements of your application will remain in the
language of the operating system.
/////////////////////////////////////////////////////////////////////////////
//
// MYSQLMANAGER.RC2 - resources Microsoft Visual C++ does not edit directly
//
#ifdef APSTUDIO_INVOKED
#error this file is not editable by Microsoft Visual C++
#endif //APSTUDIO_INVOKED
/////////////////////////////////////////////////////////////////////////////
// Add manually edited resources here...
/////////////////////////////////////////////////////////////////////////////
//{{NO_DEPENDENCIES}}
// Microsoft Developer Studio generated include file.
// Used by MySqlManager.rc
//
#define IDC_START_PB 3
#define IDC_STOP_PB 4
#define ID_SERVERS_PB 7
#define IDD_ABOUTBOX 100
#define IDM_QUERY_EXEC 101
#define IDM_QUERY_DATABASES 102
#define IDM_REFRESH 103
#define IDD_REGISTER_SERVER 114
#define IDR_MAINFRAME 128
#define IDR_MYSQLMTYPE 129
#define IDD_TOOL_SQL 132
#define IDB_BITMAP1 133
#define IDD_TOOL_SQL_QUERY 134
#define IDD_TOOL_SQL_RESULTS 135
#define IDD_TOOL_SQL_STATUS 136
#define IDC_TAB1 1000
#define IDC_EDIT 1001
#define IDC_QUERY_PB 1002
#define IDC_FONT_PB 1003
#define IDS_QUERY_EXEC 1003
#define ID_SERVER_CB 1003
#define ID_USER 1004
#define IDC_SERVER_CB 1004
#define IDC_DATABASES_PB 1005
#define ID_PASSWORD 1005
#define ID_HOST_CB 1006
#define IDC_TIMER_SECS 1006
#define ID_PORT_CB 1007
#define IDC_CLEAR 1007
#define ID_GROUPS_PB 1012
#define ID_REMOVE_PB 1017
#define ID_DISPLAY_SERVER_STATUS_CK 1057
#define ID_USE_STANDARD_CK 1058
#define ID_USE_TRUSTED_CK 1059
#define IDM_SQL_TOOL_QUERY 32771
#define IDM_TOOLS_REGISTER_SERVER 32772
#define IDM_TOOLS_SERVER_PROPERTIES 32773
#define IDS_QUERY_DATABASES 57346
#define IDS_REFRESH 57347
// Next default values for new objects
//
#ifdef APSTUDIO_INVOKED
#ifndef APSTUDIO_READONLY_SYMBOLS
#define _APS_3D_CONTROLS 1
#define _APS_NEXT_RESOURCE_VALUE 136
#define _APS_NEXT_COMMAND_VALUE 32775
#define _APS_NEXT_CONTROL_VALUE 1008
#define _APS_NEXT_SYMED_VALUE 104
#endif
#endif
// stdafx.cpp : source file that includes just the standard includes
// MySqlManager.pch will be the pre-compiled header
// stdafx.obj will contain the pre-compiled type information
#include "stdafx.h"
// stdafx.h : include file for standard system include files,
// or project specific include files that are used frequently, but
// are changed infrequently
//
#if !defined(AFX_STDAFX_H__826CB2EC_8B6D_11D1_AEC1_00600806E071__INCLUDED_)
#define AFX_STDAFX_H__826CB2EC_8B6D_11D1_AEC1_00600806E071__INCLUDED_
#if _MSC_VER >= 1000
#pragma once
#endif // _MSC_VER >= 1000
#define VC_EXTRALEAN // Exclude rarely-used stuff from Windows headers
#include <afxwin.h> // MFC core and standard components
#include <afxext.h> // MFC extensions
#include <afxdisp.h> // MFC OLE automation classes
#ifndef _AFX_NO_AFXCMN_SUPPORT
#include <afxcmn.h> // MFC support for Windows Common Controls
#endif // _AFX_NO_AFXCMN_SUPPORT
#include <afxsock.h>
#include "mysql.h"
//{{AFX_INSERT_LOCATION}}
// Microsoft Developer Studio will insert additional declarations immediately before the previous line.
#endif // !defined(AFX_STDAFX_H__826CB2EC_8B6D_11D1_AEC1_00600806E071__INCLUDED_)
This diff is collapsed.
#if !defined(AFX_ToolSql_H__826CB2FC_8B6D_11D1_AEC1_00600806E071__INCLUDED_)
#define AFX_ToolSql_H__826CB2FC_8B6D_11D1_AEC1_00600806E071__INCLUDED_
#if _MSC_VER >= 1000
#pragma once
#endif // _MSC_VER >= 1000
#include "ToolSqlQuery.h"
#include "ToolSqlResults.h"
#include "ToolSqlStatus.h"
#include "cresource.h"
#include <my_global.h>
#include "my_sys.h"
#include "mysql.h"
/////////////////////////////////////////////////////////////////////////////
// CToolSql dialog
class CToolSql : public CDialog
{
// Construction
public:
CToolSql(CWnd* pParent = NULL,CResource* pServer=NULL,CResource* pResource=NULL);
~CToolSql();
// Dialog Data
//{{AFX_DATA(CToolSql)
enum { IDD = IDD_TOOL_SQL };
CButton m_ctl_Stop;
CButton m_ctl_Start;
CComboBox m_ctl_Server;
CTabCtrl m_tabs;
int m_nIntervalTimerSeconds;
BOOL m_bClear;
//}}AFX_DATA
CBitmapButton m_btn_QueryExec;
CBitmapButton m_btn_Font;
CBitmapButton m_btn_QueryDatabases;
#ifdef _WIN64
__int64 m_ui_timer;
#else
UINT m_ui_timer;
#endif
// Overrides
// ClassWizard generated virtual function overrides
//{{AFX_VIRTUAL(CToolSql)
public:
virtual BOOL PreTranslateMessage(MSG* pMsg);
protected:
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support
//}}AFX_VIRTUAL
// Implementation
void ActivateTab ( int tab );
void DoProcessListQuery();
CToolSqlQuery* m_pQuery;
CToolSqlResults* m_pResults;
CToolSqlStatus* m_pStatus;
CResource* m_pServer;
CResource* m_pResource;
MYSQL* m_pdb;
CFont m_font;
LOGFONT m_lf;
CRect m_rectTab[2];
CRect m_rectDlg[2];
protected:
// Generated message map functions
//{{AFX_MSG(CToolSql)
virtual BOOL OnInitDialog();
afx_msg void OnQueryPb();
afx_msg void OnQueryDatabases();
afx_msg void OnSelchangeTab1(NMHDR* pNMHDR, LRESULT* pResult);
afx_msg void OnFontPb();
afx_msg void OnSize(UINT nType, int cx, int cy);
virtual void OnOK();
virtual void OnCancel();
afx_msg void OnStartPb();
afx_msg void OnStopPb();
afx_msg void OnTimer(UINT nIDEvent);
afx_msg void OnDestroy();
afx_msg void OnClear();
afx_msg void OnChangeTimerSecs();
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
void DoOnSize(UINT nType, int cx, int cy) ;
};
//{{AFX_INSERT_LOCATION}}
// Microsoft Developer Studio will insert additional declarations immediately before the previous line.
#endif // !defined(AFX_ToolSql_H__826CB2FC_8B6D_11D1_AEC1_00600806E071__INCLUDED_)
#ifndef _CRESOURCE_H
#define _CRESOURCE_H
/////////////////////////////////////////////////////////////////////////////
#define MYSQL_PORT_AS_STRING "3306" /* Can't use # in preprocessor because of bugs in VC++ 5.0 */
class CResource
{
public:
enum eRESOURCETYPE
{
eNone
, eServer
, eDatabase
, eTable
, eField
, eProcesslist
, eProcesslistItem
};
virtual LPCTSTR GetDisplayName() { return ""; }
virtual LPCTSTR GetHostName() { return LOCAL_HOST; }
virtual LPCTSTR GetUserName() { return "root"; }
virtual LPCTSTR GetPassword() { return ""; }
virtual LPCTSTR GetPortName() { return MYSQL_PORT_AS_STRING; }
virtual int GetPortNumber() { return MYSQL_PORT; }
virtual eRESOURCETYPE GetType() { return eNone; }
};
/////////////////////////////////////////////////////////////////////////////
class CResourceServer : public CResource
{
public:
CResourceServer(LPCTSTR pszName = "",LPCTSTR pszHost = LOCAL_HOST ,LPCTSTR pszUser = "root", LPCTSTR pszPassword = "", LPCTSTR pszPort = MYSQL_PORT_AS_STRING)
: m_strName(pszName)
, m_strHost(pszHost)
, m_strUser(pszUser)
, m_strPassword(pszPassword)
, m_strPort(pszPort)
{
}
virtual LPCTSTR GetDisplayName() { return m_strName; }
virtual LPCTSTR GetHostName() { return m_strHost; }
virtual LPCTSTR GetUserName() { return m_strUser; }
virtual LPCTSTR GetPassword() { return m_strPassword; }
virtual eRESOURCETYPE GetType() { return eServer; }
virtual LPCTSTR GetPortName() { return m_strPort; }
virtual int GetPortNumber() { return atoi(m_strPort); }
CString m_strName;
CString m_strHost;
CString m_strUser;
CString m_strPassword;
CString m_strPort;
CStringArray m_rgFields;
};
/////////////////////////////////////////////////////////////////////////////
class CResourceDatabase : public CResource
{
public:
CResourceDatabase(LPCTSTR pszName = "")
: m_strName(pszName)
{
}
virtual LPCTSTR GetDisplayName() { return m_strName; }
virtual eRESOURCETYPE GetType() { return eDatabase; }
CString m_strName;
CStringArray m_rgFields;
};
/////////////////////////////////////////////////////////////////////////////
class CResourceTable : public CResource
{
public:
CResourceTable(LPCTSTR pszName = "")
: m_strName(pszName)
{
}
virtual LPCTSTR GetDisplayName() { return m_strName; }
virtual eRESOURCETYPE GetType() { return eTable; }
CString m_strName;
CStringArray m_rgFields;
};
/////////////////////////////////////////////////////////////////////////////
class CResourceField : public CResource
{
public:
CResourceField(LPCTSTR pszName = "")
: m_strName(pszName)
{
}
virtual LPCTSTR GetDisplayName() { return m_strName; }
virtual eRESOURCETYPE GetType() { return eField; }
CString m_strName;
CStringArray m_rgFields;
};
/////////////////////////////////////////////////////////////////////////////
class CResourceProcesslist : public CResource
{
public:
CResourceProcesslist(LPCTSTR pszName = "Processlist")
: m_strName(pszName)
{
}
virtual LPCTSTR GetDisplayName() { return m_strName; }
virtual eRESOURCETYPE GetType() { return eProcesslist; }
CString m_strName;
CStringArray m_rgFields;
};
/////////////////////////////////////////////////////////////////////////////
class CResourceProcesslistItem : public CResourceProcesslist
{
public:
CResourceProcesslistItem(LPCTSTR pszName = "ProcesslistItem")
: CResourceProcesslist(pszName)
{
}
virtual eRESOURCETYPE GetType() { return eProcesslistItem; }
};
#endif
// MySqlManager.cpp : Defines the class behaviors for the application.
//
#include "stdafx.h"
#include "MySqlManager.h"
#include "MainFrm.h"
#include "ChildFrm.h"
#include "MySqlManagerDoc.h"
#include "MySqlManagerView.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CMySqlManagerApp
BEGIN_MESSAGE_MAP(CMySqlManagerApp, CWinApp)
//{{AFX_MSG_MAP(CMySqlManagerApp)
ON_COMMAND(ID_APP_ABOUT, OnAppAbout)
// NOTE - the ClassWizard will add and remove mapping macros here.
// DO NOT EDIT what you see in these blocks of generated code!
//}}AFX_MSG_MAP
// Standard file based document commands
ON_COMMAND(ID_FILE_NEW, CWinApp::OnFileNew)
ON_COMMAND(ID_FILE_OPEN, CWinApp::OnFileOpen)
// Standard print setup command
ON_COMMAND(ID_FILE_PRINT_SETUP, CWinApp::OnFilePrintSetup)
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CMySqlManagerApp construction
CMySqlManagerApp::CMySqlManagerApp()
{
// TODO: add construction code here,
// Place all significant initialization in InitInstance
}
/////////////////////////////////////////////////////////////////////////////
// The one and only CMySqlManagerApp object
CMySqlManagerApp theApp;
/////////////////////////////////////////////////////////////////////////////
// CMySqlManagerApp initialization
BOOL CMySqlManagerApp::InitInstance()
{
WSADATA WsaData;
if (SOCKET_ERROR == WSAStartup (0x0101, &WsaData))
{
AfxMessageBox("WSAStartup Failed\n");
return FALSE;
}
AfxEnableControlContainer();
// Standard initialization
// If you are not using these features and wish to reduce the size
// of your final executable, you should remove from the following
// the specific initialization routines you do not need.
#ifdef _AFXDLL
Enable3dControls(); // Call this when using MFC in a shared DLL
#else
Enable3dControlsStatic(); // Call this when linking to MFC statically
#endif
// Change the registry key under which our settings are stored.
// You should modify this string to be something appropriate
// such as the name of your company or organization.
SetRegistryKey(_T("Local AppWizard-Generated Applications"));
LoadStdProfileSettings(); // Load standard INI file options (including MRU)
// Register the application's document templates. Document templates
// serve as the connection between documents, frame windows and views.
CMultiDocTemplate* pDocTemplate;
pDocTemplate = new CMultiDocTemplate(
IDR_MYSQLMTYPE,
RUNTIME_CLASS(CMySqlManagerDoc),
RUNTIME_CLASS(CChildFrame), // custom MDI child frame
RUNTIME_CLASS(CMySqlManagerView));
AddDocTemplate(pDocTemplate);
// create main MDI Frame window
CMainFrame* pMainFrame = new CMainFrame;
if (!pMainFrame->LoadFrame(IDR_MAINFRAME))
return FALSE;
m_pMainWnd = pMainFrame;
// Parse command line for standard shell commands, DDE, file open
CCommandLineInfo cmdInfo;
ParseCommandLine(cmdInfo);
// Dispatch commands specified on the command line
if (!ProcessShellCommand(cmdInfo))
return FALSE;
// The main window has been initialized, so show and update it.
pMainFrame->ShowWindow(m_nCmdShow);
pMainFrame->UpdateWindow();
return TRUE;
}
/////////////////////////////////////////////////////////////////////////////
// CAboutDlg dialog used for App About
class CAboutDlg : public CDialog
{
public:
CAboutDlg();
// Dialog Data
//{{AFX_DATA(CAboutDlg)
enum {IDD = IDD_ABOUTBOX};
//}}AFX_DATA
// ClassWizard generated virtual function overrides
//{{AFX_VIRTUAL(CAboutDlg)
protected:
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support
//}}AFX_VIRTUAL
// Implementation
protected:
//{{AFX_MSG(CAboutDlg)
// No message handlers
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
};
CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD)
{
//{{AFX_DATA_INIT(CAboutDlg)
//}}AFX_DATA_INIT
}
void CAboutDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CAboutDlg)
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CAboutDlg, CDialog)
//{{AFX_MSG_MAP(CAboutDlg)
// No message handlers
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
// App command to run the dialog
void CMySqlManagerApp::OnAppAbout()
{
CAboutDlg aboutDlg;
aboutDlg.DoModal();
}
/////////////////////////////////////////////////////////////////////////////
// CMySqlManagerApp commands
// MySqlManager.h : main header file for the MYSQLMANAGER application
//
#if !defined(AFX_MYSQLMANAGER_H__826CB2EA_8B6D_11D1_AEC1_00600806E071__INCLUDED_)
#define AFX_MYSQLMANAGER_H__826CB2EA_8B6D_11D1_AEC1_00600806E071__INCLUDED_
#if _MSC_VER >= 1000
#pragma once
#endif // _MSC_VER >= 1000
#ifndef __AFXWIN_H__
#error include 'stdafx.h' before including this file for PCH
#endif
#include "resource.h" // main symbols
/////////////////////////////////////////////////////////////////////////////
// CMySqlManagerApp:
// See MySqlManager.cpp for the implementation of this class
//
class CMySqlManagerApp : public CWinApp
{
public:
CMySqlManagerApp();
// Overrides
// ClassWizard generated virtual function overrides
//{{AFX_VIRTUAL(CMySqlManagerApp)
public:
virtual BOOL InitInstance();
//}}AFX_VIRTUAL
// Implementation
//{{AFX_MSG(CMySqlManagerApp)
afx_msg void OnAppAbout();
// NOTE - the ClassWizard will add and remove member functions here.
// DO NOT EDIT what you see in these blocks of generated code !
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
};
/////////////////////////////////////////////////////////////////////////////
//{{AFX_INSERT_LOCATION}}
// Microsoft Developer Studio will insert additional declarations immediately before the previous line.
#endif // !defined(AFX_MYSQLMANAGER_H__826CB2EA_8B6D_11D1_AEC1_00600806E071__INCLUDED_)
This diff is collapsed.
// MySqlManagerDoc.cpp : implementation of the CMySqlManagerDoc class
//
#include "stdafx.h"
#include "MySqlManager.h"
#include "MySqlManagerDoc.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CMySqlManagerDoc
IMPLEMENT_DYNCREATE(CMySqlManagerDoc, CDocument)
BEGIN_MESSAGE_MAP(CMySqlManagerDoc, CDocument)
//{{AFX_MSG_MAP(CMySqlManagerDoc)
// NOTE - the ClassWizard will add and remove mapping macros here.
// DO NOT EDIT what you see in these blocks of generated code!
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CMySqlManagerDoc construction/destruction
CMySqlManagerDoc::CMySqlManagerDoc()
{
// TODO: add one-time construction code here
}
CMySqlManagerDoc::~CMySqlManagerDoc()
{
}
BOOL CMySqlManagerDoc::OnNewDocument()
{
if (!CDocument::OnNewDocument())
return FALSE;
// TODO: add reinitialization code here
// (SDI documents will reuse this document)
return TRUE;
}
/////////////////////////////////////////////////////////////////////////////
// CMySqlManagerDoc serialization
void CMySqlManagerDoc::Serialize(CArchive& ar)
{
if (ar.IsStoring())
{
// TODO: add storing code here
}
else
{
// TODO: add loading code here
}
}
/////////////////////////////////////////////////////////////////////////////
// CMySqlManagerDoc diagnostics
#ifdef _DEBUG
void CMySqlManagerDoc::AssertValid() const
{
CDocument::AssertValid();
}
void CMySqlManagerDoc::Dump(CDumpContext& dc) const
{
CDocument::Dump(dc);
}
#endif //_DEBUG
/////////////////////////////////////////////////////////////////////////////
// CMySqlManagerDoc commands
// MySqlManagerDoc.h : interface of the CMySqlManagerDoc class
//
/////////////////////////////////////////////////////////////////////////////
#if !defined(AFX_MYSQLMANAGERDOC_H__826CB2F2_8B6D_11D1_AEC1_00600806E071__INCLUDED_)
#define AFX_MYSQLMANAGERDOC_H__826CB2F2_8B6D_11D1_AEC1_00600806E071__INCLUDED_
#if _MSC_VER >= 1000
#pragma once
#endif // _MSC_VER >= 1000
class CMySqlManagerDoc : public CDocument
{
protected: // create from serialization only
CMySqlManagerDoc();
DECLARE_DYNCREATE(CMySqlManagerDoc)
// Attributes
public:
// Operations
public:
// Overrides
// ClassWizard generated virtual function overrides
//{{AFX_VIRTUAL(CMySqlManagerDoc)
public:
virtual BOOL OnNewDocument();
virtual void Serialize(CArchive& ar);
//}}AFX_VIRTUAL
// Implementation
public:
virtual ~CMySqlManagerDoc();
#ifdef _DEBUG
virtual void AssertValid() const;
virtual void Dump(CDumpContext& dc) const;
#endif
protected:
// Generated message map functions
protected:
//{{AFX_MSG(CMySqlManagerDoc)
// NOTE - the ClassWizard will add and remove member functions here.
// DO NOT EDIT what you see in these blocks of generated code !
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
};
/////////////////////////////////////////////////////////////////////////////
//{{AFX_INSERT_LOCATION}}
// Microsoft Developer Studio will insert additional declarations immediately before the previous line.
#endif // !defined(AFX_MYSQLMANAGERDOC_H__826CB2F2_8B6D_11D1_AEC1_00600806E071__INCLUDED_)
This diff is collapsed.
// MySqlManagerView.h : interface of the CMySqlManagerView class
//
/////////////////////////////////////////////////////////////////////////////
#if !defined(AFX_MYSQLMANAGERVIEW_H__826CB2F4_8B6D_11D1_AEC1_00600806E071__INCLUDED_)
#define AFX_MYSQLMANAGERVIEW_H__826CB2F4_8B6D_11D1_AEC1_00600806E071__INCLUDED_
#if _MSC_VER >= 1000
#pragma once
#endif // _MSC_VER >= 1000
#include <afxcview.h>
#include "cresource.h"
class CToolSql;
class CMySqlManagerView : public CTreeView
{
protected: // create from serialization only
CMySqlManagerView();
DECLARE_DYNCREATE(CMySqlManagerView)
// Attributes
public:
CMySqlManagerDoc* GetDocument();
// Operations
public:
// Overrides
// ClassWizard generated virtual function overrides
//{{AFX_VIRTUAL(CMySqlManagerView)
public:
virtual void OnDraw(CDC* pDC); // overridden to draw this view
virtual BOOL PreCreateWindow(CREATESTRUCT& cs);
virtual void OnInitialUpdate();
virtual BOOL PreTranslateMessage(MSG* pMsg);
protected:
virtual BOOL OnPreparePrinting(CPrintInfo* pInfo);
virtual void OnBeginPrinting(CDC* pDC, CPrintInfo* pInfo);
virtual void OnEndPrinting(CDC* pDC, CPrintInfo* pInfo);
//}}AFX_VIRTUAL
// Implementation
CResource* GetSelectedResource(HTREEITEM* phItemRet=NULL);
CResourceServer* GetServerResource(HTREEITEM hItem);
HTREEITEM AddResource ( HTREEITEM hParent, CResource* pRes, HTREEITEM hLastItem = TVI_FIRST ) ;
void ProcessResultSet ( HTREEITEM hItem, LPVOID result, CResource* pResource );
public:
virtual ~CMySqlManagerView();
#ifdef _DEBUG
virtual void AssertValid() const;
virtual void Dump(CDumpContext& dc) const;
#endif
protected:
CTreeCtrl* m_pTree;
CImageList* m_pImages;
CBitmap* m_pbmBmp;
CToolSql* m_pTool;
// Generated message map functions
protected:
//{{AFX_MSG(CMySqlManagerView)
afx_msg void OnDblclk(NMHDR* pNMHDR, LRESULT* pResult);
afx_msg void OnSqlToolQuery();
afx_msg void OnRefresh();
afx_msg void OnRegisterServer();
afx_msg void OnServerProperties();
afx_msg void OnRclick(NMHDR* pNMHDR, LRESULT* pResult);
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
};
#ifndef _DEBUG // debug version in MySqlManagerView.cpp
inline CMySqlManagerDoc* CMySqlManagerView::GetDocument()
{ return (CMySqlManagerDoc*)m_pDocument; }
#endif
/////////////////////////////////////////////////////////////////////////////
//{{AFX_INSERT_LOCATION}}
// Microsoft Developer Studio will insert additional declarations immediately before the previous line.
#endif // !defined(AFX_MYSQLMANAGERVIEW_H__826CB2F4_8B6D_11D1_AEC1_00600806E071__INCLUDED_)
// RegisterServer.cpp : implementation file
//
#include "stdafx.h"
#include "mysqlmanager.h"
#include "RegisterServer.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CRegisterServer dialog
CRegisterServer::CRegisterServer(CWnd* pParent /*=NULL*/)
: CDialog(CRegisterServer::IDD, pParent)
, m_strServer("servername")
, m_strHost("localhost")
, m_strUser("root")
, m_strPassword("")
{
//{{AFX_DATA_INIT(CRegisterServer)
m_strPort = _T("3306");
//}}AFX_DATA_INIT
}
void CRegisterServer::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CRegisterServer)
DDX_CBString(pDX, ID_SERVER_CB, m_strServer);
DDX_CBString(pDX, ID_HOST_CB, m_strHost);
DDX_Text(pDX, ID_USER, m_strUser);
DDX_Text(pDX, ID_PASSWORD, m_strPassword);
DDX_CBString(pDX, ID_PORT_CB, m_strPort);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CRegisterServer, CDialog)
//{{AFX_MSG_MAP(CRegisterServer)
// NOTE: the ClassWizard will add message map macros here
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CRegisterServer message handlers
#if !defined(AFX_REGISTERSERVER_H__826CB2FF_8B6D_11D1_AEC1_00600806E071__INCLUDED_)
#define AFX_REGISTERSERVER_H__826CB2FF_8B6D_11D1_AEC1_00600806E071__INCLUDED_
#if _MSC_VER >= 1000
#pragma once
#endif // _MSC_VER >= 1000
// RegisterServer.h : header file
//
/////////////////////////////////////////////////////////////////////////////
// CRegisterServer dialog
class CRegisterServer : public CDialog
{
// Construction
public:
CRegisterServer(CWnd* pParent = NULL); // standard constructor
// Dialog Data
//{{AFX_DATA(CRegisterServer)
enum { IDD = IDD_REGISTER_SERVER };
CString m_strServer;
CString m_strHost;
CString m_strUser;
CString m_strPassword;
CString m_strPort;
//}}AFX_DATA
// Overrides
// ClassWizard generated virtual function overrides
//{{AFX_VIRTUAL(CRegisterServer)
protected:
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support
//}}AFX_VIRTUAL
// Implementation
protected:
// Generated message map functions
//{{AFX_MSG(CRegisterServer)
// NOTE: the ClassWizard will add member functions here
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
};
//{{AFX_INSERT_LOCATION}}
// Microsoft Developer Studio will insert additional declarations immediately before the previous line.
#endif // !defined(AFX_REGISTERSERVER_H__826CB2FF_8B6D_11D1_AEC1_00600806E071__INCLUDED_)
// ToolSqlQuery.cpp : implementation file
//
#include "stdafx.h"
#include "MySqlManager.h"
#include "ToolSqlQuery.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
CToolSqlQuery::CToolSqlQuery(CWnd* pParent /*=NULL*/)
: CDialog(CToolSqlQuery::IDD, pParent)
{
//{{AFX_DATA_INIT(CToolSqlQuery)
m_edit = _T("");
//}}AFX_DATA_INIT
}
/////////////////////////////////////////////////////////////////////////////
void CToolSqlQuery::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CToolSqlQuery)
DDX_Control(pDX, IDC_EDIT, m_ctl_edit);
DDX_Text(pDX, IDC_EDIT, m_edit);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CToolSqlQuery, CDialog)
//{{AFX_MSG_MAP(CToolSqlQuery)
ON_WM_SIZE()
ON_WM_CLOSE()
ON_COMMAND(IDM_QUERY_EXEC, OnQueryPb)
ON_COMMAND(IDM_QUERY_DATABASES, OnQueryDatabases)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
void CToolSqlQuery::SetFont(CFont* pFont, BOOL bRedraw)
{
m_ctl_edit.SetFont(pFont,bRedraw);
m_ctl_edit.Invalidate();
m_ctl_edit.UpdateWindow();
}
/////////////////////////////////////////////////////////////////////////////
void CToolSqlQuery::OnSize(UINT nType, int cx, int cy)
{
CDialog::OnSize(nType, cx, cy);
if (IsWindow(m_ctl_edit.GetSafeHwnd()))
m_ctl_edit.SetWindowPos(NULL,20,24,cx-40,cy-48,SWP_NOZORDER | SWP_NOMOVE);
}
/////////////////////////////////////////////////////////////////////////////
void CToolSqlQuery::OnCancel()
{
}
/////////////////////////////////////////////////////////////////////////////
void CToolSqlQuery::OnClose()
{
}
/////////////////////////////////////////////////////////////////////////////
void CToolSqlQuery::OnQueryPb()
{
GetParent()->GetParent()->PostMessage(WM_COMMAND,IDM_QUERY_EXEC);
}
/////////////////////////////////////////////////////////////////////////////
void CToolSqlQuery::OnQueryDatabases()
{
GetParent()->GetParent()->PostMessage(WM_COMMAND,IDM_QUERY_DATABASES);
}
/////////////////////////////////////////////////////////////////////////////
BOOL CToolSqlQuery::PreTranslateMessage(MSG* pMsg)
{
if (pMsg->message >= WM_KEYFIRST && pMsg->message <= WM_KEYLAST)
{
if (::TranslateAccelerator(m_hWnd, m_hAccel, pMsg))
return TRUE;
}
return CDialog::PreTranslateMessage(pMsg);
}
/////////////////////////////////////////////////////////////////////////////
BOOL CToolSqlQuery::OnInitDialog()
{
CDialog::OnInitDialog();
m_hAccel = ::LoadAccelerators(AfxGetInstanceHandle(), MAKEINTRESOURCE ( IDR_MAINFRAME ));
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
#if !defined(AFX_TOOLSQLQUERY_H__826CB2FD_8B6D_11D1_AEC1_00600806E071__INCLUDED_)
#define AFX_TOOLSQLQUERY_H__826CB2FD_8B6D_11D1_AEC1_00600806E071__INCLUDED_
#if _MSC_VER >= 1000
#pragma once
#endif // _MSC_VER >= 1000
// ToolSqlQuery.h : header file
//
/////////////////////////////////////////////////////////////////////////////
// CToolSqlQuery dialog
class CToolSqlQuery : public CDialog
{
// Construction
public:
CToolSqlQuery(CWnd* pParent = NULL); // standard constructor
// Dialog Data
//{{AFX_DATA(CToolSqlQuery)
enum { IDD = IDD_TOOL_SQL_QUERY };
CEdit m_ctl_edit;
CString m_edit;
//}}AFX_DATA
HACCEL m_hAccel;
void SetFont(CFont* pFont, BOOL bRedraw = TRUE);
// Overrides
// ClassWizard generated virtual function overrides
//{{AFX_VIRTUAL(CToolSqlQuery)
public:
virtual BOOL PreTranslateMessage(MSG* pMsg);
protected:
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support
//}}AFX_VIRTUAL
// Implementation
protected:
// Generated message map functions
//{{AFX_MSG(CToolSqlQuery)
afx_msg void OnSize(UINT nType, int cx, int cy);
afx_msg void OnCancel();
afx_msg void OnClose();
virtual BOOL OnInitDialog();
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
afx_msg void OnQueryPb();
afx_msg void OnQueryDatabases();
};
//{{AFX_INSERT_LOCATION}}
// Microsoft Developer Studio will insert additional declarations immediately before the previous line.
#endif // !defined(AFX_TOOLSQLQUERY_H__826CB2FD_8B6D_11D1_AEC1_00600806E071__INCLUDED_)
// ToolSqlResults.cpp : implementation file
//
#include "stdafx.h"
#include "MySqlManager.h"
#include "ToolSqlResults.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
CToolSqlResults::CToolSqlResults(CWnd* pParent /*=NULL*/)
: CDialog(CToolSqlResults::IDD, pParent)
{
//{{AFX_DATA_INIT(CToolSqlResults)
m_edit = _T("");
//}}AFX_DATA_INIT
}
/////////////////////////////////////////////////////////////////////////////
void CToolSqlResults::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CToolSqlResults)
DDX_Control(pDX, IDC_EDIT, m_ctl_edit);
DDX_Text(pDX, IDC_EDIT, m_edit);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CToolSqlResults, CDialog)
//{{AFX_MSG_MAP(CToolSqlResults)
ON_WM_SIZE()
ON_WM_CLOSE()
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
void CToolSqlResults::SetFont(CFont* pFont, BOOL bRedraw)
{
m_ctl_edit.SetFont(pFont,bRedraw);
m_ctl_edit.Invalidate();
m_ctl_edit.UpdateWindow();
}
/////////////////////////////////////////////////////////////////////////////
void CToolSqlResults::OnSize(UINT nType, int cx, int cy)
{
CDialog::OnSize(nType, cx, cy);
if (IsWindow(m_ctl_edit.GetSafeHwnd()))
m_ctl_edit.SetWindowPos(NULL,20,24,cx-40,cy-48,SWP_NOZORDER | SWP_NOMOVE);
}
/////////////////////////////////////////////////////////////////////////////
void CToolSqlResults::OnCancel()
{
}
/////////////////////////////////////////////////////////////////////////////
void CToolSqlResults::OnClose()
{
}
#if !defined(AFX_TOOLSQLRESULTS_H__826CB2FE_8B6D_11D1_AEC1_00600806E071__INCLUDED_)
#define AFX_TOOLSQLRESULTS_H__826CB2FE_8B6D_11D1_AEC1_00600806E071__INCLUDED_
#if _MSC_VER >= 1000
#pragma once
#endif // _MSC_VER >= 1000
// ToolSqlResults.h : header file
//
/////////////////////////////////////////////////////////////////////////////
// CToolSqlResults dialog
class CToolSqlResults : public CDialog
{
// Construction
public:
CToolSqlResults(CWnd* pParent = NULL); // standard constructor
// Dialog Data
//{{AFX_DATA(CToolSqlResults)
enum { IDD = IDD_TOOL_SQL_RESULTS };
CEdit m_ctl_edit;
CString m_edit;
//}}AFX_DATA
void SetFont(CFont* pFont, BOOL bRedraw = TRUE);
// Overrides
// ClassWizard generated virtual function overrides
//{{AFX_VIRTUAL(CToolSqlResults)
protected:
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support
//}}AFX_VIRTUAL
// Implementation
protected:
// Generated message map functions
//{{AFX_MSG(CToolSqlResults)
afx_msg void OnSize(UINT nType, int cx, int cy);
afx_msg void OnCancel();
afx_msg void OnClose();
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
};
//{{AFX_INSERT_LOCATION}}
// Microsoft Developer Studio will insert additional declarations immediately before the previous line.
#endif // !defined(AFX_TOOLSQLRESULTS_H__826CB2FE_8B6D_11D1_AEC1_00600806E071__INCLUDED_)
// ToolSqlStatus.cpp : implementation file
//
#include "stdafx.h"
#include "mysqlmanager.h"
#include "ToolSqlStatus.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CToolSqlStatus dialog
CToolSqlStatus::CToolSqlStatus(CWnd* pParent /*=NULL*/)
: CDialog(CToolSqlStatus::IDD, pParent)
{
//{{AFX_DATA_INIT(CToolSqlStatus)
m_edit = _T("");
//}}AFX_DATA_INIT
}
void CToolSqlStatus::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CToolSqlStatus)
DDX_Control(pDX, IDC_EDIT, m_ctl_edit);
DDX_Text(pDX, IDC_EDIT, m_edit);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CToolSqlStatus, CDialog)
//{{AFX_MSG_MAP(CToolSqlStatus)
ON_WM_DESTROY()
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CToolSqlStatus message handlers
void CToolSqlStatus::OnDestroy()
{
CDialog::OnDestroy();
}
#if !defined(AFX_TOOLSQLSTATUS_H__40C861B4_9E5A_11D1_AED0_00600806E071__INCLUDED_)
#define AFX_TOOLSQLSTATUS_H__40C861B4_9E5A_11D1_AED0_00600806E071__INCLUDED_
#if _MSC_VER >= 1000
#pragma once
#endif // _MSC_VER >= 1000
// ToolSqlStatus.h : header file
//
/////////////////////////////////////////////////////////////////////////////
// CToolSqlStatus dialog
class CToolSqlStatus : public CDialog
{
// Construction
public:
CToolSqlStatus(CWnd* pParent = NULL); // standard constructor
// Dialog Data
//{{AFX_DATA(CToolSqlStatus)
enum { IDD = IDD_TOOL_SQL_STATUS };
CEdit m_ctl_edit;
CString m_edit;
//}}AFX_DATA
// Overrides
// ClassWizard generated virtual function overrides
//{{AFX_VIRTUAL(CToolSqlStatus)
protected:
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support
//}}AFX_VIRTUAL
// Implementation
protected:
// Generated message map functions
//{{AFX_MSG(CToolSqlStatus)
afx_msg void OnDestroy();
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
};
//{{AFX_INSERT_LOCATION}}
// Microsoft Developer Studio will insert additional declarations immediately before the previous line.
#endif // !defined(AFX_TOOLSQLSTATUS_H__40C861B4_9E5A_11D1_AED0_00600806E071__INCLUDED_)
MySql ICON DISCARDABLE "MYSQL.ICO"
...@@ -26,7 +26,7 @@ CFG=mysys - Win32 Debug ...@@ -26,7 +26,7 @@ CFG=mysys - Win32 Debug
# PROP AllowPerConfigDependencies 0 # PROP AllowPerConfigDependencies 0
# PROP Scc_ProjName "" # PROP Scc_ProjName ""
# PROP Scc_LocalPath "" # PROP Scc_LocalPath ""
CPP=xicl6.exe CPP=cl.exe
RSC=rc.exe RSC=rc.exe
!IF "$(CFG)" == "mysys - Win32 Release" !IF "$(CFG)" == "mysys - Win32 Release"
...@@ -42,14 +42,14 @@ RSC=rc.exe ...@@ -42,14 +42,14 @@ RSC=rc.exe
# PROP Intermediate_Dir "release" # PROP Intermediate_Dir "release"
# PROP Target_Dir "" # PROP Target_Dir ""
# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /FD /c # ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /FD /c
# ADD CPP /nologo /G6 /MT /W3 /O2 /I "../include" /D "NDEBUG" /D "DBUG_OFF" /D "_WINDOWS" /FD /c # ADD CPP /nologo /G6 /MT /W3 /O2 /I "../include" /I "../zlib" /D "NDEBUG" /D "DBUG_OFF" /D "_WINDOWS" /FD /c
# SUBTRACT CPP /YX # SUBTRACT CPP /YX
# ADD BASE RSC /l 0x409 # ADD BASE RSC /l 0x409
# ADD RSC /l 0x409 # ADD RSC /l 0x409
BSC32=bscmake.exe BSC32=bscmake.exe
# ADD BASE BSC32 /nologo # ADD BASE BSC32 /nologo
# ADD BSC32 /nologo # ADD BSC32 /nologo
LIB32=xilink6.exe -lib LIB32=link.exe -lib
# ADD BASE LIB32 /nologo # ADD BASE LIB32 /nologo
# ADD LIB32 /nologo /out:"..\lib_release\mysys.lib" # ADD LIB32 /nologo /out:"..\lib_release\mysys.lib"
...@@ -66,14 +66,14 @@ LIB32=xilink6.exe -lib ...@@ -66,14 +66,14 @@ LIB32=xilink6.exe -lib
# PROP Intermediate_Dir "debug" # PROP Intermediate_Dir "debug"
# PROP Target_Dir "" # PROP Target_Dir ""
# ADD BASE CPP /nologo /W3 /GX /Z7 /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /FD /c # ADD BASE CPP /nologo /W3 /GX /Z7 /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /FD /c
# ADD CPP /nologo /G6 /MTd /W3 /ZI /Od /I "../include" /D "_DEBUG" /D "SAFEMALLOC" /D "SAFE_MUTEX" /D "_WINDOWS" /D "USE_SYMDIR" /FD /c # ADD CPP /nologo /G6 /MTd /W3 /ZI /Od /I "../include" /I "../zlib" /D "_DEBUG" /D "SAFEMALLOC" /D "SAFE_MUTEX" /D "_WINDOWS" /D "USE_SYMDIR" /FD /c
# SUBTRACT CPP /Fr # SUBTRACT CPP /Fr
# ADD BASE RSC /l 0x409 # ADD BASE RSC /l 0x409
# ADD RSC /l 0x409 # ADD RSC /l 0x409
BSC32=bscmake.exe BSC32=bscmake.exe
# ADD BASE BSC32 /nologo # ADD BASE BSC32 /nologo
# ADD BSC32 /nologo # ADD BSC32 /nologo
LIB32=xilink6.exe -lib LIB32=link.exe -lib
# ADD BASE LIB32 /nologo # ADD BASE LIB32 /nologo
# ADD LIB32 /nologo /out:"..\lib_debug\mysys.lib" # ADD LIB32 /nologo /out:"..\lib_debug\mysys.lib"
...@@ -86,8 +86,8 @@ LIB32=xilink6.exe -lib ...@@ -86,8 +86,8 @@ LIB32=xilink6.exe -lib
# PROP BASE Target_Dir "" # PROP BASE Target_Dir ""
# PROP Use_MFC 0 # PROP Use_MFC 0
# PROP Use_Debug_Libraries 0 # PROP Use_Debug_Libraries 0
# PROP Output_Dir "max" # PROP Output_Dir "mysys___Win32_Max"
# PROP Intermediate_Dir "max" # PROP Intermediate_Dir "mysys___Win32_Max"
# PROP Target_Dir "" # PROP Target_Dir ""
# ADD BASE CPP /nologo /G6 /MT /W3 /O2 /I "../include" /D "NDEBUG" /D "DBUG_OFF" /D "_WINDOWS" /FD /c # ADD BASE CPP /nologo /G6 /MT /W3 /O2 /I "../include" /D "NDEBUG" /D "DBUG_OFF" /D "_WINDOWS" /FD /c
# SUBTRACT BASE CPP /YX # SUBTRACT BASE CPP /YX
...@@ -98,7 +98,7 @@ LIB32=xilink6.exe -lib ...@@ -98,7 +98,7 @@ LIB32=xilink6.exe -lib
BSC32=bscmake.exe BSC32=bscmake.exe
# ADD BASE BSC32 /nologo # ADD BASE BSC32 /nologo
# ADD BSC32 /nologo # ADD BSC32 /nologo
LIB32=xilink6.exe -lib LIB32=link.exe -lib
# ADD BASE LIB32 /nologo /out:"..\lib_release\mysys.lib" # ADD BASE LIB32 /nologo /out:"..\lib_release\mysys.lib"
# ADD LIB32 /nologo /out:"..\lib_release\mysys-max.lib" # ADD LIB32 /nologo /out:"..\lib_release\mysys-max.lib"
...@@ -283,19 +283,6 @@ SOURCE=.\my_clock.c ...@@ -283,19 +283,6 @@ SOURCE=.\my_clock.c
# Begin Source File # Begin Source File
SOURCE=.\my_compress.c SOURCE=.\my_compress.c
!IF "$(CFG)" == "mysys - Win32 Release"
# ADD CPP /I "../zlib"
!ELSEIF "$(CFG)" == "mysys - Win32 Debug"
# ADD CPP /I "../zlib"
!ELSEIF "$(CFG)" == "mysys - Win32 Max"
!ENDIF
# End Source File # End Source File
# Begin Source File # Begin Source File
......
#!/bin/sh
if [ -f prepare_done ]
then
exit
fi
cd ..
SRCDIR=`pwd`
(
find $SRCDIR -name *.dsw -and -not -path \*SCCS\* -print
find $SRCDIR -name *.dsp -and -not -path \*SCCS\* -print
)|(
while read v
do
sed 's/$'"/`echo -e \\\r`/" $v > $v.tmp
rm $v
mv $v.tmp $v
done
)
ln -s $SRCDIR/include $SRCDIR/VC++Files/include
link_dir_files()
{
for arg do
cd $SRCDIR/$arg/
(
ls -A1|grep \\.[ch]$
ls -A1|grep \\.ih$
ls -A1|grep \\.asm$
)|(
while read v
do
ln -s $SRCDIR/$arg/$v $SRCDIR/VC++Files/$arg/$v
done
)
cd $SRCDIR/$arg/
(ls -A1|grep \\.cc$|sed 's/.cc$//g')|(
while read v
do
ln -s $SRCDIR/$arg/$v.cc $SRCDIR/VC++Files/$arg/$v.cpp
done
)
done
}
link_dir_dirs()
{
for arg do
cd $SRCDIR/$arg/
(
ls -l |grep "^d"|awk '{print($9)}' -
)|(
while read v
do
ln -s $SRCDIR/$arg/$v $SRCDIR/VC++Files/$arg/
done
)
done
}
link_dir_files 'heap'
link_dir_files 'isam'
link_dir_files 'merge'
link_dir_files 'mysys'
link_dir_files 'zlib'
link_dir_files 'regex'
link_dir_files 'strings'
link_dir_files 'dbug'
link_dir_files 'vio'
link_dir_files 'client'
link_dir_files 'libmysql'
link_dir_files 'extra'
link_dir_files 'myisam'
link_dir_files 'myisammrg'
link_dir_files 'innobase'
link_dir_files 'bdb'
link_dir_files 'sql'
link_dir_files 'bdb/build_win32'
link_dir_files 'libmysqld'
link_dir_dirs 'bdb'
link_dir_dirs 'innobase'
ln -s $SRCDIR/myisam/myisampack.c $SRCDIR/VC++Files/myisampack/
ln -s $SRCDIR/client/mysqlbinlog.cc $SRCDIR/VC++Files/mysqlbinlog/mysqlbinlog.cpp
ln -s $SRCDIR/isam/pack_isam.c $SRCDIR/VC++Files/pack_isam/pack_isam.c
echo '/* added for win : */' >> $SRCDIR/config.h
echo '#undef HAVE_SCHED_H' >> $SRCDIR/config.h
echo '#USE_QUERY_CACHE_INTEGRITY_CHECK 1' >> $SRCDIR/config.h
echo '/* added for win : */' >> $SRCDIR/innobase/ib_config.h
echo '#undef HAVE_SCHED_H' >> $SRCDIR/innobase/ib_config.h
cd $SRCDIR/VC++Files
echo '1' > prepare_done
\ No newline at end of file
/* Testing of connecting to MySQL from X threads */
#include <windows.h>
#include <process.h>
#include <stdio.h>
#include <mysql.h>
#include <errno.h>
#define TEST_COUNT 20
/*****************************************************************************
** The following is to emulate the posix thread interface
*****************************************************************************/
typedef HANDLE pthread_t;
typedef struct thread_attr {
DWORD dwStackSize ;
DWORD dwCreatingFlag ;
int priority ;
} pthread_attr_t ;
typedef struct { int dummy; } pthread_condattr_t;
typedef unsigned int uint;
typedef struct {
uint waiting;
HANDLE semaphore;
} pthread_cond_t;
typedef CRITICAL_SECTION pthread_mutex_t;
#define pthread_mutex_init(A,B) InitializeCriticalSection(A)
#define pthread_mutex_lock(A) (EnterCriticalSection(A),0)
#define pthread_mutex_unlock(A) LeaveCriticalSection(A)
#define pthread_mutex_destroy(A) DeleteCriticalSection(A)
#define pthread_handler_decl(A,B) unsigned __cdecl A(void *B)
typedef unsigned (__cdecl *pthread_handler)(void *);
#define pthread_self() GetCurrentThread()
static unsigned int thread_count;
static pthread_cond_t COND_thread_count;
static pthread_mutex_t LOCK_thread_count;
pthread_mutex_t THR_LOCK_malloc,THR_LOCK_open,THR_LOCK_keycache,
THR_LOCK_lock,THR_LOCK_isam;
/*
** We have tried to use '_beginthreadex' instead of '_beginthread' here
** but in this case the program leaks about 512 characters for each
** created thread !
*/
int pthread_create(pthread_t *thread_id, pthread_attr_t *attr,
pthread_handler func, void *param)
{
HANDLE hThread;
hThread=(HANDLE)_beginthread(func,
attr->dwStackSize ? attr->dwStackSize :
65535,param);
if ((long) hThread == -1L)
{
return(errno ? errno : -1);
}
*thread_id=hThread;
return(0);
}
void pthread_exit(unsigned A)
{
_endthread();
}
/*
** The following simple implementation of conds works as long as
** only one thread uses pthread_cond_wait at a time.
** This is coded very carefully to work with thr_lock.
*/
/*****************************************************************************
** The following is a simple implementation of posix conditions
*****************************************************************************/
int pthread_cond_init(pthread_cond_t *cond, const pthread_condattr_t *attr)
{
cond->waiting=0;
cond->semaphore=CreateSemaphore(NULL,0,0x7FFFFFFF,(char*) 0);
if (!cond->semaphore)
return ENOMEM;
return 0;
}
int pthread_cond_destroy(pthread_cond_t *cond)
{
return CloseHandle(cond->semaphore) ? 0 : EINVAL;
}
int pthread_cond_wait(pthread_cond_t *cond, pthread_mutex_t *mutex)
{
InterlockedIncrement(&cond->waiting);
LeaveCriticalSection(mutex);
WaitForSingleObject(cond->semaphore,INFINITE);
InterlockedDecrement(&cond->waiting);
EnterCriticalSection(mutex);
return 0 ;
}
int pthread_cond_signal(pthread_cond_t *cond)
{
long prev_count;
if (cond->waiting)
ReleaseSemaphore(cond->semaphore,1,&prev_count);
return 0;
}
int pthread_attr_init(pthread_attr_t *connect_att)
{
connect_att->dwStackSize = 0;
connect_att->dwCreatingFlag = 0;
connect_att->priority = 0;
return 0;
}
int pthread_attr_setstacksize(pthread_attr_t *connect_att,DWORD stack)
{
connect_att->dwStackSize=stack;
return 0;
}
int pthread_attr_setprio(pthread_attr_t *connect_att,int priority)
{
connect_att->priority=priority;
return 0;
}
int pthread_attr_destroy(pthread_attr_t *connect_att)
{
return 0;
}
/* from my_pthread.c */
#ifndef REMOVE_BUG
__declspec(thread) int THR_KEY_my_errno;
int _my_errno(void)
{
return THR_KEY_my_errno;
}
#endif
/*****************************************************************************
** The test program
*****************************************************************************/
pthread_handler_decl(test_thread,arg)
{
MYSQL mysql;
MYSQL_RES *res;
mysql_init(&mysql);
if (!mysql_real_connect(&mysql,NULL,0,0,NULL,0,NULL,0))
{
fprintf(stderr,"Couldn't connect to engine!\n%s\n\n",mysql_error(&mysql));
perror("");
goto end;
}
if (mysql_query(&mysql,"select 1") < 0)
{
fprintf(stderr,"Query failed (%s)\n",mysql_error(&mysql));
goto end;
}
if (!(res=mysql_store_result(&mysql)))
{
fprintf(stderr,"Couldn't get result from query failed\n",
mysql_error(&mysql));
goto end;
}
mysql_free_result(res);
end:
Sleep(1000); /* Win32 sleep */
mysql_close(&mysql);
pthread_mutex_lock(&LOCK_thread_count);
thread_count--;
pthread_cond_signal(&COND_thread_count); /* Tell main we are ready */
pthread_mutex_unlock(&LOCK_thread_count);
pthread_exit(0);
return 0;
}
int main(int argc,char **argv)
{
pthread_t tid;
pthread_attr_t thr_attr;
int i,error;
if ((error=pthread_cond_init(&COND_thread_count,NULL)))
{
fprintf(stderr,"Got error: %d from pthread_cond_init (errno: %d)",
error,errno);
exit(1);
}
pthread_mutex_init(&LOCK_thread_count,NULL);
if ((error=pthread_attr_init(&thr_attr)))
{
fprintf(stderr,"Got error: %d from pthread_attr_init (errno: %d)",
error,errno);
exit(1);
}
if ((error=pthread_attr_setstacksize(&thr_attr,65536L)))
{
fprintf(stderr,"Got error: %d from pthread_attr_setstacksize (errno: %d)",
error,errno);
exit(1);
}
printf("Init ok. Creating %d threads\n",TEST_COUNT);
for (i=1 ; i <= TEST_COUNT ; i++)
{
int *param= &i;
if ((error=pthread_mutex_lock(&LOCK_thread_count)))
{
fprintf(stderr,"\nGot error: %d from pthread_mutex_lock (errno: %d)",
error,errno);
exit(1);
}
if ((error=pthread_create(&tid,&thr_attr,test_thread,(void*) param)))
{
fprintf(stderr,"\nGot error: %d from pthread_create (errno: %d)\n",
error,errno);
pthread_mutex_unlock(&LOCK_thread_count);
exit(1);
}
thread_count++;
pthread_mutex_unlock(&LOCK_thread_count);
}
if ((error=pthread_mutex_lock(&LOCK_thread_count)))
fprintf(stderr,"\nGot error: %d from pthread_mutex_lock\n",error);
while (thread_count)
{
if ((error=pthread_cond_wait(&COND_thread_count,&LOCK_thread_count)))
fprintf(stderr,"\nGot error: %d from pthread_cond_wait\n",error);
}
pthread_mutex_unlock(&LOCK_thread_count);
pthread_attr_destroy(&thr_attr);
printf("\nend\n");
return 0;
}
/* Testing of thread creation to find memory allocation bug
** This is coded to use as few extern functions as possible!
**
** The program must be compiled to be multithreaded !
**
** The problem is that when this program is run it will allocate more and more
** memory, so there is a memory leak in the thread handling. The problem is how
** to avoid is !
**
** It looks like the bug is that the std library doesn't free thread
** specific variables if one uses a thread variable.
** If one compiles this program with -DREMOVE_BUG
** there is no memory leaks anymore!
**
** This program is tested with Microsofts VC++ 5.0, but BC5.2 is also
** reported to have this bug.
*/
#include <windows.h>
#include <process.h>
#include <stdio.h>
#define TEST_COUNT 100000
/*****************************************************************************
** The following is to emulate the posix thread interface
*****************************************************************************/
typedef HANDLE pthread_t;
typedef struct thread_attr {
DWORD dwStackSize ;
DWORD dwCreatingFlag ;
int priority ;
} pthread_attr_t ;
typedef struct { int dummy; } pthread_condattr_t;
typedef struct {
unsigned int msg;
pthread_t thread;
DWORD thread_id;
} pthread_cond_t;
typedef CRITICAL_SECTION pthread_mutex_t;
#define pthread_mutex_init(A,B) InitializeCriticalSection(A)
#define pthread_mutex_lock(A) (EnterCriticalSection(A),0)
#define pthread_mutex_unlock(A) LeaveCriticalSection(A)
#define pthread_mutex_destroy(A) DeleteCriticalSection(A)
#define pthread_handler_decl(A,B) unsigned __cdecl A(void *B)
typedef unsigned (__cdecl *pthread_handler)(void *);
#define pthread_self() GetCurrentThread()
static unsigned int thread_count;
static pthread_cond_t COND_thread_count;
static pthread_mutex_t LOCK_thread_count;
pthread_mutex_t THR_LOCK_malloc,THR_LOCK_open,THR_LOCK_keycache,
THR_LOCK_lock,THR_LOCK_isam;
/*
** We have tried to use '_beginthreadex' instead of '_beginthread' here
** but in this case the program leaks about 512 characters for each
** created thread !
*/
int pthread_create(pthread_t *thread_id, pthread_attr_t *attr,
pthread_handler func, void *param)
{
HANDLE hThread;
hThread=(HANDLE)_beginthread(func,
attr->dwStackSize ? attr->dwStackSize :
65535,param);
if ((long) hThread == -1L)
{
return(errno ? errno : -1);
}
*thread_id=hThread;
return(0);
}
void pthread_exit(unsigned A)
{
_endthread();
}
/*
** The following simple implementation of conds works as long as
** only one thread uses pthread_cond_wait at a time.
** This is coded very carefully to work with thr_lock.
*/
static unsigned int WIN32_WAIT_SIGNAL= 30000; /* Start message to use */
int pthread_cond_init(pthread_cond_t *cond, const pthread_condattr_t *attr)
{
cond->msg=WIN32_WAIT_SIGNAL++;
cond->thread=(pthread_t) pthread_self(); /* For global conds */
//IRENA
cond->thread_id=GetCurrentThreadId();
return 0;
}
int pthread_cond_wait(pthread_cond_t *cond, pthread_mutex_t *mutex)
{
MSG msg ;
unsigned int msgCode=cond->msg;
cond->thread=(pthread_t) pthread_self();
//IRENA
//??? cond->thread_id=GetCurrentThreadId();
//VOID(ReleaseMutex(*mutex));
LeaveCriticalSection(mutex);
do
{
WaitMessage() ;
if (!PeekMessage(&msg, NULL, 1, 65534,PM_REMOVE))
{
return errno=GetLastError() ;
}
} while (msg.message != msgCode) ;
EnterCriticalSection(mutex);
return 0 ;
}
int pthread_cond_signal(pthread_cond_t *cond)
{
if (!PostThreadMessage(cond->thread_id, cond->msg, 0,0))
{
return errno=GetLastError() ;
}
return 0 ;
}
int pthread_attr_init(pthread_attr_t *connect_att)
{
connect_att->dwStackSize = 0;
connect_att->dwCreatingFlag = 0;
connect_att->priority = 0;
return 0;
}
int pthread_attr_setstacksize(pthread_attr_t *connect_att,DWORD stack)
{
connect_att->dwStackSize=stack;
return 0;
}
int pthread_attr_setprio(pthread_attr_t *connect_att,int priority)
{
connect_att->priority=priority;
return 0;
}
int pthread_attr_destroy(pthread_attr_t *connect_att)
{
return 0;
}
/* from my_pthread.c */
#ifndef REMOVE_BUG
__declspec(thread) int THR_KEY_my_errno;
int _my_errno(void)
{
return THR_KEY_my_errno;
}
#endif
/*****************************************************************************
** The test program
*****************************************************************************/
pthread_handler_decl(test_thread,arg)
{
pthread_mutex_lock(&LOCK_thread_count);
thread_count--;
pthread_cond_signal(&COND_thread_count); /* Tell main we are ready */
pthread_mutex_unlock(&LOCK_thread_count);
pthread_exit(0);
return 0;
}
int main(int argc,char **argv)
{
pthread_t tid;
pthread_attr_t thr_attr;
int i,error;
if ((error=pthread_cond_init(&COND_thread_count,NULL)))
{
fprintf(stderr,"Got error: %d from pthread_cond_init (errno: %d)",
error,errno);
exit(1);
}
pthread_mutex_init(&LOCK_thread_count,NULL);
if ((error=pthread_attr_init(&thr_attr)))
{
fprintf(stderr,"Got error: %d from pthread_attr_init (errno: %d)",
error,errno);
exit(1);
}
if ((error=pthread_attr_setstacksize(&thr_attr,65536L)))
{
fprintf(stderr,"Got error: %d from pthread_attr_setstacksize (errno: %d)",
error,errno);
exit(1);
}
printf("Init ok. Creating %d threads\n",TEST_COUNT);
for (i=1 ; i <= TEST_COUNT ; i++)
{
int *param= &i;
if ((i % 100) == 0)
{
printf("%8d",i);
fflush(stdout);
}
if ((error=pthread_mutex_lock(&LOCK_thread_count)))
{
fprintf(stderr,"\nGot error: %d from pthread_mutex_lock (errno: %d)",
error,errno);
exit(1);
}
if ((error=pthread_create(&tid,&thr_attr,test_thread,(void*) param)))
{
fprintf(stderr,"\nGot error: %d from pthread_create (errno: %d)\n",
error,errno);
pthread_mutex_unlock(&LOCK_thread_count);
exit(1);
}
thread_count++;
pthread_mutex_unlock(&LOCK_thread_count);
if ((error=pthread_mutex_lock(&LOCK_thread_count)))
fprintf(stderr,"\nGot error: %d from pthread_mutex_lock\n",error);
while (thread_count)
{
if ((error=pthread_cond_wait(&COND_thread_count,&LOCK_thread_count)))
fprintf(stderr,"\nGot error: %d from pthread_cond_wait\n",error);
}
pthread_mutex_unlock(&LOCK_thread_count);
}
pthread_attr_destroy(&thr_attr);
printf("\nend\n");
return 0;
}
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment