> against which version of libOFX did you apply the patch? "http://downloads.sourceforge.net/project/libofx/libofx/0.9.10/libofx-0.9.10.tar.gz" Just changed time.tm_isdst as follows: --- libofx-0.9.10.orig\lib\ofx_utilities.cpp 2015-11-07 10:06:17.446846600 -0600 +++ libofx-0.9.10\lib\ofx_utilities.cpp 2015-11-07 16:58:40.645096200 -0600 @@ -116,7 +116,7 @@ string ofxdate_whole; time_t temptime; - time.tm_isdst = daylight; // initialize dst setting + time.tm_isdst = -1; //mktime will figure out daylight savings based on locale std::time(&temptime); local_offset = difftime(mktime(localtime(&temptime)), mktime(gmtime(&temptime))) + (3600 * daylight);
I am building on Windows 8.1 with mingw, gcc version 4.8.2. The handling of tm_isdst by mktime apparently has a checkered past, so I only know that this fixed my problem on Windows when DST was not in effect. While I'm at it, here's the <CLIENTUID> change: --- libofx-0.9.10.orig\lib\ofx_request.cpp 2015-11-29 11:30:54.119081400 -0600 +++ libofx-0.9.10\lib\ofx_request.cpp 2015-11-29 11:28:46.128634400 -0600 @@ -103,6 +103,9 @@ else sonrqTag.Add( "APPVER", "1400"); + if ( strlen(m_login.clientuid) > 0 ) + sonrqTag.Add( "CLIENTUID", m_login.clientuid); + OfxAggregate signonmsgTag("SIGNONMSGSRQV1"); signonmsgTag.Add( sonrqTag ); where m_login.clientuid needs to be added to libofx.h. My libofx.h currently has a bunch of other changes so my patch line numbers won't match, but the changes there are: @@ -90,6 +90,7 @@ #define OFX_APPID_LENGTH (32) #define OFX_APPVER_LENGTH (32) #define OFX_HEADERVERSION_LENGTH (32) +#define OFX_CLIENTUID_LENGTH (36 + 1) @@ -811,6 +937,7 @@ char header_version[OFX_HEADERVERSION_LENGTH]; char appid[OFX_APPID_LENGTH]; char appver[OFX_APPVER_LENGTH]; + char clientuid[OFX_CLIENTUID_LENGTH]; }; Then I have KMM set the OfxFiLogin.clientuid. Snippet (not a diff) from mymoneyofxconnector.cpp: void MyMoneyOfxConnector::initRequest(OfxFiLogin* fi) const { memset(fi, 0, sizeof(OfxFiLogin)); strncpy(fi->fid, fiid().toLatin1(), OFX_FID_LENGTH - 1); strncpy(fi->org, fiorg().toLatin1(), OFX_ORG_LENGTH - 1); strncpy(fi->clientuid, clientUid().toLatin1(), OFX_CLIENTUID_LENGTH - 1); strncpy(fi->userid, username().toLatin1(), OFX_USERID_LENGTH - 1); strncpy(fi->userpass, password().toLatin1(), OFX_USERPASS_LENGTH - 1); where the clientUid comes from the new edit box I added in the OFX Details dialog and stored as m_fiSettings.value("clientUid");
_______________________________________________ KMyMoney-devel mailing list KMyMoney-devel@kde.org https://mail.kde.org/mailman/listinfo/kmymoney-devel