[commit] r2332 - trunk/Tests/svngui
GMESRC Repository Notifications
gme-commit at list.isis.vanderbilt.edu
Tue Sep 3 17:00:54 CDT 2013
Author: volgy
Date: Tue Sep 3 17:00:54 2013
New Revision: 2332
Log:
Modified:
trunk/Tests/svngui/SVNClient.cpp
trunk/Tests/svngui/SVNClient.h
trunk/Tests/svngui/svngui.cpp
trunk/Tests/svngui/svngui.h
trunk/Tests/svngui/svngui.vcxproj
trunk/Tests/svngui/svnguiDoc.cpp
trunk/Tests/svngui/svnguiDoc.h
Modified: trunk/Tests/svngui/SVNClient.cpp
==============================================================================
--- trunk/Tests/svngui/SVNClient.cpp Tue Sep 3 15:49:37 2013 (r2331)
+++ trunk/Tests/svngui/SVNClient.cpp Tue Sep 3 17:00:54 2013 (r2332)
@@ -3,7 +3,6 @@
#include "svngui.h"
#include "SVNClient.h"
-#include "svn_client.h"
#include "svn_pools.h"
#include "svn_dso.h"
#include "svn_utf.h"
@@ -72,7 +71,7 @@
svn_error_clear(svnError);
}
-CString CSVNError::msg()
+CString CSVNError::msg() const
{
char buf[SVN_ERROR_MSG_MAX];
@@ -80,7 +79,7 @@
return CString(buf);
}
-CSVNClient::CSVNClient() : isInitialized(false)
+CSVNClient::CSVNClient() : isInitialized(false), ctx(NULL), pool(NULL)
{
}
@@ -98,9 +97,6 @@
void CSVNClient::initialize(void)
{
apr_status_t status;
- apr_pool_t *pool;
- svn_error_t *err;
- svn_client_ctx_t *ctx;
// TODO: subversion/libsvn_subr/cmdline.c contains a lot of esoteric stuff
// such as "setvbuf", input/output encodings, exception handlers, locale settings, etc.
@@ -135,7 +131,7 @@
SVNTHROW(svn_ra_initialize(pool));
/* Make sure the ~/.subversion run-time config files exist */
- SVNTHROW(svn_config_ensure (NULL, pool));
+ SVNTHROW(svn_config_ensure(NULL, pool));
/* All clients need to fill out a client_ctx object. */
@@ -156,29 +152,27 @@
SVNTHROW(svn_wc_set_adm_dir ("_svn", pool));
}
- /* Depending on what your client does, you'll want to read about
- (and implement) the various callback function types below. */
+ /* Callbacks */
- /* A func (& context) which receives event signals during
- checkouts, updates, commits, etc. */
- /* ctx->notify_func2 = my_notification_func;
- ctx->notify_baton2 = NULL; */
+ /* A func (& context) which receives event signals during checkouts, updates, commits, etc. */
+ ctx->notify_func2 = cbNotify;
+ ctx->notify_baton2 = this;
/* A func (& context) which can receive log messages */
- /* ctx->log_msg_func3 = my_log_msg_receiver_func;
- ctx->log_msg_baton3 = NULL; */
+ ctx->log_msg_func3 = cbLog;
+ ctx->log_msg_baton3 = this;
/* A func (& context) which checks whether the user cancelled */
- /* ctx->cancel_func = my_cancel_checking_func;
- ctx->cancel_baton = NULL; */
+ ctx->cancel_func = cbCancel;
+ ctx->cancel_baton = this;
/* A func (& context) for network progress */
- /* ctx->progress_func = my_progress_func;
- ctx->progress_baton = NULL; */
+ ctx->progress_func = cbProgress;
+ ctx->progress_baton = this;
/* A func (& context) for conflict resolution */
- /* ctx->conflict_func2 = my_conflict_func;
- ctx->conflict_baton2 = NULL; */
+ ctx->conflict_func2 = cbConflict;
+ ctx->conflict_baton2 = this;
/* Make the client_ctx capable of authenticating users */
{
@@ -189,7 +183,7 @@
SVNTHROW(svn_auth_get_platform_specific_client_providers(&providers, cfg_config, pool));
/* For caching unencrypted username/password (also from config file) - prompting only to confirm storing creds in cleartext */
- svn_auth_get_simple_provider2(&provider,svn_cmdline_auth_plaintext_prompt, NULL /* prompt baton */, pool);
+ svn_auth_get_simple_provider2(&provider, cbAuthPlaintextPrompt, this, pool);
APR_ARRAY_PUSH(providers, svn_auth_provider_object_t *) = provider;
/* For guessing and optionally saving username - no prompting */
@@ -208,19 +202,19 @@
svn_auth_get_ssl_client_cert_file_provider(&provider, pool);
APR_ARRAY_PUSH(providers, svn_auth_provider_object_t *) = provider;
- svn_auth_get_ssl_client_cert_pw_file_provider2(&provider, svn_cmdline_auth_plaintext_passphrase_prompt, NULL /* prompt baton */, pool);
+ svn_auth_get_ssl_client_cert_pw_file_provider2(&provider, cbAuthPlaintextPassphrasePrompt, this, pool);
APR_ARRAY_PUSH(providers, svn_auth_provider_object_t *) = provider;
- svn_auth_get_simple_prompt_provider(&provider, svn_cmdline_auth_simple_prompt, NULL /* prompt baton */, 2 /* retry limit */, pool);
+ svn_auth_get_simple_prompt_provider(&provider, cbAuthSimplePrompt, this, 2 /* retry limit */, pool);
APR_ARRAY_PUSH(providers, svn_auth_provider_object_t *) = provider;
- svn_auth_get_username_prompt_provider(&provider, svn_cmdline_auth_username_prompt, NULL /* prompt baton */, 2 /* retry limit */, pool);
+ svn_auth_get_username_prompt_provider(&provider, cbAuthUsernamePrompt, this, 2 /* retry limit */, pool);
APR_ARRAY_PUSH(providers, svn_auth_provider_object_t *) = provider;
- svn_auth_get_ssl_server_trust_prompt_provider(&provider, svn_cmdline_auth_ssl_server_trust_prompt, NULL /* prompt baton */, pool);
+ svn_auth_get_ssl_server_trust_prompt_provider(&provider, cbAuthSSLServerTrustPrompt, this, pool);
APR_ARRAY_PUSH(providers, svn_auth_provider_object_t *) = provider;
- svn_auth_get_ssl_client_cert_pw_prompt_provider(&provider, svn_cmdline_auth_ssl_client_cert_pw_prompt, NULL /* prompt baton */, 2 /* retry limit */, pool);
+ svn_auth_get_ssl_client_cert_pw_prompt_provider(&provider, cbAuthSSLClientCertPWPrompt, this, 2 /* retry limit */, pool);
APR_ARRAY_PUSH(providers, svn_auth_provider_object_t *) = provider;
/* If configuration allows, add a provider for client-cert path
@@ -232,7 +226,7 @@
FALSE));
if (ssl_client_cert_file_prompt)
{
- svn_auth_get_ssl_client_cert_prompt_provider(&provider, svn_cmdline_auth_ssl_client_cert_prompt, NULL /* prompt baton */, 2 /* retry limit */, pool);
+ svn_auth_get_ssl_client_cert_prompt_provider(&provider, cbAuthSSLClientCertPrompt, this, 2 /* retry limit */, pool);
APR_ARRAY_PUSH(providers, svn_auth_provider_object_t *) = provider;
}
@@ -267,6 +261,97 @@
}
}
+// Context Callbacks
+void CSVNClient::cbNotify(void *baton, const svn_wc_notify_t *notify, apr_pool_t *pool)
+{
+ //TODO: implement this
+}
+
+svn_error_t* CSVNClient::cbLog(const char **log_msg, const char **tmp_file, const apr_array_header_t *commit_items, void *baton, apr_pool_t *pool)
+{
+ //TODO: implement this
+ return SVN_NO_ERROR;
+}
+
+svn_error_t* CSVNClient::cbCancel(void *cancel_baton)
+{
+ //TODO: implement this
+ return SVN_NO_ERROR;
+}
+
+void CSVNClient::cbProgress(apr_off_t progress, apr_off_t total, void *baton, apr_pool_t *pool)
+{
+ //TODO: implement this
+}
+
+svn_error_t* CSVNClient::cbConflict(svn_wc_conflict_result_t **result, const svn_wc_conflict_description2_t *description, void *baton, apr_pool_t *result_pool, apr_pool_t *scratch_pool)
+{
+ //TODO: implement this
+ return SVN_NO_ERROR;
+}
+
+// Auth Callbacks
+svn_error_t* CSVNClient::cbAuthPlaintextPrompt(svn_boolean_t *may_save_plaintext, const char *realmstring, void *baton, apr_pool_t *pool)
+{
+ //TODO: implement this
+ may_save_plaintext = FALSE;
+ return SVN_NO_ERROR;
+}
+
+svn_error_t* CSVNClient::cbAuthPlaintextPassphrasePrompt(svn_boolean_t *may_save_plaintext, const char *realmstring, void *baton, apr_pool_t *pool)
+{
+ //TODO: implement this
+ may_save_plaintext = FALSE;
+ return SVN_NO_ERROR;
+}
+
+svn_error_t* CSVNClient::cbAuthSimplePrompt(svn_auth_cred_simple_t **cred, void *baton, const char *realm, const char *username, svn_boolean_t may_save, apr_pool_t *pool)
+{
+ //TODO: implement this
+ svn_auth_cred_simple_t *ret = (svn_auth_cred_simple_t *)apr_pcalloc(pool, sizeof(*ret));
+ ret->username = NULL;
+ ret->password = NULL;
+ ret->may_save = may_save;
+ return SVN_NO_ERROR;
+}
+
+svn_error_t* CSVNClient::cbAuthUsernamePrompt(svn_auth_cred_username_t **cred, void *baton, const char *realm, svn_boolean_t may_save, apr_pool_t *pool)
+{
+ //TODO: implement this
+ svn_auth_cred_username_t *ret = (svn_auth_cred_username_t *)apr_pcalloc(pool, sizeof(*ret));
+ ret->username = NULL;
+ ret->may_save = may_save;
+ return SVN_NO_ERROR;
+}
+
+svn_error_t* CSVNClient::cbAuthSSLServerTrustPrompt(svn_auth_cred_ssl_server_trust_t **cred, void *baton, const char *realm, apr_uint32_t failures, const svn_auth_ssl_server_cert_info_t *cert_info, svn_boolean_t may_save, apr_pool_t *pool)
+{
+ //TODO: implement this
+ svn_auth_cred_ssl_server_trust_t *ret = (svn_auth_cred_ssl_server_trust_t *)apr_pcalloc(pool, sizeof(*ret));
+ ret->accepted_failures = failures;
+ ret->may_save = may_save;
+ return SVN_NO_ERROR;
+}
+
+svn_error_t* CSVNClient::cbAuthSSLClientCertPWPrompt(svn_auth_cred_ssl_client_cert_pw_t **cred, void *baton, const char *realm, svn_boolean_t may_save, apr_pool_t *pool)
+{
+ //TODO: implement this
+ svn_auth_cred_ssl_client_cert_pw_t *ret = (svn_auth_cred_ssl_client_cert_pw_t *)apr_pcalloc(pool, sizeof(*ret));
+ ret->password = NULL;
+ ret->may_save = may_save;
+ return SVN_NO_ERROR;
+}
+
+svn_error_t* CSVNClient::cbAuthSSLClientCertPrompt(svn_auth_cred_ssl_client_cert_t **cred, void *baton, const char *realm, svn_boolean_t may_save, apr_pool_t *pool)
+{
+ //TODO: implement this
+ svn_auth_cred_ssl_client_cert_t *ret = (svn_auth_cred_ssl_client_cert_t *)apr_pcalloc(pool, sizeof(*ret));
+ ret->cert_file = NULL;
+ ret->may_save = may_save;
+ return SVN_NO_ERROR;
+}
+
+
CSVNFile::CSVNFile(const CString & filePath)
{
}
Modified: trunk/Tests/svngui/SVNClient.h
==============================================================================
--- trunk/Tests/svngui/SVNClient.h Tue Sep 3 15:49:37 2013 (r2331)
+++ trunk/Tests/svngui/SVNClient.h Tue Sep 3 17:00:54 2013 (r2332)
@@ -16,7 +16,7 @@
public:
virtual ~CSVNError();
- CString msg();
+ CString msg() const;
private:
svn_error_t *svnError;
@@ -53,13 +53,32 @@
void initialize();
CSVNFile* embraceFile(const CString & filePath);
+ void forgetFile(CSVNFile* svnFile);
private:
- void forgetFile(CSVNFile* svnFile);
+ // Context Callbacks
+ static void cbNotify(void *baton, const svn_wc_notify_t *notify, apr_pool_t *pool);
+ static svn_error_t* cbLog(const char **log_msg, const char **tmp_file, const apr_array_header_t *commit_items, void *baton, apr_pool_t *pool);
+ static svn_error_t* cbCancel(void *cancel_baton);
+ static void cbProgress(apr_off_t progress, apr_off_t total, void *baton, apr_pool_t *pool);
+ static svn_error_t* cbConflict(svn_wc_conflict_result_t **result, const svn_wc_conflict_description2_t *description, void *baton, apr_pool_t *result_pool, apr_pool_t *scratch_pool);
+
+ // Auth Callbacks
+ static svn_error_t* cbAuthPlaintextPrompt(svn_boolean_t *may_save_plaintext, const char *realmstring, void *baton, apr_pool_t *pool);
+ static svn_error_t* cbAuthPlaintextPassphrasePrompt(svn_boolean_t *may_save_plaintext, const char *realmstring, void *baton, apr_pool_t *pool);
+ static svn_error_t* cbAuthSimplePrompt(svn_auth_cred_simple_t **cred, void *baton, const char *realm, const char *username, svn_boolean_t may_save, apr_pool_t *pool);
+ static svn_error_t* cbAuthUsernamePrompt(svn_auth_cred_username_t **cred, void *baton, const char *realm, svn_boolean_t may_save, apr_pool_t *pool);
+ static svn_error_t* cbAuthSSLServerTrustPrompt(svn_auth_cred_ssl_server_trust_t **cred, void *baton, const char *realm, apr_uint32_t failures, const svn_auth_ssl_server_cert_info_t *cert_info, svn_boolean_t may_save, apr_pool_t *pool);
+ static svn_error_t* cbAuthSSLClientCertPWPrompt(svn_auth_cred_ssl_client_cert_pw_t **cred, void *baton, const char *realm, svn_boolean_t may_save, apr_pool_t *pool);
+ static svn_error_t* cbAuthSSLClientCertPrompt(svn_auth_cred_ssl_client_cert_t **cred, void *baton, const char *realm, svn_boolean_t may_save, apr_pool_t *pool);
private:
CList<CSVNFile*, CSVNFile*> svnFiles;
+
bool isInitialized;
+ // These are valid only if initialized
+ svn_client_ctx_t *ctx;
+ apr_pool_t *pool;
};
Modified: trunk/Tests/svngui/svngui.cpp
==============================================================================
--- trunk/Tests/svngui/svngui.cpp Tue Sep 3 15:49:37 2013 (r2331)
+++ trunk/Tests/svngui/svngui.cpp Tue Sep 3 17:00:54 2013 (r2332)
@@ -143,10 +143,10 @@
m_pMainWnd->DragAcceptFiles();
try {
- svn = new CSVNClient();
+ svn.initialize();
}
catch (const CSVNError& svnError) {
- //Log(svnError->msg());
+ Log(svnError.msg());
}
return TRUE;
@@ -156,9 +156,6 @@
{
//TODO: handle additional resources you may have added
AfxOleTerm(FALSE);
-
- delete svn;
- apr_terminate();
return CWinAppEx::ExitInstance();
}
Modified: trunk/Tests/svngui/svngui.h
==============================================================================
--- trunk/Tests/svngui/svngui.h Tue Sep 3 15:49:37 2013 (r2331)
+++ trunk/Tests/svngui/svngui.h Tue Sep 3 17:00:54 2013 (r2332)
@@ -32,7 +32,7 @@
// Implementation
BOOL m_bHiColorIcons;
- CSVNClient *svn;
+ CSVNClient svn;
virtual void PreLoadState();
virtual void LoadCustomState();
Modified: trunk/Tests/svngui/svngui.vcxproj
==============================================================================
--- trunk/Tests/svngui/svngui.vcxproj Tue Sep 3 15:49:37 2013 (r2331)
+++ trunk/Tests/svngui/svngui.vcxproj Tue Sep 3 17:00:54 2013 (r2332)
@@ -41,13 +41,13 @@
<PropertyGroup Label="UserMacros" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<LinkIncremental>true</LinkIncremental>
- <IncludePath>$(SolutionDir)\include\apr;$(SolutionDir)\include\apr-util;$(SolutionDir)\include\apr-iconv;$(SolutionDir)\include\subversion;$(IncludePath)</IncludePath>
- <LibraryPath>$(SolutionDir)\lib;$(SolutionDir)\lib\subv_$(Configuration);$(LibraryPath)</LibraryPath>
+ <IncludePath>$(SolutionDir)\..\..\GME\include\apr;$(SolutionDir)\..\..\GME\include\apr-util;$(SolutionDir)\..\..\GME\include\apr-iconv;$(SolutionDir)\..\..\GME\include\subversion;$(IncludePath)</IncludePath>
+ <LibraryPath>$(SolutionDir)\..\..\GME\lib;$(SolutionDir)\..\..\GME\lib\subv_$(Configuration);$(LibraryPath)</LibraryPath>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<LinkIncremental>false</LinkIncremental>
- <IncludePath>$(SolutionDir)\include\apr;$(SolutionDir)\include\apr-util;$(SolutionDir)\include\apr-iconv;$(SolutionDir)\include\subversion;$(IncludePath)</IncludePath>
- <LibraryPath>$(SolutionDir)\lib;$(SolutionDir)\lib\subv_$(Configuration);$(LibraryPath)</LibraryPath>
+ <IncludePath>$(SolutionDir)\..\..\GME\include\apr;$(SolutionDir)\..\..\GME\include\apr-util;$(SolutionDir)\..\..\GME\include\apr-iconv;$(SolutionDir)\..\..\GME\include\subversion;$(IncludePath)</IncludePath>
+ <LibraryPath>$(SolutionDir)\..\..\GME\lib;$(SolutionDir)\..\..\GME\lib\subv_$(Configuration);$(LibraryPath)</LibraryPath>
</PropertyGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<ClCompile>
@@ -71,11 +71,11 @@
<AdditionalIncludeDirectories>$(IntDir);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
</ResourceCompile>
<CustomBuildStep>
- <Command>xcopy /Y/D/F ..\lib\libeay32.dll "$(OutDir)" && ^
-xcopy /Y/D/F ..\lib\ssleay32.dll "$(OutDir)" && ^
-xcopy /Y/D/F ..\lib\subv_$(ConfigurationName)\libapr-1.dll "$(OutDir)" && ^
-xcopy /Y/D/F ..\lib\subv_$(ConfigurationName)\libaprutil-1.dll "$(OutDir)" && ^
-xcopy /Y/D/F ..\lib\subv_$(ConfigurationName)\libapriconv-1.dll "$(OutDir)" && ^
+ <Command>xcopy /Y/D/F $(SolutionDir)\..\..\GME\lib\libeay32.dll "$(OutDir)" && ^
+xcopy /Y/D/F $(SolutionDir)\..\..\GME\lib\ssleay32.dll "$(OutDir)" && ^
+xcopy /Y/D/F $(SolutionDir)\..\..\GME\lib\subv_$(ConfigurationName)\libapr-1.dll "$(OutDir)" && ^
+xcopy /Y/D/F $(SolutionDir)\..\..\GME\lib\subv_$(ConfigurationName)\libaprutil-1.dll "$(OutDir)" && ^
+xcopy /Y/D/F $(SolutionDir)\..\..\GME\lib\subv_$(ConfigurationName)\libapriconv-1.dll "$(OutDir)"
</Command>
</CustomBuildStep>
<CustomBuildStep>
@@ -111,11 +111,11 @@
<AdditionalIncludeDirectories>$(IntDir);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
</ResourceCompile>
<CustomBuildStep>
- <Command>xcopy /Y/D/F ..\lib\libeay32.dll "$(OutDir)" && ^
-xcopy /Y/D/F ..\lib\ssleay32.dll "$(OutDir)" && ^
-xcopy /Y/D/F ..\lib\subv_$(ConfigurationName)\libapr-1.dll "$(OutDir)" && ^
-xcopy /Y/D/F ..\lib\subv_$(ConfigurationName)\libaprutil-1.dll "$(OutDir)" && ^
-xcopy /Y/D/F ..\lib\subv_$(ConfigurationName)\libapriconv-1.dll "$(OutDir)" && ^
+ <Command>xcopy /Y/D/F $(SolutionDir)\..\..\GME\lib\libeay32.dll "$(OutDir)" && ^
+xcopy /Y/D/F $(SolutionDir)\..\..\GME\lib\ssleay32.dll "$(OutDir)" && ^
+xcopy /Y/D/F $(SolutionDir)\..\..\GME\lib\subv_$(ConfigurationName)\libapr-1.dll "$(OutDir)" && ^
+xcopy /Y/D/F $(SolutionDir)\..\..\GME\lib\subv_$(ConfigurationName)\libaprutil-1.dll "$(OutDir)" && ^
+xcopy /Y/D/F $(SolutionDir)\..\..\GME\lib\subv_$(ConfigurationName)\libapriconv-1.dll "$(OutDir)"
</Command>
</CustomBuildStep>
<CustomBuildStep>
@@ -166,4 +166,9 @@
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets">
</ImportGroup>
+ <ProjectExtensions>
+ <VisualStudio>
+ <UserProperties RESOURCE_FILE="svngui.rc" />
+ </VisualStudio>
+ </ProjectExtensions>
</Project>
\ No newline at end of file
Modified: trunk/Tests/svngui/svnguiDoc.cpp
==============================================================================
--- trunk/Tests/svngui/svnguiDoc.cpp Tue Sep 3 15:49:37 2013 (r2331)
+++ trunk/Tests/svngui/svnguiDoc.cpp Tue Sep 3 17:00:54 2013 (r2332)
@@ -152,3 +152,40 @@
// CsvnguiDoc commands
+
+
+BOOL CsvnguiDoc::OnOpenDocument(LPCTSTR lpszPathName)
+{
+ if (!CDocument::OnOpenDocument(lpszPathName))
+ return FALSE;
+
+ svnFile = theApp.svn.embraceFile(lpszPathName);
+
+ return TRUE;
+}
+
+
+void CsvnguiDoc::OnCloseDocument()
+{
+ // TODO: Add your specialized code here and/or call the base class
+
+ CDocument::OnCloseDocument();
+
+ theApp.svn.forgetFile(svnFile);
+}
+
+
+BOOL CsvnguiDoc::OnSaveDocument(LPCTSTR lpszPathName)
+{
+ // TODO: Add your specialized code here and/or call the base class
+
+ return CDocument::OnSaveDocument(lpszPathName);
+}
+
+
+BOOL CsvnguiDoc::SaveModified()
+{
+ // TODO: Add your specialized code here and/or call the base class
+
+ return CDocument::SaveModified();
+}
Modified: trunk/Tests/svngui/svnguiDoc.h
==============================================================================
--- trunk/Tests/svngui/svnguiDoc.h Tue Sep 3 15:49:37 2013 (r2331)
+++ trunk/Tests/svngui/svnguiDoc.h Tue Sep 3 17:00:54 2013 (r2332)
@@ -5,6 +5,8 @@
#pragma once
+#include "SVNClient.h"
+
class CsvnguiDoc : public CDocument
{
@@ -51,4 +53,12 @@
CString m_strSearchContent;
CString m_strThumbnailContent;
#endif // SHARED_HANDLERS
+public:
+ virtual BOOL OnOpenDocument(LPCTSTR lpszPathName);
+ virtual void OnCloseDocument();
+ virtual BOOL OnSaveDocument(LPCTSTR lpszPathName);
+ virtual BOOL SaveModified();
+
+private:
+ CSVNFile *svnFile;
};
More information about the gme-commit
mailing list