Hello community, here is the log from the commit of package aqbanking for openSUSE:Factory checked in at 2016-05-02 10:44:54 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/aqbanking (Old) and /work/SRC/openSUSE:Factory/.aqbanking.new (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Package is "aqbanking" Changes: -------- --- /work/SRC/openSUSE:Factory/aqbanking/aqbanking.changes 2016-04-07 13:32:42.000000000 +0200 +++ /work/SRC/openSUSE:Factory/.aqbanking.new/aqbanking.changes 2016-05-02 10:44:58.000000000 +0200 @@ -1,0 +2,11 @@ +Sat Apr 30 07:21:22 UTC 2016 - nico.kruber@gmail.com + +- Update to 5.6.10: + + fixes problems with some special HBCI messages + + support HHD 1.3.2 (Flicker codes for PIN/TAN) again + (thanks to Martin Kuehn) +- Update to 5.6.9beta: + + support old-version Flicker codes which are still used by + some banks (thanks to Martin Kuehn) + +------------------------------------------------------------------- Old: ---- aqbanking-5.6.8beta.tar.gz New: ---- aqbanking-5.6.10.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ aqbanking.spec ++++++ --- /var/tmp/diff_new_pack.udBqDI/_old 2016-05-02 10:44:59.000000000 +0200 +++ /var/tmp/diff_new_pack.udBqDI/_new 2016-05-02 10:44:59.000000000 +0200 @@ -26,7 +26,7 @@ %define q4b_cfgmoddir %{fronts_libdir}/q4banking/cfgmodules Name: aqbanking -Version: 5.6.8beta +Version: 5.6.10 Release: 0 Summary: Library for Online Banking Functions and Financial Data Import and Export License: GPL-2.0 or GPL-3.0 ++++++ aqbanking-5.6.8beta.tar.gz -> aqbanking-5.6.10.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/aqbanking-5.6.8beta/ChangeLog new/aqbanking-5.6.10/ChangeLog --- old/aqbanking-5.6.8beta/ChangeLog 2016-03-11 00:20:06.000000000 +0100 +++ new/aqbanking-5.6.10/ChangeLog 2016-04-23 18:33:21.000000000 +0200 @@ -1,4 +1,34 @@ ------------------------------------------------------------------ +2016-04-23 18:30:49 +0200 Martin Preuss +Prepared release 5.6.10. + +------------------------------------------------------------------ +2016-04-18 21:01:06 +0200 Elias Oltmanns +AqHBCI: Minor adjustments to make segment definitions comply with the specs. + +------------------------------------------------------------------ +2016-04-10 18:27:49 +0200 Martin Preuss +Prepared release 5.6.9beta. + +------------------------------------------------------------------ +2016-04-05 07:58:01 +0200 Martin Kuehn +ChipTAN: added support for fallback to HHD 1.3.2 if control bytes are missing + +------------------------------------------------------------------ +2016-03-23 22:45:50 +0100 Martin Preuss +Moved AB_Transaction_SetEndToEndReference() to the right place. + +------------------------------------------------------------------ +2016-03-13 16:21:11 +0100 Martin Preuss +aqbanking-cli: Added option "ignoreUnsupported". +This is used with the command "aqbanking-cli request" to make the tool +ignore requests for accounts which don't support them. + +Without this option an error is returned if a request is made for an account +which does not support that request (i.e. requesting transactions for +unsupported accounts). + +------------------------------------------------------------------ 2016-03-11 00:17:40 +0100 Martin Preuss Prepared release 5.6.8beta. @@ -512,39 +542,3 @@ ------------------------------------------------------------------ 2014-08-03 23:14:31 +0200 Martin Preuss AqHBCI: Fixed a typo. - ------------------------------------------------------------------- -2014-08-03 23:14:19 +0200 Martin Preuss -Added new CMAKE files to .gitignore. - ------------------------------------------------------------------- -2014-08-03 23:07:16 +0200 Martin Preuss -Added CMake package configuration files -Makes live for cmake users a lot easier. - -It is not platform idependent as the library extension .so is hard -coded. - -Signed-off-by: Martin Preuss <martin@aquamaniac.de> - ------------------------------------------------------------------- -2014-08-03 19:17:42 +0200 Martin Preuss -AqHBCI: Started working on job SepaGetStandingOrders. - ------------------------------------------------------------------- -2014-08-03 19:16:59 +0200 Martin Preuss -AqBanking: Added job SepaGetStandingOrders. -Also added handling for some other jobs in AB_Job_Type2Char() and -AB_Job_Type2LocalChar(). - ------------------------------------------------------------------- -2014-08-02 18:24:36 +0200 Martin Preuss -Added test-driver to .gitingore. - ------------------------------------------------------------------- -2014-08-02 18:24:05 +0200 Martin Preuss -Force IBAN and BIC for SEPA transfers and debit notes. -The group "kti_i" his quite vague, it allows for either national or -international specification of the local bank account, the parser can't handle -that too well. Some jobs need SEPA info (e.g. the SEPA transfer jobs), and -for those the parser should fail if IBAN or BIC are missing. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/aqbanking-5.6.8beta/aqbanking.iss new/aqbanking-5.6.10/aqbanking.iss --- old/aqbanking-5.6.8beta/aqbanking.iss 2016-03-11 00:19:20.000000000 +0100 +++ new/aqbanking-5.6.10/aqbanking.iss 2016-04-23 18:30:21.000000000 +0200 @@ -8,7 +8,7 @@ [Setup] ; Using the name here directly because we want it capitalized AppName=AqBanking -AppVerName=AqBanking 5.6.8beta +AppVerName=AqBanking 5.6.10 AppPublisher=AqBanking Development Team AppPublisherURL=http://sourceforge.net/projects/aqbanking AppSupportURL=http://sourceforge.net/support/getsupport.php?group_id=115695 @@ -18,7 +18,7 @@ DirExistsWarning=no InfoAfterFile=README LicenseFile=COPYING -OutputBaseFilename=aqbanking-5.6.8beta-setup +OutputBaseFilename=aqbanking-5.6.10-setup OutputDir=. UninstallFilesDir={app}\uninstall\aqbanking @@ -151,9 +151,9 @@ StringChange(FileString, '@'+'aqbanking_pkgdatadir@', pkgdatadir); StringChange(FileString, '@'+'AQBANKING_VERSION_MAJOR@', '5'); StringChange(FileString, '@'+'AQBANKING_VERSION_MINOR@', '6'); - StringChange(FileString, '@'+'AQBANKING_VERSION_PATCHLEVEL@', '8'); + StringChange(FileString, '@'+'AQBANKING_VERSION_PATCHLEVEL@', '10'); StringChange(FileString, '@'+'AQBANKING_VERSION_BUILD@', '0'); - StringChange(FileString, '@'+'AQBANKING_VERSION_TAG@', 'beta'); + StringChange(FileString, '@'+'AQBANKING_VERSION_TAG@', 'stable'); StringChange(FileString, '@'+'cbanking_libs@', '-L' + bindir + ' @cbanking_libs@'); StringChange(FileString, '@'+'cbanking_includes@', '-I'+includedir); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/aqbanking-5.6.8beta/aqbanking.spec new/aqbanking-5.6.10/aqbanking.spec --- old/aqbanking-5.6.8beta/aqbanking.spec 2016-03-11 00:19:20.000000000 +0100 +++ new/aqbanking-5.6.10/aqbanking.spec 2016-04-23 18:30:21.000000000 +0200 @@ -2,7 +2,7 @@ # neededforbuild gwenhywfar gwenhywfar-devel ktoblzcheck python python-ctypes pyyxml libchipcard2-devel libchipcard2 pkgconfig gettext-devel libacl-devel libacl libattr-devel libattr %define name aqbanking -%define version 5.6.8beta +%define version 5.6.10 %define dist Ubuntu %define disttag ubuntu diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/aqbanking-5.6.8beta/configure new/aqbanking-5.6.10/configure --- old/aqbanking-5.6.8beta/configure 2016-03-11 00:19:03.000000000 +0100 +++ new/aqbanking-5.6.10/configure 2016-04-23 18:30:04.000000000 +0200 @@ -2743,9 +2743,9 @@ AQBANKING_VERSION_MAJOR=5 AQBANKING_VERSION_MINOR=6 -AQBANKING_VERSION_PATCHLEVEL=8 +AQBANKING_VERSION_PATCHLEVEL=10 AQBANKING_VERSION_BUILD=0 -AQBANKING_VERSION_TAG="beta" +AQBANKING_VERSION_TAG="stable" @@ -2760,7 +2760,7 @@ AQBANKING_SO_CURRENT=40 AQBANKING_SO_AGE=5 -AQBANKING_SO_REVISION=8 +AQBANKING_SO_REVISION=10 AQBANKING_SO_EFFECTIVE="`echo \$(($AQBANKING_SO_CURRENT-$AQBANKING_SO_AGE))`" # diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/aqbanking-5.6.8beta/configure.ac new/aqbanking-5.6.10/configure.ac --- old/aqbanking-5.6.8beta/configure.ac 2016-03-11 00:18:45.000000000 +0100 +++ new/aqbanking-5.6.10/configure.ac 2016-04-23 18:29:09.000000000 +0200 @@ -25,10 +25,10 @@ AQBANKING_VERSION_MAJOR=5 AQBANKING_VERSION_MINOR=6 -AQBANKING_VERSION_PATCHLEVEL=8 +AQBANKING_VERSION_PATCHLEVEL=10 AQBANKING_VERSION_BUILD=0 dnl "stable", "rcX", "betaX", "svn" -AQBANKING_VERSION_TAG="beta" +AQBANKING_VERSION_TAG="stable" @@ -43,7 +43,7 @@ AQBANKING_SO_CURRENT=40 AQBANKING_SO_AGE=5 -AQBANKING_SO_REVISION=8 +AQBANKING_SO_REVISION=10 AQBANKING_SO_EFFECTIVE="`echo \$(($AQBANKING_SO_CURRENT-$AQBANKING_SO_AGE))`" # diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/aqbanking-5.6.8beta/src/plugins/backends/aqhbci/plugin/applayer/hhd.c new/aqbanking-5.6.10/src/plugins/backends/aqhbci/plugin/applayer/hhd.c --- old/aqbanking-5.6.8beta/src/plugins/backends/aqhbci/plugin/applayer/hhd.c 2015-12-20 20:45:17.000000000 +0100 +++ new/aqbanking-5.6.10/src/plugins/backends/aqhbci/plugin/applayer/hhd.c 2016-04-10 16:32:53.000000000 +0200 @@ -102,6 +102,8 @@ unsigned int numCtrlBytes; unsigned int moreCtrlBytes; unsigned int numBytes; + /* preset bit masks for HHD 1.4 */ + unsigned int maskLen = 0x3f; /* read LC */ rv=AH_HHD14_ReadBytesHex(code, 2); @@ -132,7 +134,7 @@ moreCtrlBytes = LSandFlags & 0x80; while (moreCtrlBytes) { - rv=AH_HHD14_ReadBytesHex(code+numCtrlBytes*2, 2); /* LS */ + rv=AH_HHD14_ReadBytesHex(code+numCtrlBytes*2, 2); if (rv<0) { DBG_INFO(AQHBCI_LOGDOMAIN, "here (%d) at [%s]", rv, code); return rv; @@ -140,7 +142,11 @@ numCtrlBytes++; moreCtrlBytes = (unsigned int) rv & 0x80; } - numBytes = (LSandFlags & 0x3f) + numCtrlBytes; + if (numCtrlBytes == 0) { + /* set bit mask for HHD 1.3.2 */ + maskLen = 0x0f; + } + numBytes = (LSandFlags & maskLen) + numCtrlBytes; GWEN_Buffer_AppendBytes(xbuf, code, numBytes*2); code += numBytes*2; i += numBytes + 2; /* add length of LC and LS */ @@ -155,7 +161,7 @@ return rv; } /* v=((unsigned int) rv) & 0xf; */ - v=((unsigned int) rv) & 0x3f; /* as suggested by Martin Kuehn */ + v=((unsigned int) rv) & maskLen; code+=2; if (i+v+1 > len) { DBG_INFO(AQHBCI_LOGDOMAIN, "try to read past the end of code (%d) at [%s]", v, code); @@ -268,6 +274,11 @@ unsigned int inLen; unsigned int outLenAndFlags; unsigned int outLen; + /* preset bit masks for HHD 1.4 */ + unsigned int maskLen = 0x3f; + unsigned int maskAscFlag = 0x40; + unsigned int maskCtlFlag = 0x80; + int rv; GWEN_BUFFER *xbuf; char numbuf[16]; @@ -295,17 +306,17 @@ return rv; } inLenAndFlags=(unsigned int) rv; - inLen=inLenAndFlags & 0x3f; + inLen=inLenAndFlags & maskLen; code+=2; outLen=(inLen+1)/2; - outLenAndFlags=outLen | (inLenAndFlags & 0x80); + outLenAndFlags=outLen | (inLenAndFlags & maskCtlFlag); snprintf(numbuf, sizeof(numbuf)-1, "%02x", outLenAndFlags); numbuf[sizeof(numbuf)-1]=0; GWEN_Buffer_AppendString(xbuf, numbuf); /* copy control bytes, if necessary */ - if (inLenAndFlags & 0x80) { + if (inLenAndFlags & maskCtlFlag) { unsigned int ctrl=0; do { @@ -322,7 +333,12 @@ numbuf[sizeof(numbuf)-1]=0; GWEN_Buffer_AppendString(xbuf, numbuf); code+=2; - } while (ctrl & 0x80); + } while (ctrl & maskCtlFlag); + } + else { + DBG_ERROR(AQHBCI_LOGDOMAIN, "no control bytes fallback to HHD 1.3.2"); + maskLen = 0xf; + maskAscFlag = 0x10; } if (inLen) { @@ -335,7 +351,7 @@ /* read DE's */ while (*code) { - /* length is in dec and contains flags */ + /* input length is in dec usually no AscFlag for DE's is provided */ rv=AH_HHD14_ReadBytesDec(code, 2); if (rv<0) { DBG_INFO(AQHBCI_LOGDOMAIN, "here (%d)", rv); @@ -343,29 +359,28 @@ return rv; } inLenAndFlags=(unsigned int) rv; - inLen=inLenAndFlags & 0x3f; + inLen=inLenAndFlags & maskLen; code+=2; - /* check whether we need to switch to ASC */ - if ((inLenAndFlags & 0x40)==0) { + /* so we have to check whether we need to switch to ASC */ + if ((inLenAndFlags & maskAscFlag)==0) { int i; for (i=0; i<inLen; i++) { if (code[i]<'0' || code[i]>'9'){ - /* contains something other than digits, use ascii encoding */ - DBG_ERROR(AQHBCI_LOGDOMAIN, "Switched to ASCII"); - inLenAndFlags|=0x40; + /* contains something other than digits, use ascii encoding */ + DBG_ERROR(AQHBCI_LOGDOMAIN, "Switched to ASCII"); + inLenAndFlags|=maskAscFlag; break; } } } /* write to outbuffer */ - if (inLenAndFlags & 0x40) { + if (inLenAndFlags & maskAscFlag) { /* ascii */ - //outLen=(inLen+1)/2; outLen=inLen; - outLenAndFlags=outLen | 0x40; /* add encoding flag to length (bit 6) */ + outLenAndFlags=outLen | maskAscFlag; /* add encoding flag to length (bit 6 or 4) */ snprintf(numbuf, sizeof(numbuf)-1, "%02x", outLenAndFlags); numbuf[sizeof(numbuf)-1]=0; GWEN_Buffer_AppendString(xbuf, numbuf); @@ -375,7 +390,7 @@ code+=inLen; } else { - /* bcd */ + /* bcd, pack 2 digits into 1 Byte */ outLen=(inLen+1)/2; outLenAndFlags=outLen; snprintf(numbuf, sizeof(numbuf)-1, "%02x", outLenAndFlags); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/aqbanking-5.6.8beta/src/plugins/backends/aqhbci/plugin/applayer/xml/fints300seg.xml new/aqbanking-5.6.10/src/plugins/backends/aqhbci/plugin/applayer/xml/fints300seg.xml --- old/aqbanking-5.6.8beta/src/plugins/backends/aqhbci/plugin/applayer/xml/fints300seg.xml 2016-01-07 23:10:21.000000000 +0100 +++ new/aqbanking-5.6.10/src/plugins/backends/aqhbci/plugin/applayer/xml/fints300seg.xml 2016-04-22 16:39:17.000000000 +0200 @@ -440,7 +440,7 @@ <ELEM name="version" type="num" maxsize="3" /> <ELEM name="ignoreUPDJobs" type="num" maxsize="1" /> <ELEM name="userName" type="ascii" maxsize="35" minnum="0" /> - <ELEM name="genericExt" type="ascii" maxsize="2048" minnum="0" /> + <ELEM name="genericExt" type="an" maxsize="2048" minnum="0" /> <VALUES> <VALUE path="head/code">%code</VALUE> @@ -489,8 +489,8 @@ <ELEM name="customer" type="ascii" maxsize="65" trustlevel="3" /> <ELEM name="type" type="num" maxsize="2" minnum="0" /> <ELEM name="currency" type="an" maxsize="65" minnum="0" /> - <ELEM name="name1" type="an" maxsize="27" /> - <ELEM name="name2" type="an" maxsize="27" minnum="0" /> + <ELEM name="name1" type="an" maxsize="35" /> + <ELEM name="name2" type="an" maxsize="35" minnum="0" /> <ELEM name="account/name" type="an" maxsize="30" minnum="0" /> <GROUP type="limit" name="limit" minnum="0" trustlevel="4" version="1" /> <GROUP type="updjob" name="updjob" minnum="0" maxnum="999" version="1" /> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/aqbanking-5.6.8beta/src/plugins/backends/aqofxconnect/version.h new/aqbanking-5.6.10/src/plugins/backends/aqofxconnect/version.h --- old/aqbanking-5.6.8beta/src/plugins/backends/aqofxconnect/version.h 2016-03-11 00:19:20.000000000 +0100 +++ new/aqbanking-5.6.10/src/plugins/backends/aqofxconnect/version.h 2016-04-23 18:30:21.000000000 +0200 @@ -16,11 +16,11 @@ #define AQOFXCONNECT_VERSION_MAJOR 5 #define AQOFXCONNECT_VERSION_MINOR 6 -#define AQOFXCONNECT_VERSION_PATCHLEVEL 8 +#define AQOFXCONNECT_VERSION_PATCHLEVEL 10 #define AQOFXCONNECT_VERSION_BUILD 0 -#define AQOFXCONNECT_VERSION_TAG "beta" -#define AQOFXCONNECT_VERSION_FULL_STRING "5.6.8.0beta" -#define AQOFXCONNECT_VERSION_STRING "5.6.8" +#define AQOFXCONNECT_VERSION_TAG "stable" +#define AQOFXCONNECT_VERSION_FULL_STRING "5.6.10.0stable" +#define AQOFXCONNECT_VERSION_STRING "5.6.10" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/aqbanking-5.6.8beta/src/tools/aqbanking-cli/request.c new/aqbanking-5.6.10/src/tools/aqbanking-cli/request.c --- old/aqbanking-5.6.8beta/src/tools/aqbanking-cli/request.c 2014-08-04 21:32:44.000000000 +0200 +++ new/aqbanking-5.6.10/src/tools/aqbanking-cli/request.c 2016-03-13 16:19:28.000000000 +0100 @@ -46,6 +46,7 @@ int reqSto=0; int reqSepaSto=0; int reqDT=0; + int ignoreUnsupported=0; GWEN_TIME *fromTime=0; GWEN_TIME *toTime=0; AB_JOB_LIST2 *jobList; @@ -172,6 +173,17 @@ "Request dated transfers" /* long description */ }, { + 0, + GWEN_ArgsType_Int, + "ignoreUnsupported", + 0, + 1, + 0, + "ignoreUnsupported", + "let AqBanking ignore unsupported requests for accounts", + "let AqBanking ignore unsupported requests for accounts", + }, + { GWEN_ARGS_FLAGS_HAS_ARGUMENT, /* flags */ GWEN_ArgsType_Char, /* type */ "fromDate", /* name */ @@ -193,6 +205,7 @@ "Specify the first date for which transactions are wanted (YYYYMMDD)", /* short */ "Specify the first date for which transactions are wanted (YYYYMMDD)" /* long */ }, + { GWEN_ARGS_FLAGS_HELP | GWEN_ARGS_FLAGS_LAST, /* flags */ GWEN_ArgsType_Int, /* type */ @@ -228,6 +241,7 @@ return 0; } + ignoreUnsupported=GWEN_DB_GetIntValue(db, "ignoreUnsupported", 0, 0); reqTrans=GWEN_DB_GetIntValue(db, "reqTrans", 0, 0); reqBalance=GWEN_DB_GetIntValue(db, "reqBalance", 0, 0); reqSto=GWEN_DB_GetIntValue(db, "reqSto", 0, 0); @@ -306,7 +320,41 @@ a=AB_Account_List2Iterator_Data(ait); assert(a); while(a) { - int matches=1; + int matches=1; + GWEN_BUFFER *accNameBuf; + + accNameBuf=GWEN_Buffer_new(0, 256, 0, 1); + + s=AB_Account_GetBankName(a); + if (s) { + GWEN_Buffer_AppendString(accNameBuf, " Bank Name: "); + GWEN_Buffer_AppendString(accNameBuf, s); + } + + s=AB_Account_GetBankCode(a); + if (s) { + GWEN_Buffer_AppendString(accNameBuf, " Bank Code: "); + GWEN_Buffer_AppendString(accNameBuf, s); + } + + s=AB_Account_GetAccountName(a); + if (s) { + GWEN_Buffer_AppendString(accNameBuf, " Account Name: "); + GWEN_Buffer_AppendString(accNameBuf, s); + } + + s=AB_Account_GetAccountNumber(a); + if (s) { + GWEN_Buffer_AppendString(accNameBuf, " Account Num: "); + GWEN_Buffer_AppendString(accNameBuf, s); + } + + s=AB_Account_GetSubAccountId(a); + if (s) { + GWEN_Buffer_AppendString(accNameBuf, " Account Suffix: "); + GWEN_Buffer_AppendString(accNameBuf, s); + } + if (matches && bankId) { s=AB_Account_GetBankCode(a); @@ -339,118 +387,176 @@ } if (matches) { + if (reqTrans) { AB_JOB *j; j=AB_JobGetTransactions_new(a); rv=AB_Job_CheckAvailability(j); - if (rv<0) { - DBG_ERROR(0, - "Error requesting transactions for %s/%s: %d", - AB_Account_GetBankCode(a), - AB_Account_GetAccountNumber(a), - rv); - AB_Account_List2Iterator_free(ait); - AB_Account_List2_free(al); - AB_Job_List2_FreeAll(jobList); - GWEN_Time_free(toTime); - GWEN_Time_free(fromTime); - return 3; + if (rv>=0) { + if (fromTime) + AB_JobGetTransactions_SetFromTime(j, fromTime); + if (toTime) + AB_JobGetTransactions_SetToTime(j, toTime); + AB_Job_List2_PushBack(jobList, j); + requests++; + } + else { + if (ignoreUnsupported) { + DBG_ERROR(0, + "Ignoring transfer request for %s: %d", + GWEN_Buffer_GetStart(accNameBuf), + rv); + AB_Job_free(j); + } + else { + DBG_ERROR(0, + "Error requesting transfers for %s: %d", + GWEN_Buffer_GetStart(accNameBuf), + rv); + GWEN_Buffer_free(accNameBuf); + AB_Account_List2Iterator_free(ait); + AB_Account_List2_free(al); + AB_Job_List2_FreeAll(jobList); + GWEN_Time_free(toTime); + GWEN_Time_free(fromTime); + return 3; + } } - if (fromTime) - AB_JobGetTransactions_SetFromTime(j, fromTime); - if (toTime) - AB_JobGetTransactions_SetToTime(j, toTime); + } - AB_Job_List2_PushBack(jobList, j); - requests++; - } if (reqBalance) { AB_JOB *j; j=AB_JobGetBalance_new(a); rv=AB_Job_CheckAvailability(j); - if (rv<0) { - DBG_ERROR(0, - "Error requesting balance for %s/%s: %d", - AB_Account_GetBankCode(a), - AB_Account_GetAccountNumber(a), - rv); - AB_Account_List2Iterator_free(ait); - AB_Account_List2_free(al); - AB_Job_List2_FreeAll(jobList); - GWEN_Time_free(toTime); - GWEN_Time_free(fromTime); - return 3; + if (rv>=0) { + AB_Job_List2_PushBack(jobList, j); + requests++; + } + else { + if (ignoreUnsupported) { + DBG_ERROR(0, + "Ignoring balance request for %s: %d", + GWEN_Buffer_GetStart(accNameBuf), + rv); + AB_Job_free(j); + } + else { + DBG_ERROR(0, + "Error requesting balance for %s: %d", + GWEN_Buffer_GetStart(accNameBuf), + rv); + GWEN_Buffer_free(accNameBuf); + AB_Account_List2Iterator_free(ait); + AB_Account_List2_free(al); + AB_Job_List2_FreeAll(jobList); + GWEN_Time_free(toTime); + GWEN_Time_free(fromTime); + return 3; + } } - AB_Job_List2_PushBack(jobList, j); - requests++; } if (reqSto) { AB_JOB *j; j=AB_JobGetStandingOrders_new(a); rv=AB_Job_CheckAvailability(j); - if (rv<0) { - DBG_ERROR(0, - "Error requesting standing order for %s/%s: %d", - AB_Account_GetBankCode(a), - AB_Account_GetAccountNumber(a), - rv); - AB_Account_List2Iterator_free(ait); - AB_Account_List2_free(al); - AB_Job_List2_FreeAll(jobList); - GWEN_Time_free(toTime); - GWEN_Time_free(fromTime); - return 3; + if (rv>=0) { + AB_Job_List2_PushBack(jobList, j); + requests++; + } + else { + if (ignoreUnsupported) { + DBG_ERROR(0, + "Ignoring standing order request for %s: %d", + GWEN_Buffer_GetStart(accNameBuf), + rv); + AB_Job_free(j); + } + else { + DBG_ERROR(0, + "Error requesting standing orders for %s: %d", + GWEN_Buffer_GetStart(accNameBuf), + rv); + GWEN_Buffer_free(accNameBuf); + AB_Account_List2Iterator_free(ait); + AB_Account_List2_free(al); + AB_Job_List2_FreeAll(jobList); + GWEN_Time_free(toTime); + GWEN_Time_free(fromTime); + return 3; + } } - AB_Job_List2_PushBack(jobList, j); - requests++; } if (reqSepaSto) { AB_JOB *j; j=AB_JobSepaGetStandingOrders_new(a); rv=AB_Job_CheckAvailability(j); - if (rv<0) { - DBG_ERROR(0, - "Error requesting SEPA standing order for %s/%s: %d", - AB_Account_GetBankCode(a), - AB_Account_GetAccountNumber(a), - rv); - AB_Account_List2Iterator_free(ait); - AB_Account_List2_free(al); - AB_Job_List2_FreeAll(jobList); - GWEN_Time_free(toTime); - GWEN_Time_free(fromTime); - return 3; + if (rv>=0) { + AB_Job_List2_PushBack(jobList, j); + requests++; + } + else { + if (ignoreUnsupported) { + DBG_ERROR(0, + "Ignoring SEPA standing order request for %s: %d", + GWEN_Buffer_GetStart(accNameBuf), + rv); + AB_Job_free(j); + } + else { + DBG_ERROR(0, + "Error requesting SEPA standing orders for %s: %d", + GWEN_Buffer_GetStart(accNameBuf), + rv); + GWEN_Buffer_free(accNameBuf); + AB_Account_List2Iterator_free(ait); + AB_Account_List2_free(al); + AB_Job_List2_FreeAll(jobList); + GWEN_Time_free(toTime); + GWEN_Time_free(fromTime); + return 3; + } } - AB_Job_List2_PushBack(jobList, j); - requests++; } if (reqDT) { AB_JOB *j; j=AB_JobGetDatedTransfers_new(a); rv=AB_Job_CheckAvailability(j); - if (rv<0) { - DBG_ERROR(0, - "Error requesting dated transfers for %s/%s: %d", - AB_Account_GetBankCode(a), - AB_Account_GetAccountNumber(a), - rv); - AB_Account_List2Iterator_free(ait); - AB_Account_List2_free(al); - AB_Job_List2_FreeAll(jobList); - GWEN_Time_free(toTime); - GWEN_Time_free(fromTime); - return 3; + if (rv>=0) { + AB_Job_List2_PushBack(jobList, j); + requests++; + } + else { + if (ignoreUnsupported) { + DBG_ERROR(0, + "Ignoring dated transfers request for %s: %d", + GWEN_Buffer_GetStart(accNameBuf), + rv); + AB_Job_free(j); + } + else { + DBG_ERROR(0, + "Error requesting dated transfers for %s: %d", + GWEN_Buffer_GetStart(accNameBuf), + rv); + GWEN_Buffer_free(accNameBuf); + AB_Account_List2Iterator_free(ait); + AB_Account_List2_free(al); + AB_Job_List2_FreeAll(jobList); + GWEN_Time_free(toTime); + GWEN_Time_free(fromTime); + return 3; + } } - AB_Job_List2_PushBack(jobList, j); - requests++; - } + } } + GWEN_Buffer_free(accNameBuf); + a=AB_Account_List2Iterator_Next(ait); } AB_Account_List2Iterator_free(ait); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/aqbanking-5.6.8beta/src/tools/aqbanking-cli/util.c new/aqbanking-5.6.10/src/tools/aqbanking-cli/util.c --- old/aqbanking-5.6.8beta/src/tools/aqbanking-cli/util.c 2016-03-04 17:25:19.000000000 +0100 +++ new/aqbanking-5.6.10/src/tools/aqbanking-cli/util.c 2016-03-23 22:45:14.000000000 +0100 @@ -234,10 +234,6 @@ return 0; } - s=GWEN_DB_GetCharValue(db, "endToEndReference", 0, 0); - if (s && *s) - AB_Transaction_SetEndToEndReference(t, s); - // dated transfer s=GWEN_DB_GetCharValue(db, "executionDate", 0, 0); @@ -441,6 +437,10 @@ return NULL; } + s=GWEN_DB_GetCharValue(db, "endToEndReference", 0, 0); + if (s && *s) + AB_Transaction_SetEndToEndReference(t, s); + /* dated transfer, SEPA debit notes */ s=GWEN_DB_GetCharValue(db, "executionDate", 0, 0); if (s && *s) { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/aqbanking-5.6.8beta/version.h new/aqbanking-5.6.10/version.h --- old/aqbanking-5.6.8beta/version.h 2016-03-11 00:19:20.000000000 +0100 +++ new/aqbanking-5.6.10/version.h 2016-04-23 18:30:21.000000000 +0200 @@ -13,15 +13,15 @@ #define AQBANKING_VERSION_MAJOR 5 #define AQBANKING_VERSION_MINOR 6 -#define AQBANKING_VERSION_PATCHLEVEL 8 +#define AQBANKING_VERSION_PATCHLEVEL 10 #define AQBANKING_VERSION_BUILD 0 -#define AQBANKING_VERSION_TAG "beta" -#define AQBANKING_VERSION_FULL_STRING "5.6.8.0beta" -#define AQBANKING_VERSION_STRING "5.6.8" +#define AQBANKING_VERSION_TAG "stable" +#define AQBANKING_VERSION_FULL_STRING "5.6.10.0stable" +#define AQBANKING_VERSION_STRING "5.6.10" #define AQBANKING_SO_CURRENT 40 -#define AQBANKING_SO_REVISION 8 +#define AQBANKING_SO_REVISION 10 #define AQBANKING_SO_AGE 5 #define AQBANKING_SO_EFFECTIVE 35