diff options
-rw-r--r-- | CMakeLists.txt | 1 | ||||
-rwxr-xr-x | acprep | 9 | ||||
-rw-r--r-- | default.nix | 10 | ||||
-rw-r--r-- | doc/CMakeLists.txt | 5 | ||||
-rw-r--r-- | doc/ledger3.texi | 32 | ||||
-rw-r--r-- | src/report.cc | 7 | ||||
-rw-r--r-- | src/select.cc | 7 | ||||
-rw-r--r-- | src/system.hh.in | 5 |
8 files changed, 50 insertions, 26 deletions
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(" @@ -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 = { 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) diff --git a/doc/ledger3.texi b/doc/ledger3.texi index c7613c0e..e9b0f552 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 @@ -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: @@ -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,17 +4582,17 @@ 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} @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 @@ -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: @@ -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). 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<long>(HANDLER(columns_).value); else if (const char * columns = std::getenv("COLUMNS")) cols = lexical_cast<long>(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<std::size_t>(report.HANDLER(columns_).value); else if (const char * columns_env = std::getenv("COLUMNS")) cols = lexical_cast<std::size_t>(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 <pwd.h> #endif +#if HAVE_IOCTL +#include <sys/ioctl.h> +#endif + #if HAVE_UNIX_PIPES #include <sys/types.h> #include <sys/wait.h> |