From acf0618fd0be3f951ac3376d3dd31330b2ea0cd6 Mon Sep 17 00:00:00 2001 From: Martin Michlmayr Date: Sun, 12 Oct 2014 16:52:43 -0400 Subject: [PATCH 1/8] Fix texinfo syntax errors Fix the following texinfo syntax errors: ledger/doc/ledger3.texi:7878: @itemx must follow @item ledger/doc/ledger3.texi:7939: @itemx must follow @item ledger/doc/ledger3.texi:7944: @itemx must follow @item --- doc/ledger3.texi | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/doc/ledger3.texi b/doc/ledger3.texi index c7613c0e..c795a058 100644 --- a/doc/ledger3.texi +++ b/doc/ledger3.texi @@ -7875,11 +7875,10 @@ A regular expression that matches against a transaction's payee name. @itemx tag(REGEX) A regular expression that matches against a transaction's tags. -@itemx expr date =~ /REGEX/ +@item expr date =~ /REGEX/ Useful for specifying a date in plain terms. For example, you could say @samp{expr date =~ /2014/}. - @item expr comment =~ /REGEX/ A regular expression that matches against a posting's comment field. This searches only a posting's field, not the transaction's note or comment field. @@ -7935,13 +7934,12 @@ A sub-expression is nested in parenthesis. This can be useful passing more complicated arguments to functions, or for overriding the natural precedence order of operators. - -@itemx expr base =~ /REGEX/ +@item expr base =~ /REGEX/ A regular expression that matches against an account's base name. If a posting, this will match against the account affected by the posting. -@itemx expr code =~ /REGEX/ +@item expr code =~ /REGEX/ A regular expression that matches against the transaction code (the text that occurs between parentheses before the payee). From 6b2520cc49edf4d167bec10850b832c308ebf9a3 Mon Sep 17 00:00:00 2001 From: Martin Michlmayr Date: Sun, 12 Oct 2014 18:20:54 -0400 Subject: [PATCH 2/8] BUILD_WEB_DOCS implies BUILD_DOCS This fixes the build when -DBUILD_WEB_DOCS=1 is specified wihout specifying -DBUILD_DOCS. This fails because man2html/groff are not found because the find_program command for these programs is only run if BUILD_DOCS is enabled. --- doc/CMakeLists.txt | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/doc/CMakeLists.txt b/doc/CMakeLists.txt index 96c6d518..46c3f73f 100644 --- a/doc/CMakeLists.txt +++ b/doc/CMakeLists.txt @@ -27,6 +27,11 @@ endif() ######################################################################## +# BUILD_WEB_DOCS implies BUILD_DOCS +if (BUILD_WEB_DOCS) + set(BUILD_DOCS 1) +endif() + if (BUILD_DOCS) find_program(MAKEINFO makeinfo) find_program(TEXI2PDF texi2pdf) From 56976a127c081a6a008c81966360003a8711a319 Mon Sep 17 00:00:00 2001 From: Stefano Zacchiroli Date: Mon, 13 Oct 2014 23:15:23 +0200 Subject: [PATCH 3/8] make --columns default to terminal width, as returned by ioctl() If set, the COLUMNS environment variable will take precedence over terminal width. However, please note that COLUMNS is usually *not* exported by shells to child processes, so in most cases COLUMNS will be undefined for ledger---hence the motivation for this change. Terminal width is queried using ioctl() on stdin. For the sake of portability the querying is done only on platform where ioctl() is detected as supported at compile-time. --- CMakeLists.txt | 1 + src/report.cc | 7 +++++++ src/select.cc | 7 +++++++ src/system.hh.in | 5 +++++ 4 files changed, 20 insertions(+) diff --git a/CMakeLists.txt b/CMakeLists.txt index 6592f106..09d14051 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -87,6 +87,7 @@ check_function_exists(access HAVE_ACCESS) check_function_exists(realpath HAVE_REALPATH) check_function_exists(getpwuid HAVE_GETPWUID) check_function_exists(getpwnam HAVE_GETPWNAM) +check_function_exists(ioctl HAVE_IOCTL) check_function_exists(isatty HAVE_ISATTY) check_c_source_compiles(" diff --git a/src/report.cc b/src/report.cc index 7bb79bd1..a05a57d9 100644 --- a/src/report.cc +++ b/src/report.cc @@ -181,10 +181,17 @@ void report_t::normalize_options(const string& verb) } long cols = 0; +#if HAVE_IOCTL + struct winsize ws; +#endif if (HANDLED(columns_)) cols = lexical_cast(HANDLER(columns_).value); else if (const char * columns = std::getenv("COLUMNS")) cols = lexical_cast(columns); +#if HAVE_IOCTL + else if (ioctl(STDIN_FILENO, TIOCGWINSZ, &ws) != -1) + cols = ws.ws_col; +#endif else cols = 80L; diff --git a/src/select.cc b/src/select.cc index 45ae34be..a9e943ab 100644 --- a/src/select.cc +++ b/src/select.cc @@ -145,10 +145,17 @@ value_t select_command(call_scope_t& args) string thus_far = ""; std::size_t cols = 0; +#if HAVE_IOCTL + struct winsize ws; +#endif if (report.HANDLED(columns_)) cols = lexical_cast(report.HANDLER(columns_).value); else if (const char * columns_env = std::getenv("COLUMNS")) cols = lexical_cast(columns_env); +#if HAVE_IOCTL + else if (ioctl(STDIN_FILENO, TIOCGWINSZ, &ws) != -1) + cols = ws.ws_col; +#endif else cols = 80; diff --git a/src/system.hh.in b/src/system.hh.in index eaee14dc..67a218da 100644 --- a/src/system.hh.in +++ b/src/system.hh.in @@ -63,6 +63,7 @@ #define HAVE_REALPATH @HAVE_REALPATH@ #define HAVE_GETPWUID @HAVE_GETPWUID@ #define HAVE_GETPWNAM @HAVE_GETPWNAM@ +#define HAVE_IOCTL @HAVE_IOCTL@ #define HAVE_ISATTY @HAVE_ISATTY@ #define HAVE_UNIX_PIPES @HAVE_UNIX_PIPES@ @@ -151,6 +152,10 @@ typedef std::ostream::pos_type ostream_pos_type; #include #endif +#if HAVE_IOCTL +#include +#endif + #if HAVE_UNIX_PIPES #include #include From 5eb62970423431bb3d81f31c24d53416d36b8801 Mon Sep 17 00:00:00 2001 From: Martin Michlmayr Date: Fri, 17 Oct 2014 21:16:15 -0400 Subject: [PATCH 4/8] Typo fix Thanks to Dominik Honnef for spotting it. --- doc/ledger3.texi | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/ledger3.texi b/doc/ledger3.texi index c795a058..834cf966 100644 --- a/doc/ledger3.texi +++ b/doc/ledger3.texi @@ -1756,7 +1756,7 @@ both liquid and commodity assets. Now, on the day of the sale: @smallexample @c input:validate 2005/08/01 Stock sale - Assets:Broker -50 APPL @{$30.00@} @@ $50.00 + Assets:Broker -50 AAPL @{$30.00@} @@ $50.00 Expenses:Broker:Commissions $19.95 Income:Capital Gains $-1,000.00 Assets:Broker $2,480.05 From 325f8cb6442118c38121991bb76e03fd95ffcafc Mon Sep 17 00:00:00 2001 From: Martin Michlmayr Date: Fri, 17 Oct 2014 21:22:02 -0400 Subject: [PATCH 5/8] Fix numbers from example Thanks to Dominik Honnef. --- doc/ledger3.texi | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/doc/ledger3.texi b/doc/ledger3.texi index 834cf966..e52aff2b 100644 --- a/doc/ledger3.texi +++ b/doc/ledger3.texi @@ -3325,10 +3325,10 @@ For example, consider the stock sale given above: @end smallexample The commodity transferred into @samp{Assets:Brokerage} is not actually 10 -AAPL, but rather 10 AAPL @{$5.00@}. The figure in braces after the +AAPL, but rather 10 AAPL @{$50.00@}. The figure in braces after the amount is called the ``lot price''. It's Ledger's way of remembering that this commodity was transferred through an exchange, and that -$5.00 was the price of that exchange. +$50.00 was the price of that exchange. This becomes significant if you later sell that commodity again. For example, you might write this: From cff5b16f7c9a726383a3f296889dd951f7f4bd12 Mon Sep 17 00:00:00 2001 From: myqlarson Date: Mon, 20 Oct 2014 01:17:16 +1300 Subject: [PATCH 6/8] Update ledger3.texi Fixed typos and clarified CSV import behaviour with regard to column headers (I haven't checked the code, but I noticed the programme behaves this way). --- doc/ledger3.texi | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/doc/ledger3.texi b/doc/ledger3.texi index e52aff2b..8a9d52bd 100644 --- a/doc/ledger3.texi +++ b/doc/ledger3.texi @@ -4547,8 +4547,8 @@ Transaction Number,Date,Description,Memo,Amount Debit,Amount Credit,Balance,Chec Unfortunately, as it stands Ledger cannot read it, but you can. Ledger expects the first line to contain a description of the fields on each -line of the file. The fields ledger can recognize are called -@code{date}, @code{posted}, @code{code}, @code{payee} or @code{desc}, +line of the file. The fields ledger can recognize contain these case-insensitive strings +@code{date}, @code{posted}, @code{code}, @code{payee} or @code{desc} or @code{description}, @code{amount}, @code{cost}, @code{total}, and @code{note}. Delete the account description lines at the top, and replace the first @@ -4582,7 +4582,7 @@ transid,date,payee,note,amount,,,code, @end smallexample Ledger will include @samp{; transid: 767718} in the first transaction -is from the file above. +from the file above. @findex --invert @findex --account @var{STR} @@ -4613,7 +4613,7 @@ account Aufwand:Einkauf:Lebensmittel Note that it may be necessary for the output of @samp{ledger convert} to be passed through @code{ledger print} a second time if you want to -match on the new payee field. During the @code{ledger convert} run +match on the new payee field. During the @code{ledger convert} run, only the original payee name as specified in the csv data seems to be used. @@ -5239,7 +5239,7 @@ report the values used by each tag. @findex entry @findex xact -The @command{xact} command simplify the creation of new transactions. +The @command{xact} command simplifies the creation of new transactions. It works on the principle that 80% of all postings are variants of earlier postings. Here's how it works: From 5df0788ba20f3b9a8f37827b92d18c92f37827c6 Mon Sep 17 00:00:00 2001 From: myqlarson Date: Mon, 20 Oct 2014 02:01:18 +1300 Subject: [PATCH 7/8] Update ledger3.texi Improved wording --- doc/ledger3.texi | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/doc/ledger3.texi b/doc/ledger3.texi index 8a9d52bd..e9b0f552 100644 --- a/doc/ledger3.texi +++ b/doc/ledger3.texi @@ -4588,11 +4588,11 @@ from the file above. @findex --account @var{STR} @findex --rich-data -The @command{convert} command accepts three options. The most important -ones are @option{--invert} which inverts the amount field, and +The @command{convert} command accepts three options. They are +@option{--invert} which inverts the amount field, @option{--account @var{STR}} which you can use to specify the account to -balance against and @option{--rich-data}. When using the rich-data -switch, additional metadata is stored as tags. There is, for example, +balance against, and @option{--rich-data} which stores +additional metadata as tags. There is, for example, a UUID field. If an entry with the same UUID tag is already included in the normal ledger file (specified via @option{--file @var{FILE} (-f)} or via the environment variable @env{LEDGER_FILE}) this entry will not be From 62e1354e0bb9bef2efaed14e3543199880026491 Mon Sep 17 00:00:00 2001 From: John Wiegley Date: Tue, 4 Nov 2014 00:08:21 -0600 Subject: [PATCH 8/8] Some minor changes --- acprep | 9 +++------ default.nix | 10 +++++++--- 2 files changed, 10 insertions(+), 9 deletions(-) diff --git a/acprep b/acprep index a6cadc7f..b0af2108 100755 --- a/acprep +++ b/acprep @@ -1,10 +1,7 @@ #!/usr/bin/env python -# acprep, version 3.0 +# acprep, version 3.1 # -# This script configures my ledger source tree on my Mac OS/X machine. This -# is not necessary, however, since I keep all the files necessary for building -# checked in to the source tree. Users can just type './configure && make'. # This script simply sets up the compiler and linker flags for all the various # build permutations I use for testing and profiling. @@ -802,7 +799,7 @@ class PrepareBuild(CommandLineApp): conf_args.append('-DCMAKE_CXX_FLAGS=%s' % self.envvars[var]) elif var == 'LDFLAGS': - conf_args.append('-DCMAKE_EXE_LINKER_FLAGS=%s' % + conf_args.append('-DCMAKE_EXE_LINKER_FLAGS=%s' % self.envvars[var]) if self.options.boost_root: @@ -895,7 +892,7 @@ class PrepareBuild(CommandLineApp): self.log.debug('Changing directory to ' + build_dir) os.chdir(build_dir) - self.execute(*(['ninja' if self.options.use_ninja else 'make'] + + self.execute(*(['ninja' if self.options.use_ninja else 'make'] + make_args)) finally: os.chdir(self.source_dir) diff --git a/default.nix b/default.nix index d54621d1..4885c98d 100644 --- a/default.nix +++ b/default.nix @@ -7,8 +7,7 @@ in stdenv.mkDerivation { name = "ledger-3.1.0.${rev}"; - - src = ./.; + src = builtins.filterSource (path: type: type != "unknown") ./.; buildInputs = [ cmake boost gmp mpfr libedit python texinfo gnused ]; @@ -18,7 +17,12 @@ stdenv.mkDerivation { # broken in ledger... postInstall = '' mkdir -p $out/share/emacs/site-lisp/ - cp -v $src/lisp/*.el $out/share/emacs/site-lisp/ + cp -v "$src/lisp/"*.el $out/share/emacs/site-lisp/ + '' + stdenv.lib.optionalString stdenv.isDarwin '' + for i in date_time filesystem system iostreams regex unit_test_framework; do + boostlib=libboost_''$i.dylib + install_name_tool -change ''$boostlib ${boost}/lib/''$boostlib $out/bin/ledger + done ''; meta = {