Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package libofx for openSUSE:Factory checked in at 2021-10-16 22:47:17 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/libofx (Old) and /work/SRC/openSUSE:Factory/.libofx.new.1890 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "libofx" Sat Oct 16 22:47:17 2021 rev:38 rq:925657 version:0.10.3 Changes: -------- --- /work/SRC/openSUSE:Factory/libofx/libofx.changes 2021-03-10 08:58:42.994979482 +0100 +++ /work/SRC/openSUSE:Factory/.libofx.new.1890/libofx.changes 2021-10-16 22:47:53.932704996 +0200 @@ -1,0 +2,14 @@ +Thu Oct 14 09:55:15 UTC 2021 - Christophe Giboudeaux <christo...@krop.fr> + +- Update to 0.10.3: + * Fix gmt offset seconds + * Fix various typos in source code + +------------------------------------------------------------------- +Sun Sep 19 09:44:53 UTC 2021 - Christophe Giboudeaux <christo...@krop.fr> + +- Update to 0.10.2 + * Improved imported date stability + * Respect --libdir for opensp. Don't override docdir. + +------------------------------------------------------------------- Old: ---- 0.10.1.tar.gz New: ---- 0.10.3.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ libofx.spec ++++++ --- /var/tmp/diff_new_pack.m2eoRy/_old 2021-10-16 22:47:54.360705356 +0200 +++ /var/tmp/diff_new_pack.m2eoRy/_new 2021-10-16 22:47:54.360705356 +0200 @@ -17,7 +17,7 @@ Name: libofx -Version: 0.10.1 +Version: 0.10.3 Release: 0 Summary: OFX Command Parser and API License: GPL-2.0-or-later @@ -70,6 +70,12 @@ chmod -x doc/ofx_sample_files/ofx_spec160_stmtrs_example.sgml %build +# Leap 15 has gengetopt 2.22 and needs the typo +sed -i 's#unnamed-opts#unamed-opts#' {ofxconnect,ofxdump}/Makefile.am + +# lto causes build issues on leap and armv7l +%define _lto_cflags %{nil} + sh autogen.sh %configure --disable-static --with-opensp-libs=%{_libdir} %make_build docdir=%{_defaultdocdir}/%{name} ++++++ 0.10.1.tar.gz -> 0.10.3.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libofx-0.10.1/ChangeLog new/libofx-0.10.3/ChangeLog --- old/libofx-0.10.1/ChangeLog 2021-01-25 22:10:19.000000000 +0100 +++ new/libofx-0.10.3/ChangeLog 2021-09-29 22:12:28.000000000 +0200 @@ -17,7 +17,7 @@ * Apply patch by Geert Janssens to fix crash on invalid date format 2010-04-27 Benoit Gr??goire <beno...@coeus.ca> - * Patch by ajseward with some additional fixes to allow wraping the library in python. + * Patch by ajseward with some additional fixes to allow wrapping the library in python. 2010-02-04 Benoit Gr??goire <beno...@coeus.ca> * Applied a patch provided by Thomas Baumgart which fixes bug #5 (Transaction posting date off by one) @@ -87,12 +87,12 @@ encoding, and uses libiconv (if available) to convert the encoding since OpenSP can't do it. The default output is now UTF-8. This will "do the right thing" for Gnucash 2 and any client that uses UTF-8 strings, but we should add an interface - to let the client chose his prefered output encoding. + to let the client chose his preferred output encoding. 9/1/2007: Benoit Gr??goire <beno...@coeus.ca> * Adapted patch by Christian Lupien <lupien @at@ physique.usherbrooke.ca> to add processing of the different bank account types in OfxPaymentRequest. Took this - oportunity to correct an API duplication problem before it get's even more + opportunity to correct an API duplication problem before it get's even more complicated to fix: deleted OfxAccountInfo (OfxAccountData should be used instead) and the global scopt AccountType enum (use the one in OfxAccountData). Both of these changes will require source code change in aqbanking. @@ -111,9 +111,9 @@ 25/8/2006: Benoit Gr??goire <beno...@coeus.ca> * Fix datatype mismatch in ofx_preproc.cpp * Fix gengetopt related build problems on debian based distribution. - * Remove massage about dependency on Qt, qhich is no longuer true + * Remove massage about dependency on Qt, which is no longer true * Fix ofxconnect headers not being distributed - * Remove cmdline.c and cmdline.h which shouldn't be versionned + * Remove cmdline.c and cmdline.h which shouldn't be versioned * Release 0.8.2 3/8/2006 David Resier <dbrei...@earthlink.net> @@ -164,9 +164,9 @@ 17/12/2005 Ace Jones <acejo...@users.sf.net> * Fixed ofxdump to give a reasonable error if you run it on a file that doesn't exist. - * Added proper libcurl.m4 to check for existence & compilability of + * Added proper libcurl.m4 to check for existence & compatibility of libcurl - * Make libcurl optional again by handling its absense in ofxconnect + * Make libcurl optional again by handling its absence in ofxconnect 17/11/2005 Martin Preuss <aquaman...@users.sf.net> * added pkg-config file to spec file @@ -192,7 +192,7 @@ 31/7/2005: Benoit Gr??goire <beno...@coeus.ca> * Release 0.8.0 - * configure.in: Update libtool version number. Make curl check fatal untill there is code to conditionally not compile ofxconnect when CURL is unavailable. + * configure.in: Update libtool version number. Make curl check fatal until there is code to conditionally not compile ofxconnect when CURL is unavailable. * Fix the build system so that discheck will finally run properly. 11/7/2005 Ace Jones <acejo...@users.sf.net> @@ -251,7 +251,7 @@ * Autoconf fixes from Martin Preuss 23/4/2004 Benoit Gr??goire <beno...@coeus.ca> - * At long last, a flexible and extendable command line parser is used in ofxdump. This was essential for debuging, and even more essential for developing Direct Connect. Immediate benefits are that you can set the desired debug output without recompiling. Check ofxdump --help for options. + * At long last, a flexible and extendable command line parser is used in ofxdump. This was essential for debugging, and even more essential for developing Direct Connect. Immediate benefits are that you can set the desired debug output without recompiling. Check ofxdump --help for options. * configure.in: gengetopt will be used if available. * lib/Makefile.am: * ofxdump/Makefile.am @@ -271,7 +271,7 @@ * lib/tree.hh: Upgrade to latest version 31/3/2004 Benoit Gr??goire <beno...@coeus.ca> - * lib/context.cpp,hh: New files. Create a global libofx object to allow the library to cleanly keep state. This will allow much cleanup, and is needed for the move to a DOM style interface. Other files ajusted to match. + * lib/context.cpp,hh: New files. Create a global libofx object to allow the library to cleanly keep state. This will allow much cleanup, and is needed for the move to a DOM style interface. Other files adjusted to match. 7/3/2004 Benoit Gr??goire <beno...@coeus.ca> * lib/ofc_sgml.cpp/hh: New files. Splits code path for OFC and OFX to keep things understandeable. Some more OFC parsing. Now waiting to implement global libofx context object passed everywhere to make further progress. @@ -280,7 +280,7 @@ 3/3/2004 Benoit Gr??goire <beno...@coeus.ca> * Many... * lib/file_preproc.cpp, lib/file_preproc.hh: Add file format autodetection architecture, can currently distinguish between OFX and OFC files. Note that because of this change, the main entry point of the library is now in file_preproc.cpp. - * dtd/ofc.dtd, lib/ofx_sgml.cpp, lib/ofx_preproc.cpp: Add embryo of OFC (Microsoft Open Financial Connectivity) to LibOFX. The SGML parses succesfully, but LibOFX does not yet know what to do with it. Big thanks to Jeremy Jongsma jeremy at jongsma.org for finally finding the required DTD. I haven't yet decided if its better to to add this support to ofx_proc_sgml.cpp (easier to maintain, less code duplication), or to create a ofc_proc_sgml.cpp (easier to understand, cleaner code). + * dtd/ofc.dtd, lib/ofx_sgml.cpp, lib/ofx_preproc.cpp: Add embryo of OFC (Microsoft Open Financial Connectivity) to LibOFX. The SGML parses successfully, but LibOFX does not yet know what to do with it. Big thanks to Jeremy Jongsma jeremy at jongsma.org for finally finding the required DTD. I haven't yet decided if its better to to add this support to ofx_proc_sgml.cpp (easier to maintain, less code duplication), or to create a ofc_proc_sgml.cpp (easier to understand, cleaner code). 3/2/2004 Benoit Gr??goire <beno...@coeus.ca> * inc/libofx.h lib/ofx_preproc.cpp lib/tree.hh ofx2qif/ofx2qif.c ofxdump/ofxdump.cpp: Make it compile. I may have misunderstood what Ryan wanted to do with the prototypes in libofx.h. If so, sorry. Note: I don't think that the void * passed as arguments are saved in the registry yet. @@ -308,7 +308,7 @@ 14/1/2004 Benoit Gr??goire <beno...@coeus.ca> * dtd/Makefile.am, dtd/opensp.dcl, * lib/ofx_preproc.[cpp,hh],: Add SGML declaration to be parsed before the DTD. Makes us immune to changes to default settings. Should get rid of "end tag for "MEMO" omitted, but OMITTAG NO was specified" type of messages and greatly help the parser. - * lib/ofx_sgml.cpp: Get rid of OpenSP 1.3.1 compatibility code, which makes the code much easier to understand and debug. Combined with the change obove, it should practically eliminate the parsing ambiguity that made libofx so verbose and ocasionally miss data. More defensive coding to warn of malformed files. This probably means that compatibility with OpenSP 1.3.1 cannot come back. However with the change above it may work after all. Somebody please test this... + * lib/ofx_sgml.cpp: Get rid of OpenSP 1.3.1 compatibility code, which makes the code much easier to understand and debug. Combined with the change obove, it should practically eliminate the parsing ambiguity that made libofx so verbose and occasionally miss data. More defensive coding to warn of malformed files. This probably means that compatibility with OpenSP 1.3.1 cannot come back. However with the change above it may work after all. Somebody please test this... * lib/messages.cpp: Finally implement displaying line numbers in the error output. This can be turned off by the clients by setting the ofx_show_position global. These should all get setter functions in the API re-write. 6/12/2003 Benoit Gr??goire <beno...@coeus.ca> @@ -347,7 +347,7 @@ * INSTALL: Delete and replace by FAQ, update content. 11/3/2003 Benoit Gr??goire <beno...@coeus.ca> - * ofxdump/ofxdump.cpp: Remove comand line arguments debug output. + * ofxdump/ofxdump.cpp: Remove command line arguments debug output. * lib/ofx_container_main.cpp: Fix compiler warnings reported by Derek Atkins * Misc build system cleanup @@ -365,7 +365,7 @@ * lib/ofx_utilities.cpp: Fix ofxdate_to_time_t() that wouldn't compile on sun. 23/1/2003 Benoit Gr??goire <beno...@coeus.ca> - * lib/ofx_container_transaction.cpp: Explicitely ignore <MKTVAL> since it should always be equal to UNITS*UNITPRICE, and using it may lead to rounding errors. + * lib/ofx_container_transaction.cpp: Explicitly ignore <MKTVAL> since it should always be equal to UNITS*UNITPRICE, and using it may lead to rounding errors. 22/1/2003 Benoit Gr??goire <beno...@coeus.ca> * autogen.sh: Run libtoolize, and reorder the commands. The order is now: libtoolize,aclocal, autoheader, automake, autoconf and configure @@ -423,7 +423,7 @@ * inc/libofx.h lib/ofx_container_transaction.cpp ofxdump/ofxdump.cpp: Created a new invtransactiontype enum to replace the invtranstype string 30/10/2002 Benoit Gr??goire <beno...@coeus.ca> - * lib/ofx_sgml.cpp: Added yet more spagetti code and global variables to improve the work around for OpenSP 1.3 bugs. I beg of you, please convince your distro to make openjade and the OpenSP library independently upgradable. + * lib/ofx_sgml.cpp: Added yet more spaghetti code and global variables to improve the work around for OpenSP 1.3 bugs. I beg of you, please convince your distro to make openjade and the OpenSP library independently upgradable. 30/10/2002 Benoit Gr??goire <beno...@coeus.ca> * configure.in: @@ -456,10 +456,10 @@ LibOFX 0.?????????: -Add an account_name to the OfxAccountData struct. It contains a human readable identifier of the account. -Include file location seems to have changed in recent versions of OpenSP. Included old and new case. - -Profiling now possible. It is now posible to use "make static". Statically linked ofxdump and ofx2qif will be created, with profiling enabled. + -Profiling now possible. It is now possible to use "make static". Statically linked ofxdump and ofx2qif will be created, with profiling enabled. LibOFX 0.3: -MUCH improved documentation. Full API and internals reference in doc/html/ - -Major update to ofx2qif. It will now generate the !Account QIF construct, which should improbe compatibility with other accounting software. + -Major update to ofx2qif. It will now generate the !Account QIF construct, which should improve compatibility with other accounting software. -gcc3.2 caused problems with ld, now use gcc to link. Should solve the "undefined symbol:__dso_handle" runtime problem with Mandrake cooker. -There is now a workaround in the code to make it work with the OpenSP version (1.3.4) distributed with OpenJADE. However, this is not guaranteed to work, and it might cause errors in your financial data, and might not be present in future versions. Use at your own risk, you've been warned. -LibOFX can now be installed in "unorthodox" directories, such as ~/experimental, and still find it's dtd. You must modify the prefix in common.m (recommended) or put it in the command line of BOTH make and make install. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libofx-0.10.1/FAQ new/libofx-0.10.3/FAQ --- old/libofx-0.10.1/FAQ 2021-01-25 22:10:19.000000000 +0100 +++ new/libofx-0.10.3/FAQ 2021-09-29 22:12:28.000000000 +0200 @@ -27,12 +27,12 @@ (1) Getting "configure: error: unable to link a test program, is OpenSP installed?" --BE CAREFULL: When you compile OpenSP, by default it will install in /usr/local. On many versions of linux (Most RedHat, All Mandrake up to 8.3) /usr/local/lib/ is not part of /etc/ld.so.conf . In this case LibOFX will either +-BE CAREFUL: When you compile OpenSP, by default it will install in /usr/local. On many versions of linux (Most RedHat, All Mandrake up to 8.3) /usr/local/lib/ is not part of /etc/ld.so.conf . In this case LibOFX will either 1-Fail to link at all -2-Link with libosp.so.0 (1.3.4, wich probably got installed as part of OpenJade) and not work. +2-Link with libosp.so.0 (1.3.4, which probably got installed as part of OpenJade) and not work. Even if you add /usr/local/lib/ to /etc/ld.so.conf, LibOFX will probably still link with OpenSP 1.3.4 at runtime. Symptoms will be complaints of many unclosed statements when running ofxdump on an ofx file. -I STRONGLY URGE YOU to avoid theese problems and compile OpenSP using +I STRONGLY URGE YOU to avoid these problems and compile OpenSP using ./configure --prefix=/usr If you really want to install OpenSP in /usr/local/lib, you must add --with-opensp-libs=/usr/local/lib to libofx's ./configure or ./autogen.sh diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libofx-0.10.1/Makefile.am new/libofx-0.10.3/Makefile.am --- old/libofx-0.10.1/Makefile.am 2021-01-25 22:10:19.000000000 +0100 +++ new/libofx-0.10.3/Makefile.am 2021-09-29 22:12:28.000000000 +0200 @@ -6,8 +6,6 @@ DIST_SUBDIRS = m4 inc dtd lib doc . ofx2qif ofxdump ofxconnect SUBDIRS = m4 inc dtd lib doc . ofx2qif ofxdump $(MAYBE_OFXCONNECT) -docdir = $(datadir)/doc/libofx - doc_DATA = \ AUTHORS \ COPYING \ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libofx-0.10.1/NEWS new/libofx-0.10.3/NEWS --- old/libofx-0.10.1/NEWS 2021-01-25 22:10:19.000000000 +0100 +++ new/libofx-0.10.3/NEWS 2021-09-29 22:12:28.000000000 +0200 @@ -1,3 +1,15 @@ +2021-09-29, LibOFX 0.10.3: + + - #45: fix gmt offset seconds + - #44: fix various typos in source code + - fix win32 build failure + +2021-04-23, LibOFX 0.10.2: + + - #41: Improved imported date stability, see gnucash bug + 797848 and gnucash bug 636340. + - #40: Respect --libdir for opensp. Don't override docdir. + 2021-01-25, LibOFX 0.10.1: - Issue #37 fixed: Correct casting of iconv input argument @@ -101,7 +113,7 @@ 2013-04-17, LibOFX 0.9.8: - - Fix errorneous reading of files with empty lines + - Fix erroneous reading of files with empty lines - bug#24: Fix build error on solaris. @@ -109,7 +121,7 @@ 2013-04-11, LibOFX 0.9.7: - - Fix errorneous reading of files with long lines + - Fix erroneous reading of files with long lines 2013-03-30, LibOFX 0.9.6: @@ -119,7 +131,7 @@ - Patch by Geert Janssens to fix typo in info message - Patch by Geert Janssens to allow lines longer than 1024 - caracters + characters - Fix treatment of empty date strings: Must return a zero date instead of a bogus one. @@ -141,7 +153,7 @@ - Workaround OFX files specifying invalid encoding values (specifically: UNICODE and CP1252). This should fix most encoding problems reported. - - Look for DTD in source directory (simplifies developpement) + - Look for DTD in source directory (simplifies development) Christian Stimming <christ...@cstimming.de> - Add minor argument checking - Expose field: OfxSecurityData::fiid in API @@ -169,7 +181,7 @@ LibOFX 0.9.2: - Win32: Add gnucash patch that looks up the dtd installation directory from the current executable's location. - Apply patch by Geert Janssens to fix a crash on invalid date format - - Apply patch by ajseward with some additional fixes to allow wraping the library in python. + - Apply patch by ajseward with some additional fixes to allow wrapping the library in python. - Apply patch by Thomas Baumgart which fixes bug #5 (Transaction posting date off by one) - Apply patch by Bill Nottingham <nott...@redhat.com> with various C++ include fixes for building with recent compilers. @@ -221,7 +233,7 @@ LibOFX 0.6.6: -Important code cleanup in the parsing code. The parser should be much more independent of OpenSP default settings. Should get rid of "end tag for "MEMO" omitted, but OMITTAG NO was specified" type messages and many other parser failures. - -The very old OpenSP 1.3.1 will probably no longuer work. + -The very old OpenSP 1.3.1 will probably no longer work. -Fix an infinite loop in some circumstances while the library was searching for a parent statement for a transaction. Would mostly manifest on complex investments transactions. Thanks to stephen.a.prior A T ntlworld.ie for the catch. -Implement displaying file line numbers in the error output. Note that data won't be valid if the message occurs before the file is opened. @@ -253,17 +265,17 @@ -Full investment transaction support (ofx2qif not yet updated however). -Now uses an Autoconf/Automake build system. -Proprietary tag striper is now much smarter and read routines have been corrected. Importing a file written on a single line will no longer cause an infinite loop. - -Added yet more spagetti code and global variables to improve the work around for OpenSP 1.3 bugs. I beg of you, please convince your distro to make openjade and the OpenSP library independently upgradable. + -Added yet more spaghetti code and global variables to improve the work around for OpenSP 1.3 bugs. I beg of you, please convince your distro to make openjade and the OpenSP library independently upgradable. LibOFX 0.5: -Alpha version, released to accompany the new GnuCash 1.7.1 alpha release. -Add an account_name to the OfxAccountData struct. It contains a human readable identifier of the account. -Include file location seems to have changed in recent versions of OpenSP. Included old and new case. - -Profiling now possible. It is now posible to use "make static". Statically linked ofxdump and ofx2qif will be created, with profiling enabled. + -Profiling now possible. It is now possible to use "make static". Statically linked ofxdump and ofx2qif will be created, with profiling enabled. -Basic work for investment account and securities. LibOFX 0.3: -MUCH improved documentation. Full API and internals reference in doc/html/ - -Major update to ofx2qif. It will now generate the !Account QIF construct, which should improbe compatibility with other accounting software. + -Major update to ofx2qif. It will now generate the !Account QIF construct, which should improve compatibility with other accounting software. -gcc3.2 caused problems with ld, now use gcc to link. Should solve the "undefined symbol:__dso_handle" runtime problem with Mandrake cooker. -There is now a workaround in the code to make it work with the OpenSP version (1.3.4) distributed with OpenJADE. However, this is not guaranteed to work, and it might cause errors in your financial data, and might not be present in future versions. Use at your own risk, you've been warned. -LibOFX can now be installed in "unorthodox" directories, such as ~/experimental, and still find it's dtd. You must modify the prefix in common.m (recommended) or put it in the command line of BOTH make and make install. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libofx-0.10.1/README new/libofx-0.10.3/README --- old/libofx-0.10.1/README 2021-01-25 22:10:19.000000000 +0100 +++ new/libofx-0.10.3/README 2021-09-29 22:12:28.000000000 +0200 @@ -11,7 +11,7 @@ usage: `ofxdump` _path_to_ofx_file_`/`_ofx_filename_ **ofx2qif**:\ -ofx2qif is a OFX "file" to QIF (Quicken Interchange Format) converter. It was written as a C code example, and as a way for LibOFX to immediately provide something usefull, as an incentive for people to try out the library. It is not recommended that financial software use the output of this utility for OFX support. The QIF file format is very primitive, and much information is lost. The utility curently supports every transaction tags of the qif format except the address lines, and supports many of the tags of `!Account`. It should generate QIF files that will import sucessfully in just about every software with QIF support. +ofx2qif is a OFX "file" to QIF (Quicken Interchange Format) converter. It was written as a C code example, and as a way for LibOFX to immediately provide something useful, as an incentive for people to try out the library. It is not recommended that financial software use the output of this utility for OFX support. The QIF file format is very primitive, and much information is lost. The utility currently supports every transaction tags of the qif format except the address lines, and supports many of the tags of `!Account`. It should generate QIF files that will import successfully in just about every software with QIF support. I do not plan on working on this utility much further, but I would be more than happy to accept contributions.\ usage: `ofx2qif` _path_to_ofx_file_`/`_ofx_filename_ `>` _output_filename_`.qif` diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libofx-0.10.1/configure.ac new/libofx-0.10.3/configure.ac --- old/libofx-0.10.1/configure.ac 2021-01-25 22:10:19.000000000 +0100 +++ new/libofx-0.10.3/configure.ac 2021-09-29 22:12:28.000000000 +0200 @@ -17,7 +17,7 @@ LIBOFX_MAJOR_VERSION=0 LIBOFX_MINOR_VERSION=10 -LIBOFX_MICRO_VERSION=1 +LIBOFX_MICRO_VERSION=3 # this number is just incremented for every major change in CVS, also across # releases to emulate the Revision variable of SVN (which isn't available # with CVS) @@ -112,7 +112,7 @@ [ --with-opensp-libs=PATH specify where to look for libosp - default is /usr/lib], OPENSPLIBPATH="$with_opensp_libs", - OPENSPLIBPATH="/usr/lib") + OPENSPLIBPATH="${libdir}") echo $OPENSPLIBPATH for d in /usr/include/OpenSP /usr/local/include/OpenSP /usr/include/sp/generic /usr/local/include/sp/generic; do diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libofx-0.10.1/doc/Makefile.am new/libofx-0.10.3/doc/Makefile.am --- old/libofx-0.10.1/doc/Makefile.am 2021-01-25 22:10:19.000000000 +0100 +++ new/libofx-0.10.3/doc/Makefile.am 2021-09-29 22:12:28.000000000 +0200 @@ -1,7 +1,5 @@ SUBDIRS = -docdir = ${prefix}/share/doc/libofx - EXTRA_DIST = \ doxygen.cfg \ ofx_sample_files \ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libofx-0.10.1/doc/main_doc.c new/libofx-0.10.3/doc/main_doc.c --- old/libofx-0.10.1/doc/main_doc.c 2021-01-25 22:10:19.000000000 +0100 +++ new/libofx-0.10.3/doc/main_doc.c 2021-09-29 22:12:28.000000000 +0200 @@ -5,7 +5,7 @@ This is the documentation for the LibOFX library and it's utilities. It should always be up to date since it is generated directly from the source files using Doxygen. This documentation covers the internals as well as the API of libofx. Before you dive into this documentation, you should have read the README and the other files included at the top level of the distribution. \section quicklinks Quick links -These are the most important sections of the doc. The rest covers the library internals and is a work in progress. The documentation for the different functions is mostly complete, but documention for the objects is not. +These are the most important sections of the doc. The rest covers the library internals and is a work in progress. The documentation for the different functions is mostly complete, but documentation for the objects is not. \subsection api API documentation If you are only interested in the API. It's covered entirely in the libofx.h section. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libofx-0.10.1/dtd/ofc.dtd new/libofx-0.10.3/dtd/ofc.dtd --- old/libofx-0.10.1/dtd/ofc.dtd 2021-01-25 22:10:19.000000000 +0100 +++ new/libofx-0.10.3/dtd/ofc.dtd 2021-09-29 22:12:28.000000000 +0200 @@ -27,7 +27,7 @@ model. These entity tags will never occur in the OFC document instance itself. - The formating rules are described in the + The formatting rules are described in the OFC Build & Parse Specification, which can be obtained from Microsoft. --> @@ -45,7 +45,7 @@ <!ENTITY % NUMSTR "(#PCDATA)"> <!-- ID: Used for specifying a unique id. - Must be composed of alpha-numeric + Must be composed of alphanumeric characters. It may contain the following delimiters: ()-,.;:/\# as well as spaces. @@ -110,7 +110,7 @@ If the user is new to the system, the response must contain values for OFC services available on this server, as well as the default days to pay and the default days - before withdrawl on new payees, when using the + before withdrawal on new payees, when using the U.S. payment service model. The server returns the SESSKEY to be used during the next OFC HTTP session. --> @@ -143,7 +143,7 @@ <!ELEMENT TRNRS - o (CLTID, STATUS, ERROR?, (STMTRS | INTRARS | INTERRS | PAYMTRS | PAYIQRS)?)> -<!-- Account Statement: This is used for statment +<!-- Account Statement: This is used for statement downloads and file exchange. --> <!ELEMENT ACCTSTMT - o (ACCTFROM, STMTRS)> @@ -153,7 +153,7 @@ <!-- *************************************************************** --> <!-- Account Transaction: Sent to enable or change services - for a paticular account belonging to a user. + for a particular account belonging to a user. --> <!ELEMENT ACCTRQ - o (ACCTFROM, (SERVRQST+))> <!ELEMENT ACCTRS - o (SERVAUTH+)> @@ -166,7 +166,7 @@ <!ELEMENT PAYEERS - o (PAYEEID, PAYEE?, DAYSREQD, DAYSWITH)> <!-- Mail Transaction: Sent to inquire about - services for a paticular account belonging to + services for a particular account belonging to a user. --> <!ELEMENT MAILRQ - o (SERVICE, ACCTFROM?, (MEMO+))> @@ -191,7 +191,7 @@ an intra-bank transfer. If the server returns a status indicating success, and no date/time is specified, it will be assumed the funds are - immeadiately available. The user's account + immediately available. The user's account must have been previously enabled for banking services using the ACCTRQ/ACCTRS transactions. --> @@ -204,7 +204,7 @@ an inter-bank transfer. If the server returns a status indicating success, and no date/time is specified, it will be assumed the funds are - immeadiately available. The user's account + immediately available. The user's account must have been previously enabled for bill payment services using the ACCTRQ/ACCTRS transactions. The NAME and PAYACCT fields are for the "payee" @@ -341,7 +341,7 @@ should verify that this is a crash recovery by comparing the session key against the key of the previous session. If the keys match, then it can be - assumed that the client did not recieve the + assumed that the client did not receive the transaction response of the previous session, and return the response transactions of the previous session. This key is always assigned by the @@ -395,7 +395,7 @@ 1, request rejected 2, account pending 3, account closed - 4, no CLTID (unsolicitied transaction) + 4, no CLTID (unsolicited transaction) 5, password change required error status @@ -463,7 +463,7 @@ 3, Money Market 4, Credit Line 5, Loan - 6, Inter-bank tranfer payee + 6, Inter-bank transfer payee 7, Other --> <!ELEMENT ACCTTYPE - o %NUMSTR> @@ -477,11 +477,11 @@ 3, Dividend 4, Service Charge 5, Deposit - 6, ATM Withdrawl + 6, ATM Withdrawal 7, Transfer 8, Check 9, Electronic Payment - 10, Cash Withdrawl + 10, Cash Withdrawal 11, Electronic Payroll Deposit 12, Other --> @@ -509,7 +509,7 @@ --> <!ELEMENT DAYSREQD - o %NUMSTR> -<!-- Withdrawl date: Used for specifying the number of +<!-- Withdrawal date: Used for specifying the number of days before funds will be withdarwn from a user's account prior to the due date of the payment. --> @@ -550,13 +550,13 @@ <!-- Service: Used for specifying a service. These services are either banking services, - or billpayment services. + or billpayment services. 0, Banking Services 1, Billpay Services (Service Model) - 2. Payee Id/Acct Info (Interbank Tranfer Model) - 3. Payee Id Only (Interbank Tranfer Model) - 4. Acct Info Only (Interbank Tranfer Model) + 2. Payee Id/Acct Info (Interbank Transfer Model) + 3. Payee Id Only (Interbank Transfer Model) + 4. Acct Info Only (Interbank Transfer Model) --> <!ELEMENT SERVICE - o %NUMSTR> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libofx-0.10.1/dtd/ofx160.dtd new/libofx-0.10.3/dtd/ofx160.dtd --- old/libofx-0.10.1/dtd/ofx160.dtd 2021-01-25 22:10:19.000000000 +0100 +++ new/libofx-0.10.3/dtd/ofx160.dtd 2021-09-29 22:12:28.000000000 +0200 @@ -265,7 +265,7 @@ <!ENTITY % EXTDPMTFORENUM "(#PCDATA)"> <!--#ENTITY % EXTDPMTFORENUM #Enum("INDIVIDUAL","BUSINESS")--> <!ENTITY % COUPONFREQENUM "(#PCDATA)"> -<!--#ENTITY % COUPONFREQENUM #Enum("MONTHLY","QUARTERLY","SEMIANNUALLY","ANUALLY","OTHER")--> +<!--#ENTITY % COUPONFREQENUM #Enum("MONTHLY","QUARTERLY","SEMIANNUALLY","ANNUALLY","OTHER")--> <!ENTITY % CHARTYPEENUM "(#PCDATA)"> <!--#ENTITY % CHARTYPEENUM #Enum("ALPHAONLY","NUMERICONLY","ALPHAORNUMERIC","ALPHAANDNUMERIC")--> <!ENTITY % BALANCEENUM "(#PCDATA)"> @@ -276,7 +276,7 @@ <!--#ENTITY % ACCOUNTENUM2 #Enum("CHECKING","SAVINGS","MONEYMRKT","CREDITLINE","CMA")--> <!ENTITY % FREQENUM "(#PCDATA)"> <!--#ENTITY % FREQENUM #Enum("WEEKLY","BIWEEKLY","TWICEMONTHLY","MONTHLY","FOURWEEKS","BIMONTHLY", - "QUARTERLY","SEMIANNUALLY","TRIANNUALLY","ANUALLY")--> + "QUARTERLY","SEMIANNUALLY","TRIANNUALLY","ANNUALLY")--> <!ENTITY % DAYSENUM "(#PCDATA)"> <!--#ENTITY % DAYSENUM #Enum("MONDAY","TUESDAY","WEDNESDAY","THURSDAY","FRIDAY", "SATURDAY","SUNDAY")--> @@ -859,7 +859,7 @@ <!--#ELEMENT STPCHKSYNCRQ #Link(TOKEN2,BANKMSGSRQV2)--> -<!-- intrabank transfer sychronization request, v2 adds ccacctfrom --> +<!-- intrabank transfer synchronization request, v2 adds ccacctfrom --> <!-- OFX 1.5 --> <!-- FROM BANKACCTFROM to (BANKACCTFROM | CCACCTFROM) --> <!ELEMENT INTRASYNCRQ - - (%SYNCRQMACRO , (BANKACCTFROM | CCACCTFROM), INTRATRNRQ*)> @@ -1398,7 +1398,7 @@ <!ELEMENT DFLTDAYSTOPAY - o %DAYSPANTYPE> <!-- the default number of days to pay --> <!ELEMENT XFERDAYSWITH - o %DAYSPANTYPE> <!-- number of days before the processing date that funds are withdrawn for xfers--> <!ELEMENT XFERDFLTDAYSTOPAY - o %DAYSPANTYPE> <!-- the default number of days to pay for transfers--> -<!ELEMENT POSTPROCWND - o %DAYSPANTYPE> <!-- the number of days after a transaction is processed that it is acessible +<!ELEMENT POSTPROCWND - o %DAYSPANTYPE> <!-- the number of days after a transaction is processed that it is accessible for status inquiries --> <!ELEMENT STSVIAMODS - o %BOOLTYPE> <!-- server supports communication of server-initiated payment status changes via the PMTMODRS --> @@ -2288,7 +2288,7 @@ <!ELEMENT INVSTMTRS - - (DTASOF , CURDEF , INVACCTFROM , INVTRANLIST? , INVPOSLIST? , INVBAL? , INVOOLIST? , MKTGINFO?) > -<!-- Marketing Mesage --> +<!-- Marketing Message --> <!ELEMENT MKTVAL - O %AMTTYPE > <!-- ** Transaction List ** --> @@ -2493,7 +2493,7 @@ <!ELEMENT DENOMINATOR - O %AMTTYPE > -<!-- Amount of cash recieved from fractional shares --> +<!-- Amount of cash received from fractional shares --> <!ELEMENT FRACCASH - O %AMTTYPE > <!-- ** Transfer Transaction ** --> @@ -3045,7 +3045,7 @@ )"> <!-- OFX 1.6 correction: Disallow an empty <MSGSETLIST> by requiring one or - more occurances of the %MSGSETMACRO contents. + more occurrences of the %MSGSETMACRO contents. Also, make <SIGNONMSGSET> and <PROFMSGSET> required. --> <!ELEMENT MSGSETLIST - - ( ((( SIGNONMSGSET, (%MSGSETMACRO)+, PROFMSGSET ) | diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libofx-0.10.1/dtd/ofx201.dtd new/libofx-0.10.3/dtd/ofx201.dtd --- old/libofx-0.10.1/dtd/ofx201.dtd 2021-01-25 22:10:19.000000000 +0100 +++ new/libofx-0.10.3/dtd/ofx201.dtd 2021-09-29 22:12:28.000000000 +0200 @@ -581,7 +581,7 @@ <!ENTITY % COUPONFREQENUM "(#PCDATA)"> -<!--#ENTITY % COUPONFREQENUM #Enum("MONTHLY","QUARTERLY","SEMIANNUALLY","ANUALLY","OTHER")--> +<!--#ENTITY % COUPONFREQENUM #Enum("MONTHLY","QUARTERLY","SEMIANNUALLY","ANNUALLY","OTHER")--> <!ENTITY % CHARTYPEENUM "(#PCDATA)"> @@ -605,7 +605,7 @@ <!--#ENTITY % FREQENUM #Enum("WEEKLY","BIWEEKLY","TWICEMONTHLY","MONTHLY","FOURWEEKS","BIMONTHLY", - "QUARTERLY","SEMIANNUALLY","TRIANNUALLY","ANUALLY")--> + "QUARTERLY","SEMIANNUALLY","TRIANNUALLY","ANNUALLY")--> <!ENTITY % DAYSENUM "(#PCDATA)"> @@ -1771,7 +1771,7 @@ <!-- The default njumber of days to pay for transfers --> <!ELEMENT XFERDFLTDAYSTOPAY %DAYSPANTYPE;> -<!-- The number of days after a transaction is processed that it is acessible for status inquiries --> +<!-- The number of days after a transaction is processed that it is accessible for status inquiries --> <!ELEMENT POSTPROCWND %DAYSPANTYPE;> <!-- server supports communication of server-initiated payment status changes via the PMTMODRS --> @@ -2810,7 +2810,7 @@ <!ELEMENT DENOMINATOR %AMTTYPE; > -<!-- Amount of cash recieved from fractional shares --> +<!-- Amount of cash received from fractional shares --> <!ELEMENT FRACCASH %AMTTYPE; > @@ -4545,7 +4545,7 @@ <!ELEMENT INTINCOME %AMTTYPE;> -<!-- Early withdrawl penalty, amount --> +<!-- Early withdrawal penalty, amount --> <!ELEMENT ERLWITHPEN %AMTTYPE;> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libofx-0.10.1/inc/libofx.h.in new/libofx-0.10.3/inc/libofx.h.in --- old/libofx-0.10.1/inc/libofx.h.in 2021-01-25 22:10:19.000000000 +0100 +++ new/libofx-0.10.3/inc/libofx.h.in 2021-09-29 22:12:28.000000000 +0200 @@ -18,7 +18,7 @@ * Important note: The variables associated with every data element have a *_valid companion. Always check that data_valid == true before using. - Not only will you ensure that the data is meaningfull, but also that + Not only will you ensure that the data is meaningful, but also that pointers are valid and strings point to a null terminated string. Elements listed as mandatory are for information purpose only, do not trust the bank not to send you non-conforming data... @@ -113,9 +113,9 @@ LibofxContextPtr libofx_get_new_context(); /** - * \brief Free all ressources used by this context. + * \brief Free all resources used by this context. * - @return 0 if successfull. + @return 0 if successful. */ int libofx_free_context( LibofxContextPtr ); @@ -203,7 +203,7 @@ * \brief An abstraction of an OFX STATUS element. * * The OfxStatusData structure represents a STATUS OFX element sent by the - OFX server. Be carefull, you do not have much context except the entity + OFX server. Be careful, you do not have much context except the entity name so your application should probably ignore this status if code==0. However, you should display a message if the status in non-zero, since an error probably occurred on the server side. @@ -252,7 +252,7 @@ /** - * \brief The callback function for the OfxStatusData stucture. + * \brief The callback function for the OfxStatusData structure. * * An ofx_proc_status_cb event is sent everytime the server has * generated a OFX STATUS element. As such, it could be received at @@ -285,7 +285,7 @@ <BANKID><BRANCHID><ACCTID> for a bank account, and <ACCTID><ACCTKEY> for a credit card account. account_id is meant to be computer-readable. It is a worldwide OFX unique - identifier wich can be used for account matching, even in + identifier which can be used for account matching, even in system with multiple users.*/ char account_id[OFX_ACCOUNT_ID_LENGTH]; @@ -293,7 +293,7 @@ identify the account. Currently it is <ACCTID> for a bank account and a credit card account an <BROKERID>:<ACCTID> for investment accounts. account_id_name is not meant to be - computer-readable and is not garanteed to be unique.*/ + computer-readable and is not guaranteed to be unique.*/ char account_name[OFX_ACCOUNT_NAME_LENGTH]; int account_id_valid;/* Use for both account_id and account_name */ @@ -333,7 +333,7 @@ }; /** - * \brief The callback function for the OfxAccountData stucture. + * \brief The callback function for the OfxAccountData structure. * * The ofx_proc_account_cb event is always generated first, to allow * the application to create accounts or ask the user to match an @@ -351,7 +351,7 @@ /** * \brief An abstraction of a security, such as a stock, mutual fund, etc. * - * The OfxSecurityData stucture is used to hold the security + * The OfxSecurityData structure is used to hold the security * information inside a OfxTransactionData struct for investment * transactions. */ @@ -605,7 +605,7 @@ };/* end struct OfxSecurityData */ /** - * \brief The callback function for the OfxSecurityData stucture. + * \brief The callback function for the OfxSecurityData structure. * * An ofx_proc_security_cb event is generated for any securities * listed in the ofx file. It is generated after ofx_proc_statement @@ -676,7 +676,7 @@ /** * \brief An abstraction of a transaction in an account. * - * The OfxTransactionData stucture contains all available + * The OfxTransactionData structure contains all available * information about an actual transaction in an account. */ struct OfxTransactionData @@ -782,7 +782,7 @@ /** The check number is most likely an integer and can probably be converted properly with atoi(). However the spec allows for up to - 12 digits, so it is not garanteed to work */ + 12 digits, so it is not guaranteed to work */ char check_number[OFX_CHECK_NUMBER_LENGTH]; int check_number_valid; @@ -1035,7 +1035,7 @@ }; /** - * \brief The callback function for the OfxTransactionData stucture. + * \brief The callback function for the OfxTransactionData structure. * * An ofx_proc_transaction_cb event is generated for every * transaction in the ofx response, after ofx_proc_statement (and @@ -1076,7 +1076,7 @@ int account_id_valid; /** The actual balance, according to the FI. The user should be warned - of any discrepency between this and the balance in the application */ + of any discrepancy between this and the balance in the application */ double ledger_balance; int ledger_balance_valid; @@ -1100,15 +1100,15 @@ time_t available_balance_date;/**< Time of the available_balance snapshot */ int available_balance_date_valid; - /** Investment acccount margin balance */ + /** Investment account margin balance */ double margin_balance; int margin_balance_valid; - /** Investment acccount short balance */ + /** Investment account short balance */ double short_balance; int short_balance_valid; - /** Investment acccount buying power */ + /** Investment account buying power */ double buying_power; int buying_power_valid; @@ -1133,7 +1133,7 @@ }; /** - * \brief The callback function for the OfxStatementData stucture. + * \brief The callback function for the OfxStatementData structure. * * The ofx_proc_statement_cb event is sent after all ofx_proc_transaction events have been sent. An OfxStatementData is passed to this event, as well as @@ -1154,7 +1154,7 @@ /** * \brief An abstraction of a security position held in an account. * - * The OfxPositionData stucture is used to hold the position + * The OfxPositionData structure is used to hold the position * information inside a OfxPositionContainer class for investment * positions. */ @@ -1261,7 +1261,7 @@ }; /** - * \brief The callback function for the OfxPositionData stucture. + * \brief The callback function for the OfxPositionData structure. * * The ofx_proc_statement_cb event is sent after all ofx_proc_transaction * events have been sent. An OfxStatementData is passed to this event, as well as diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libofx-0.10.1/lib/file_preproc.hh new/libofx-0.10.3/lib/file_preproc.hh --- old/libofx-0.10.1/lib/file_preproc.hh 2021-01-25 22:10:19.000000000 +0100 +++ new/libofx-0.10.3/lib/file_preproc.hh 2021-09-29 22:12:28.000000000 +0200 @@ -24,7 +24,7 @@ * \brief libofx_detect_file_type tries to analyze a file to determine it's format. * @param p_filename File name of the file to process - @return Detected file format, UNKNOWN if unsuccessfull. + @return Detected file format, UNKNOWN if unsuccessful. */ enum LibofxFileFormat libofx_detect_file_type(const char * p_filename); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libofx-0.10.1/lib/ofc_sgml.cpp new/libofx-0.10.3/lib/ofc_sgml.cpp --- old/libofx-0.10.1/lib/ofc_sgml.cpp 2021-01-25 22:10:19.000000000 +0100 +++ new/libofx-0.10.3/lib/ofc_sgml.cpp 2021-09-29 22:12:28.000000000 +0200 @@ -5,7 +5,7 @@ email : beno...@coeus.ca ***************************************************************************/ /**@file - \brief OFX/SGML parsing functionnality. + \brief OFX/SGML parsing functionality. * Almost all of the SGML parser specific code is contained in this file (some is in messages.cpp and ofx_utilities.cpp). To understand this file you must read the documentation of OpenSP's generic interface: see http://openjade.sourceforge.net/ */ @@ -195,7 +195,7 @@ { /* The element was a data element. OpenSP will call one or several data() callback with the data */ message_out (PARSER, "Data element " + identifier + " found"); - /* There is a bug in OpenSP 1.3.4, which won't send endElement Event for some elements, and will instead send an error like "document type does not allow element "MESSAGE" here". Incoming_data should be empty in such a case, but it will not be if the endElement event was skiped. So we empty it, so at least the last element has a chance of having valid data */ + /* There is a bug in OpenSP 1.3.4, which won't send endElement Event for some elements, and will instead send an error like "document type does not allow element "MESSAGE" here". Incoming_data should be empty in such a case, but it will not be if the endElement event was skipped. So we empty it, so at least the last element has a chance of having valid data */ if (incoming_data != "") { message_out (ERROR, "startElement: incoming_data should be empty! You are probably using OpenSP <= 1.3.4. The following data was lost: " + incoming_data ); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libofx-0.10.1/lib/ofc_sgml.hh new/libofx-0.10.3/lib/ofc_sgml.hh --- old/libofx-0.10.1/lib/ofc_sgml.hh 2021-01-25 22:10:19.000000000 +0100 +++ new/libofx-0.10.3/lib/ofc_sgml.hh 2021-09-29 22:12:28.000000000 +0200 @@ -6,7 +6,7 @@ email : beno...@coeus.ca ***************************************************************************/ /** @file - * \brief OFX/SGML parsing functionnality. + * \brief OFX/SGML parsing functionality. */ /*************************************************************************** * * diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libofx-0.10.1/lib/ofx_containers.hh new/libofx-0.10.3/lib/ofx_containers.hh --- old/libofx-0.10.1/lib/ofx_containers.hh 2021-01-25 22:10:19.000000000 +0100 +++ new/libofx-0.10.3/lib/ofx_containers.hh 2021-09-29 22:12:28.000000000 +0200 @@ -34,7 +34,7 @@ { public: string type;/**< The type of the object, often == tag_identifier */ - string tag_identifier; /**< The identifer of the creating tag */ + string tag_identifier; /**< The identifier of the creating tag */ OfxGenericContainer *parentcontainer; LibofxContext *libofx_context; @@ -61,7 +61,7 @@ /** \brief Add this container to the main tree. * add_to_main_treegen_event will add the container to the main trees stored int the OfxMainContainer. - \return true if successfull, false otherwise. + \return true if successful, false otherwise. */ virtual int add_to_main_tree(); @@ -271,7 +271,7 @@ /** \brief Represents a bank or credid card transaction. * - Built from the diferent investment transaction OFX entity + Built from the different investment transaction OFX entity */ class OfxInvestmentTransactionContainer: public OfxTransactionContainer { @@ -286,7 +286,7 @@ ***************************************************************************/ /** \brief The root container. Created by the <OFX> OFX element or by the export functions. * - The OfxMainContainer maintains trees of processed ofx data structures which can be used to generate events in the right order, and eventually export in OFX and QIF formats and even generate matching OFX querys. + The OfxMainContainer maintains trees of processed ofx data structures which can be used to generate events in the right order, and eventually export in OFX and QIF formats and even generate matching OFX queries. */ class OfxMainContainer: public OfxGenericContainer { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libofx-0.10.1/lib/ofx_error_msg.hh new/libofx-0.10.3/lib/ofx_error_msg.hh --- old/libofx-0.10.1/lib/ofx_error_msg.hh 2021-01-25 22:10:19.000000000 +0100 +++ new/libofx-0.10.3/lib/ofx_error_msg.hh 2021-09-29 22:12:28.000000000 +0200 @@ -6,7 +6,7 @@ email : beno...@coeus.ca ***************************************************************************/ /**@file - * \brief OFX error code management functionnality. + * \brief OFX error code management functionality. */ /*************************************************************************** * * @@ -123,9 +123,9 @@ { -1, "Unknown code", "The description of this code is unknown to libOfx"} }; -///Retreive error code descriptions +///Retrieve error code descriptions /** - The find_error_msg function will take an ofx error number, and return an ErrorMsg structure with detailled information about the error, including the error name and long description + The find_error_msg function will take an ofx error number, and return an ErrorMsg structure with detailed information about the error, including the error name and long description */ const ErrorMsg find_error_msg(int param_code) { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libofx-0.10.1/lib/ofx_preproc.cpp new/libofx-0.10.3/lib/ofx_preproc.cpp --- old/libofx-0.10.1/lib/ofx_preproc.cpp 2021-01-25 22:10:19.000000000 +0100 +++ new/libofx-0.10.3/lib/ofx_preproc.cpp 2021-09-29 22:12:28.000000000 +0200 @@ -581,7 +581,7 @@ } } #endif - /* Search in environement variable OFX_DTD_PATH */ + /* Search in environment variable OFX_DTD_PATH */ env_dtd_path = getenv("OFX_DTD_PATH"); if (env_dtd_path) { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libofx-0.10.1/lib/ofx_sgml.cpp new/libofx-0.10.3/lib/ofx_sgml.cpp --- old/libofx-0.10.1/lib/ofx_sgml.cpp 2021-01-25 22:10:19.000000000 +0100 +++ new/libofx-0.10.3/lib/ofx_sgml.cpp 2021-09-29 22:12:28.000000000 +0200 @@ -5,7 +5,7 @@ email : beno...@coeus.ca ***************************************************************************/ /**@file - \brief OFX/SGML parsing functionnality. + \brief OFX/SGML parsing functionality. * Almost all of the SGML parser specific code is contained in this file (some is in messages.cpp and ofx_utilities.cpp). To understand this file you must read the documentation of OpenSP's generic interface: see http://openjade.sourceforge.net/ */ @@ -251,7 +251,7 @@ { /* The element was a data element. OpenSP will call one or several data() callback with the data */ message_out (PARSER, "Data element " + identifier + " found"); - /* There is a bug in OpenSP 1.3.4, which won't send endElement Event for some elements, and will instead send an error like "document type does not allow element "MESSAGE" here". Incoming_data should be empty in such a case, but it will not be if the endElement event was skiped. So we empty it, so at least the last element has a chance of having valid data */ + /* There is a bug in OpenSP 1.3.4, which won't send endElement Event for some elements, and will instead send an error like "document type does not allow element "MESSAGE" here". Incoming_data should be empty in such a case, but it will not be if the endElement event was skipped. So we empty it, so at least the last element has a chance of having valid data */ if (incoming_data != "") { message_out (ERROR, "startElement: incoming_data should be empty! You are probably using OpenSP <= 1.3.4. The following data was lost: " + incoming_data ); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libofx-0.10.1/lib/ofx_sgml.hh new/libofx-0.10.3/lib/ofx_sgml.hh --- old/libofx-0.10.1/lib/ofx_sgml.hh 2021-01-25 22:10:19.000000000 +0100 +++ new/libofx-0.10.3/lib/ofx_sgml.hh 2021-09-29 22:12:28.000000000 +0200 @@ -6,7 +6,7 @@ email : beno...@coeus.ca ***************************************************************************/ /** @file - * \brief OFX/SGML parsing functionnality. + * \brief OFX/SGML parsing functionality. */ /*************************************************************************** * * diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libofx-0.10.1/lib/ofx_utilities.cpp new/libofx-0.10.3/lib/ofx_utilities.cpp --- old/libofx-0.10.1/lib/ofx_utilities.cpp 2021-01-25 22:10:19.000000000 +0100 +++ new/libofx-0.10.3/lib/ofx_utilities.cpp 2021-09-29 22:12:28.000000000 +0200 @@ -30,6 +30,8 @@ #ifdef __WIN32__ # define DIRSEP "\\" +/* MSWin calls it _mkgmtime instead of timegm */ +# define timegm(tm) _mkgmtime(tm) #else # define DIRSEP "/" #endif @@ -90,137 +92,72 @@ return dest; } -/* Since we don't know for an arbitrary date-time whether or not it represents daylight time and we have to tell mktime something, we tell it yes if the current environment's TZ uses daylight time. If mktime finds that the supplied date-time isn't in daylight time for that time zone, it will adjust the struct tm to reflect the same time-point in not-daylight time and correct the value of tm_isdst. We check for that change and if it happens restore timeptr's date and time values and call mktime again with the correct value of tm_isdst. */ -static time_t -checked_mktime(struct tm* timeptr) -{ - int is_dst = timeptr->tm_isdst; - int min = timeptr->tm_min; - int hour = timeptr->tm_hour; - int mday = timeptr->tm_mday; - int mon = timeptr->tm_mon; - int year = timeptr->tm_year; - time_t result = mktime(timeptr); - if (is_dst == timeptr->tm_isdst) // mktime didn't change it, OK to use the result. - return result; - - //Restore the date & time to what it was, but use the new isdst value: - timeptr->tm_min = min; - timeptr->tm_hour = hour; - timeptr->tm_mday = mday; - timeptr->tm_mon = mon; - timeptr->tm_year = year; - return mktime(timeptr); -} - /** * Converts a date from the YYYYMMDDHHMMSS.XXX[gmt offset:tz name] OFX format (see OFX 2.01 spec p.66) to a C time_t. * @param ofxdate date from the YYYYMMDDHHMMSS.XXX[gmt offset:tz name] OFX format * @return C time_t in the local time zone * @note - * @li The library always returns the time in the systems local time - * @li OFX defines the date up to the millisecond. The library ignores those milliseconds, since ANSI C does not handle such precision cleanly. The date provided by LibOFX is precise to the second, assuming that information this precise was provided in the ofx file. So you wont know the millisecond you were ruined... - - * @note DEVIATION FROM THE SPECS : The OFX specifications (both version 1.6 and 2.02) state that a client should assume that if the server returns a date without ??? specific time, we assume it means 0h00 GMT. As such, when we apply the local timezone and for example you are in the EST timezone, we will remove 5h, and the transaction will have occurred on the prior day! This is probably not what the bank intended (and will lead to systematic errors), but the spec is quite explicit in this respect (Ref: OFX 2.01 spec pp. 66-68)<BR><BR> - * To solve this problem (since usually a time error is relatively unimportant, but date error is), and to avoid problems in Australia caused by the behaviour in libofx up to 0.6.4, it was decided starting with 0.6.5 to use the following behavior:<BR><BR> - * -No specific time is given in the file (date only): Considering that most banks seem to be sending dates in this format represented as local time (not compliant with the specs), the transaction is assumed to have occurred 11h59 (just before noon) LOCAL TIME. This way, we should never change the date, since you'd have to travel in a timezone at least 11 hours backwards or 13 hours forward from your own to introduce mistakes. However, if you are in timezone +13 or +14, and your bank meant the data to be interpreted by the spec, you will get the wrong date. We hope that banks in those timezone will either represent in local time like most, or specify the timezone properly.<BR><BR> - * -No timezone is specified, but exact time is, the same behavior is mostly used, as many banks just append zeros instead of using the short notation. However, the time specified is used, even if 0 (midnight).<BR><BR> - * -When a timezone is specified, it is always used to properly convert in local time, following the spec. - * + * @li The library always returns the time in the system's local time + * @note: DEVIATION FROM THE OFX SPECIFICATION: + * @li: Specification permits timestamps with millisecond precision, but the normal C Library time functions support only second precision. + * @li: Many banks don't even specify a time, either by providing only an 8-character string (YYYYMMDD) or by presenting 0 for all the time values (i.e. midnight). In those cases we take that to mean that the time isn't significant and set it to a time that is nearly always the same day regardless of timezone: 10:59 UTC. This works in all timezones except -12 and +13. */ -time_t ofxdate_to_time_t(const string ofxdate) + time_t ofxdate_to_time_t(const string& ofxdate) { + if (ofxdate.empty()) + { + message_out(ERROR, "ofxdate_to_time_t(): Unable to convert time, string is 0 length!"); + return 0; + } + string ofxdate_whole = + ofxdate.substr(0, ofxdate.find_first_not_of("0123456789")); + + if (ofxdate_whole.size() < 8) + { + message_out(ERROR, "ofxdate_to_time_t(): Unable to convert time, string " + ofxdate + " is not in proper YYYYMMDDHHMMSS.XXX[gmt offset:tz name] format!"); + return std::time(NULL); + } + struct tm time; - double local_offset; /* in seconds */ - float ofx_gmt_offset; /* in fractional hours */ - char timezone[4]; /* Original timezone: the library does not expose this value*/ - char exact_time_specified = false; - char time_zone_specified = false; - string ofxdate_whole; - time_t temptime; - - std::time(&temptime); - local_offset = difftime(mktime(localtime(&temptime)), mktime(gmtime(&temptime))); - /* daylight is set to 1 if the timezone indicated by the environment (either TZ or /etc/localtime) uses daylight savings time (aka summer time). We use it here to provisionally set tm_isdst. */ - time.tm_isdst = daylight; - - if (ofxdate.size() != 0) - { - ofxdate_whole = ofxdate.substr(0, ofxdate.find_first_not_of("0123456789")); - if (ofxdate_whole.size() >= 8) - { - time.tm_year = atoi(ofxdate_whole.substr(0, 4).c_str()) - 1900; - time.tm_mon = atoi(ofxdate_whole.substr(4, 2).c_str()) - 1; - time.tm_mday = atoi(ofxdate_whole.substr(6, 2).c_str()); - - if (ofxdate_whole.size() > 8) - { - if (ofxdate_whole.size() == 14) - { - /* if exact time is specified */ - exact_time_specified = true; - time.tm_hour = atoi(ofxdate_whole.substr(8, 2).c_str()); - time.tm_min = atoi(ofxdate_whole.substr(10, 2).c_str()); - time.tm_sec = atoi(ofxdate_whole.substr(12, 2).c_str()); - } - else - { - message_out(WARNING, "ofxdate_to_time_t(): Successfully parsed date part, but unable to parse time part of string " + ofxdate_whole + ". It is not in proper YYYYMMDDHHMMSS.XXX[gmt offset:tz name] format!"); - } - } - - } - else - { - /* Catch invalid string format */ - message_out(ERROR, "ofxdate_to_time_t(): Unable to convert time, string " + ofxdate + " is not in proper YYYYMMDDHHMMSS.XXX[gmt offset:tz name] format!"); - return checked_mktime(&time); - } - - - /* Check if the timezone has been specified */ - string::size_type startidx = ofxdate.find("["); - string::size_type endidx; - if (startidx != string::npos) - { - /* Time zone was specified */ - time_zone_specified = true; - startidx++; - endidx = ofxdate.find(":", startidx) - 1; - ofx_gmt_offset = atof(ofxdate.substr(startidx, (endidx - startidx) + 1).c_str()); - startidx = endidx + 2; - STRNCPY(timezone, ofxdate.substr(startidx, 3)); - } - else - { - /* Time zone was not specified, assume GMT (provisionnaly) in case exact time is specified */ - ofx_gmt_offset = 0; - time.tm_isdst = 0; //GMT doesn't use daylight time. - strcpy(timezone, "GMT"); - } - - if (time_zone_specified == true) - { - /* If the timezone is specified always correct the timezone */ - /* If the timezone is not specified, but the exact time is, correct the timezone, assuming GMT following the spec */ - /* Correct the time for the timezone */ - time.tm_sec = time.tm_sec + (int)(local_offset - (ofx_gmt_offset * 60 * 60)); //Convert from fractionnal hours to seconds - } - else if (exact_time_specified == false) - { - /*Time zone data missing and exact time not specified, diverge from the OFX spec ans assume 11h59 local time */ - time.tm_hour = 11; - time.tm_min = 59; - time.tm_sec = 0; - } - return checked_mktime(&time); + memset(&time, 0, sizeof(tm)); + time.tm_year = atoi(ofxdate_whole.substr(0, 4).c_str()) - 1900; + time.tm_mon = atoi(ofxdate_whole.substr(4, 2).c_str()) - 1; + time.tm_mday = atoi(ofxdate_whole.substr(6, 2).c_str()); + + if (ofxdate_whole.size() < 14) + { + message_out(WARNING, "ofxdate_to_time_t(): Successfully parsed date part, but unable to parse time part of string " + ofxdate_whole + ". It is not in proper YYYYMMDDHHMMSS.XXX[gmt offset:tz name] format!"); } else { - message_out(ERROR, "ofxdate_to_time_t(): Unable to convert time, string is 0 length!"); - return 0; // MUST RETURN ZERO here because otherwise the uninitialized &time will be returned! + time.tm_hour = atoi(ofxdate_whole.substr(8, 2).c_str()); + time.tm_min = atoi(ofxdate_whole.substr(10, 2).c_str()); + time.tm_sec = atoi(ofxdate_whole.substr(12, 2).c_str()); + } + + if (time.tm_hour + time.tm_min + time.tm_sec == 0) + { + time.tm_hour = 10; + time.tm_min = 59; + time.tm_sec = 0; + return timegm(&time); } - return checked_mktime(&time); + + string::size_type startidx = ofxdate.find("["); + if (startidx != string::npos) + { + startidx++; + string::size_type endidx = ofxdate.find(":", startidx) - 1; + string offset_str = ofxdate.substr(startidx, (endidx - startidx) + 1); + float ofx_gmt_offset = atof(offset_str.c_str()); + std::time_t temptime = std::time(nullptr); + static const double secs_per_hour = 3600.0; + time.tm_sec -= static_cast<int>(ofx_gmt_offset * secs_per_hour); + return timegm(&time); + } + + /* No timezone, assume GMT */ + return timegm(&time); } /** @@ -248,7 +185,7 @@ } /** -Many weird caracters can be present inside a SGML element, as a result on the transfer protocol, or for any reason. This function greatly enhances the reliability of the library by zapping those gremlins (backspace,formfeed,newline,carriage return, horizontal and vertical tabs) as well as removing whitespace at the begining and end of the string. Otherwise, many problems will occur during stringmatching. +Many weird characters can be present inside a SGML element, as a result on the transfer protocol, or for any reason. This function greatly enhances the reliability of the library by zapping those gremlins (backspace,formfeed,newline,carriage return, horizontal and vertical tabs) as well as removing whitespace at the beginning and end of the string. Otherwise, many problems will occur during stringmatching. */ string strip_whitespace(const string para_string) { @@ -259,7 +196,7 @@ return temp_string; // so that size()-1 is allowed below const char *whitespace = " \b\f\n\r\t\v"; - const char *abnormal_whitespace = "\b\f\n\r\t\v";//backspace,formfeed,newline,cariage return, horizontal and vertical tabs + const char *abnormal_whitespace = "\b\f\n\r\t\v";//backspace,formfeed,newline,carriage return, horizontal and vertical tabs message_out(DEBUG4, "strip_whitespace() Before: |" + temp_string + "|"); for (i = 0; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libofx-0.10.1/lib/ofx_utilities.hh new/libofx-0.10.3/lib/ofx_utilities.hh --- old/libofx-0.10.1/lib/ofx_utilities.hh 2021-01-25 22:10:19.000000000 +0100 +++ new/libofx-0.10.3/lib/ofx_utilities.hh 2021-09-29 22:12:28.000000000 +0200 @@ -64,7 +64,7 @@ string AppendCharStringtostring(const SGMLApplication::CharString source, string &dest); ///Convert a C++ string containing a time in OFX format to a C time_t -time_t ofxdate_to_time_t(const string ofxdate); +time_t ofxdate_to_time_t(const string& ofxdate); ///Convert OFX amount of money to double float double ofxamount_to_double(const string ofxamount); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libofx-0.10.1/ofx2qif/ofx2qif.c new/libofx-0.10.3/ofx2qif/ofx2qif.c --- old/libofx-0.10.1/ofx2qif/ofx2qif.c 2021-01-25 22:10:19.000000000 +0100 +++ new/libofx-0.10.3/ofx2qif/ofx2qif.c 2021-09-29 22:12:28.000000000 +0200 @@ -9,13 +9,13 @@ * * ofx2qif is a OFX "file" to QIF (Quicken Interchange Format) converter. It was written as a second code example, and as a way for LibOFX - to immediately provide something usefull, and to give people a reason to try + to immediately provide something useful, and to give people a reason to try the library. It is not recommended that financial software use the output of this utility for OFX support. The QIF file format is very - primitive, and much information is lost. The utility curently supports - every tansaction tags of the QIF format except the address lines, and supports + primitive, and much information is lost. The utility currently supports + every transaction tags of the QIF format except the address lines, and supports many of the !Account tags. It should generate QIF files that will import - sucesfully in just about every software with QIF support. + successfully in just about every software with QIF support. * * I do not plan on improving working this utility much further, however be I would be more than happy to accept contributions. If you are interested in diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libofx-0.10.1/ofxconnect/Makefile.am new/libofx-0.10.3/ofxconnect/Makefile.am --- old/libofx-0.10.1/ofxconnect/Makefile.am 2021-01-25 22:10:19.000000000 +0100 +++ new/libofx-0.10.3/ofxconnect/Makefile.am 2021-09-29 22:12:28.000000000 +0200 @@ -14,7 +14,7 @@ CLEANFILES = cmdline.c cmdline.h cmdline.c cmdline.h: cmdline.ggo Makefile - gengetopt --unamed-opts < $< + gengetopt --unnamed-opts < $< endif MAINTAINERCLEANFILES = cmdline.c cmdline.h diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libofx-0.10.1/ofxconnect/README.privateserver new/libofx-0.10.3/ofxconnect/README.privateserver --- old/libofx-0.10.1/ofxconnect/README.privateserver 2021-01-25 22:10:19.000000000 +0100 +++ new/libofx-0.10.3/ofxconnect/README.privateserver 2021-09-29 22:12:28.000000000 +0200 @@ -1,6 +1,6 @@ There is an OFX test server which is used by the developers to ensure that the OFX connection works correctly. The providers of this server -have asked us not to post the connection information publically. +have asked us not to post the connection information publicly. Therefore, the test script file which connects to this server is encrypted using a GnuPG key: OFX Test Server <libofx-de...@lists.sf.net>. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libofx-0.10.1/ofxconnect/nodeparser.cpp new/libofx-0.10.3/ofxconnect/nodeparser.cpp --- old/libofx-0.10.1/ofxconnect/nodeparser.cpp 2021-01-25 22:10:19.000000000 +0100 +++ new/libofx-0.10.3/ofxconnect/nodeparser.cpp 2021-09-29 22:12:28.000000000 +0200 @@ -5,8 +5,8 @@ email : acejo...@users.sourceforge.net ***************************************************************************/ /**@file - * \brief Implementation of nodeparser object, which facilitiates searching - * for nodes in an XML file using a notation similiar to XPath. + * \brief Implementation of nodeparser object, which facilitates searching + * for nodes in an XML file using a notation similar to XPath. */ /*************************************************************************** * * diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libofx-0.10.1/ofxconnect/nodeparser.h new/libofx-0.10.3/ofxconnect/nodeparser.h --- old/libofx-0.10.1/ofxconnect/nodeparser.h 2021-01-25 22:10:19.000000000 +0100 +++ new/libofx-0.10.3/ofxconnect/nodeparser.h 2021-09-29 22:12:28.000000000 +0200 @@ -5,8 +5,8 @@ email : acejo...@users.sourceforge.net ***************************************************************************/ /**@file - * \brief Declaration of nodeparser object, which facilitiates searching - * for nodes in an XML file using a notation similiar to XPath. + * \brief Declaration of nodeparser object, which facilitates searching + * for nodes in an XML file using a notation similar to XPath. */ /*************************************************************************** * * diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libofx-0.10.1/ofxconnect/test-privateserver.sh new/libofx-0.10.3/ofxconnect/test-privateserver.sh --- old/libofx-0.10.1/ofxconnect/test-privateserver.sh 2021-01-25 22:10:19.000000000 +0100 +++ new/libofx-0.10.3/ofxconnect/test-privateserver.sh 2021-09-29 22:12:28.000000000 +0200 @@ -54,7 +54,7 @@ ./ofxconnect -s $serverlogin --acct=20001001 --type=2 --past=90 tmpfilex && ../ofxdump/ofxdump tmpfilex # -# These don't work yet because I mistakenly put "CHECKING" in for all "BANK" statments as the account type :-( +# These don't work yet because I mistakenly put "CHECKING" in for all "BANK" statements as the account type :-( # # --acct=10001003 --type=1 --past=90 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libofx-0.10.1/ofxdump/Makefile.am new/libofx-0.10.3/ofxdump/Makefile.am --- old/libofx-0.10.1/ofxdump/Makefile.am 2021-01-25 22:10:19.000000000 +0100 +++ new/libofx-0.10.3/ofxdump/Makefile.am 2021-09-29 22:12:28.000000000 +0200 @@ -11,7 +11,7 @@ CLEANFILES = cmdline.c cmdline.h cmdline.c cmdline.h: cmdline.ggo Makefile - gengetopt --unamed-opts < $< + gengetopt --unnamed-opts < $< endif diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libofx-0.10.1/ofxdump/ofxdump.cpp new/libofx-0.10.3/ofxdump/ofxdump.cpp --- old/libofx-0.10.1/ofxdump/ofxdump.cpp 2021-01-25 22:10:19.000000000 +0100 +++ new/libofx-0.10.3/ofxdump/ofxdump.cpp 2021-09-29 22:12:28.000000000 +0200 @@ -250,7 +250,7 @@ else if (data.stock_type == OfxSecurityData::OFX_STOCKTYPE_PREFERRED) strncpy(dest_string, "PREFERRED: Preferred stock", sizeof(dest_string)); else if (data.stock_type == OfxSecurityData::OFX_STOCKTYPE_CONVERTIBLE) - strncpy(dest_string, "CONVERTIBLE: Convertable stock", sizeof(dest_string)); + strncpy(dest_string, "CONVERTIBLE: Convertible stock", sizeof(dest_string)); else if (data.stock_type == OfxSecurityData::OFX_STOCKTYPE_OTHER) strncpy(dest_string, "OTHER: Other type", sizeof(dest_string)); else @@ -1178,8 +1178,8 @@ LibofxContextPtr libofx_context = libofx_get_new_context(); - //char **inputs ; /* unamed options */ - //unsigned inputs_num ; /* unamed options number */ + //char **inputs ; /* unnamed options */ + //unsigned inputs_num ; /* unnamed options number */ if (args_info.inputs_num > 0) { //const char* filename = args_info.inputs[0];