Removed --disable-emacs.
This commit is contained in:
parent
f781dd5668
commit
e6efa8421f
10 changed files with 3 additions and 112 deletions
|
|
@ -7,6 +7,7 @@ libledger_la_SOURCES = \
|
||||||
config.cc \
|
config.cc \
|
||||||
datetime.cc \
|
datetime.cc \
|
||||||
derive.cc \
|
derive.cc \
|
||||||
|
emacs.cc \
|
||||||
format.cc \
|
format.cc \
|
||||||
journal.cc \
|
journal.cc \
|
||||||
mask.cc \
|
mask.cc \
|
||||||
|
|
@ -20,10 +21,6 @@ libledger_la_SOURCES = \
|
||||||
valexpr.cc \
|
valexpr.cc \
|
||||||
value.cc \
|
value.cc \
|
||||||
walk.cc
|
walk.cc
|
||||||
if USE_EDITOR
|
|
||||||
libledger_la_CXXFLAGS += -DUSE_EDITOR=1
|
|
||||||
libledger_la_SOURCES += emacs.cc
|
|
||||||
endif
|
|
||||||
if HAVE_EXPAT
|
if HAVE_EXPAT
|
||||||
libledger_la_CXXFLAGS += -DHAVE_EXPAT=1
|
libledger_la_CXXFLAGS += -DHAVE_EXPAT=1
|
||||||
libledger_la_SOURCES += gnucash.cc xml.cc
|
libledger_la_SOURCES += gnucash.cc xml.cc
|
||||||
|
|
@ -77,9 +74,6 @@ bin_PROGRAMS = ledger
|
||||||
ledger_CXXFLAGS =
|
ledger_CXXFLAGS =
|
||||||
ledger_SOURCES = main.cc
|
ledger_SOURCES = main.cc
|
||||||
ledger_LDADD = $(LIBOBJS) libledger.la
|
ledger_LDADD = $(LIBOBJS) libledger.la
|
||||||
if USE_EDITOR
|
|
||||||
ledger_CXXFLAGS += -DUSE_EDITOR=1
|
|
||||||
endif
|
|
||||||
if HAVE_EXPAT
|
if HAVE_EXPAT
|
||||||
ledger_CXXFLAGS += -DHAVE_EXPAT=1
|
ledger_CXXFLAGS += -DHAVE_EXPAT=1
|
||||||
ledger_LDADD += -lexpat
|
ledger_LDADD += -lexpat
|
||||||
|
|
|
||||||
6
NEWS
6
NEWS
|
|
@ -10,12 +10,6 @@
|
||||||
|
|
||||||
- Added new @min(x,y) and @max(x,y) value expression functions.
|
- Added new @min(x,y) and @max(x,y) value expression functions.
|
||||||
|
|
||||||
- A new configure option "--disable-emacs" will disable generation of
|
|
||||||
transaction and entry location info, which is used by ledger.el and
|
|
||||||
the "write" command. If you use neither of these, then disabling
|
|
||||||
them will cut textual parsing time in half, and binary loading time
|
|
||||||
(and cache file size) by a third.
|
|
||||||
|
|
||||||
- Effective dates may now be specified for entries:
|
- Effective dates may now be specified for entries:
|
||||||
|
|
||||||
2004/10/03=2004/09/30 Credit card company
|
2004/10/03=2004/09/30 Credit card company
|
||||||
|
|
|
||||||
20
binary.cc
20
binary.cc
|
|
@ -11,18 +11,10 @@
|
||||||
namespace ledger {
|
namespace ledger {
|
||||||
|
|
||||||
static unsigned long binary_magic_number = 0xFFEED765;
|
static unsigned long binary_magic_number = 0xFFEED765;
|
||||||
#ifdef USE_EDITOR
|
|
||||||
#ifdef DEBUG_ENABLED
|
#ifdef DEBUG_ENABLED
|
||||||
static unsigned long format_version = 0x00020589;
|
static unsigned long format_version = 0x0002050b;
|
||||||
#else
|
#else
|
||||||
static unsigned long format_version = 0x00020588;
|
static unsigned long format_version = 0x0002050a;
|
||||||
#endif
|
|
||||||
#else
|
|
||||||
#ifdef DEBUG_ENABLED
|
|
||||||
static unsigned long format_version = 0x00020509;
|
|
||||||
#else
|
|
||||||
static unsigned long format_version = 0x00020508;
|
|
||||||
#endif
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
static account_t ** accounts;
|
static account_t ** accounts;
|
||||||
|
|
@ -322,12 +314,10 @@ inline void read_binary_transaction(char *& data, transaction_t * xact)
|
||||||
xact->flags |= TRANSACTION_BULK_ALLOC;
|
xact->flags |= TRANSACTION_BULK_ALLOC;
|
||||||
read_binary_string(data, &xact->note);
|
read_binary_string(data, &xact->note);
|
||||||
|
|
||||||
#ifdef USE_EDITOR
|
|
||||||
xact->beg_pos = read_binary_long<unsigned long>(data);
|
xact->beg_pos = read_binary_long<unsigned long>(data);
|
||||||
read_binary_long(data, xact->beg_line);
|
read_binary_long(data, xact->beg_line);
|
||||||
xact->end_pos = read_binary_long<unsigned long>(data);
|
xact->end_pos = read_binary_long<unsigned long>(data);
|
||||||
read_binary_long(data, xact->end_line);
|
read_binary_long(data, xact->end_line);
|
||||||
#endif
|
|
||||||
|
|
||||||
xact->data = NULL;
|
xact->data = NULL;
|
||||||
|
|
||||||
|
|
@ -340,13 +330,11 @@ inline void read_binary_transaction(char *& data, transaction_t * xact)
|
||||||
inline void read_binary_entry_base(char *& data, entry_base_t * entry,
|
inline void read_binary_entry_base(char *& data, entry_base_t * entry,
|
||||||
transaction_t *& xact_pool, bool& finalize)
|
transaction_t *& xact_pool, bool& finalize)
|
||||||
{
|
{
|
||||||
#ifdef USE_EDITOR
|
|
||||||
read_binary_long(data, entry->src_idx);
|
read_binary_long(data, entry->src_idx);
|
||||||
entry->beg_pos = read_binary_long<unsigned long>(data);
|
entry->beg_pos = read_binary_long<unsigned long>(data);
|
||||||
read_binary_long(data, entry->beg_line);
|
read_binary_long(data, entry->beg_line);
|
||||||
entry->end_pos = read_binary_long<unsigned long>(data);
|
entry->end_pos = read_binary_long<unsigned long>(data);
|
||||||
read_binary_long(data, entry->end_line);
|
read_binary_long(data, entry->end_line);
|
||||||
#endif
|
|
||||||
|
|
||||||
bool ignore_calculated = read_binary_number<char>(data) == 1;
|
bool ignore_calculated = read_binary_number<char>(data) == 1;
|
||||||
|
|
||||||
|
|
@ -809,23 +797,19 @@ void write_binary_transaction(std::ostream& out, transaction_t * xact,
|
||||||
write_binary_number(out, xact->flags);
|
write_binary_number(out, xact->flags);
|
||||||
write_binary_string(out, xact->note);
|
write_binary_string(out, xact->note);
|
||||||
|
|
||||||
#ifdef USE_EDITOR
|
|
||||||
write_binary_long(out, xact->beg_pos);
|
write_binary_long(out, xact->beg_pos);
|
||||||
write_binary_long(out, xact->beg_line);
|
write_binary_long(out, xact->beg_line);
|
||||||
write_binary_long(out, xact->end_pos);
|
write_binary_long(out, xact->end_pos);
|
||||||
write_binary_long(out, xact->end_line);
|
write_binary_long(out, xact->end_line);
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void write_binary_entry_base(std::ostream& out, entry_base_t * entry)
|
void write_binary_entry_base(std::ostream& out, entry_base_t * entry)
|
||||||
{
|
{
|
||||||
#ifdef USE_EDITOR
|
|
||||||
write_binary_long(out, entry->src_idx);
|
write_binary_long(out, entry->src_idx);
|
||||||
write_binary_long(out, entry->beg_pos);
|
write_binary_long(out, entry->beg_pos);
|
||||||
write_binary_long(out, entry->beg_line);
|
write_binary_long(out, entry->beg_line);
|
||||||
write_binary_long(out, entry->end_pos);
|
write_binary_long(out, entry->end_pos);
|
||||||
write_binary_long(out, entry->end_line);
|
write_binary_long(out, entry->end_line);
|
||||||
#endif
|
|
||||||
|
|
||||||
bool ignore_calculated = false;
|
bool ignore_calculated = false;
|
||||||
for (transactions_list::const_iterator i = entry->transactions.begin();
|
for (transactions_list::const_iterator i = entry->transactions.begin();
|
||||||
|
|
|
||||||
|
|
@ -200,15 +200,6 @@ AC_ARG_ENABLE(debug,
|
||||||
esac],[debug=false])
|
esac],[debug=false])
|
||||||
AM_CONDITIONAL(DEBUG, test x$debug = xtrue)
|
AM_CONDITIONAL(DEBUG, test x$debug = xtrue)
|
||||||
|
|
||||||
AC_ARG_ENABLE(emacs,
|
|
||||||
[ --enable-emacs Turn on Emacs support],
|
|
||||||
[case "${enableval}" in
|
|
||||||
yes) emacs=true ;;
|
|
||||||
no) emacs=false ;;
|
|
||||||
*) AC_MSG_ERROR(bad value ${enableval} for --enable-emacs) ;;
|
|
||||||
esac],[emacs=true])
|
|
||||||
AM_CONDITIONAL(USE_EDITOR, test x$emacs = xtrue)
|
|
||||||
|
|
||||||
# Checks for header files.
|
# Checks for header files.
|
||||||
AC_STDC_HEADERS
|
AC_STDC_HEADERS
|
||||||
AC_HAVE_HEADERS(sys/stat.h)
|
AC_HAVE_HEADERS(sys/stat.h)
|
||||||
|
|
|
||||||
|
|
@ -388,7 +388,6 @@ void format_t::format(std::ostream& out_str, const details_t& details) const
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
#ifdef USE_EDITOR
|
|
||||||
case element_t::SOURCE:
|
case element_t::SOURCE:
|
||||||
if (details.entry && details.entry->journal) {
|
if (details.entry && details.entry->journal) {
|
||||||
int idx = details.entry->src_idx;
|
int idx = details.entry->src_idx;
|
||||||
|
|
@ -441,7 +440,6 @@ void format_t::format(std::ostream& out_str, const details_t& details) const
|
||||||
if (details.xact)
|
if (details.xact)
|
||||||
out << details.xact->end_line;
|
out << details.xact->end_line;
|
||||||
break;
|
break;
|
||||||
#endif
|
|
||||||
|
|
||||||
case element_t::DATE_STRING: {
|
case element_t::DATE_STRING: {
|
||||||
std::time_t date = 0;
|
std::time_t date = 0;
|
||||||
|
|
|
||||||
10
gnucash.cc
10
gnucash.cc
|
|
@ -45,11 +45,9 @@ static std::istream * instreamp;
|
||||||
static unsigned int offset;
|
static unsigned int offset;
|
||||||
static XML_Parser parser;
|
static XML_Parser parser;
|
||||||
static std::string path;
|
static std::string path;
|
||||||
#ifdef USE_EDITOR
|
|
||||||
static unsigned int src_idx;
|
static unsigned int src_idx;
|
||||||
static istream_pos_type beg_pos;
|
static istream_pos_type beg_pos;
|
||||||
static unsigned long beg_line;
|
static unsigned long beg_line;
|
||||||
#endif
|
|
||||||
|
|
||||||
static transaction_t::state_t curr_state;
|
static transaction_t::state_t curr_state;
|
||||||
|
|
||||||
|
|
@ -148,13 +146,11 @@ static void endElement(void *userData, const char *name)
|
||||||
have_error = "The above entry does not balance";
|
have_error = "The above entry does not balance";
|
||||||
delete curr_entry;
|
delete curr_entry;
|
||||||
} else {
|
} else {
|
||||||
#ifdef USE_EDITOR
|
|
||||||
curr_entry->src_idx = src_idx;
|
curr_entry->src_idx = src_idx;
|
||||||
curr_entry->beg_pos = beg_pos;
|
curr_entry->beg_pos = beg_pos;
|
||||||
curr_entry->beg_line = beg_line;
|
curr_entry->beg_line = beg_line;
|
||||||
curr_entry->end_pos = instreamp->tellg();
|
curr_entry->end_pos = instreamp->tellg();
|
||||||
curr_entry->end_line = XML_GetCurrentLineNumber(parser) - offset;
|
curr_entry->end_line = XML_GetCurrentLineNumber(parser) - offset;
|
||||||
#endif
|
|
||||||
count++;
|
count++;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -193,12 +189,10 @@ static void endElement(void *userData, const char *name)
|
||||||
if (value != curr_value)
|
if (value != curr_value)
|
||||||
xact->cost = new amount_t(curr_value);
|
xact->cost = new amount_t(curr_value);
|
||||||
|
|
||||||
#ifdef USE_EDITOR
|
|
||||||
xact->beg_pos = beg_pos;
|
xact->beg_pos = beg_pos;
|
||||||
xact->beg_line = beg_line;
|
xact->beg_line = beg_line;
|
||||||
xact->end_pos = instreamp->tellg();
|
xact->end_pos = instreamp->tellg();
|
||||||
xact->end_line = XML_GetCurrentLineNumber(parser) - offset;
|
xact->end_line = XML_GetCurrentLineNumber(parser) - offset;
|
||||||
#endif
|
|
||||||
|
|
||||||
// Clear the relevant variables for the next run
|
// Clear the relevant variables for the next run
|
||||||
curr_state = transaction_t::UNCLEARED;
|
curr_state = transaction_t::UNCLEARED;
|
||||||
|
|
@ -382,9 +376,7 @@ unsigned int gnucash_parser_t::parse(std::istream& in,
|
||||||
|
|
||||||
instreamp = ∈
|
instreamp = ∈
|
||||||
path = original_file ? *original_file : "<gnucash>";
|
path = original_file ? *original_file : "<gnucash>";
|
||||||
#ifdef USE_EDITOR
|
|
||||||
src_idx = journal->sources.size() - 1;
|
src_idx = journal->sources.size() - 1;
|
||||||
#endif
|
|
||||||
|
|
||||||
// GnuCash uses the USD commodity without defining it, which really
|
// GnuCash uses the USD commodity without defining it, which really
|
||||||
// means $.
|
// means $.
|
||||||
|
|
@ -401,10 +393,8 @@ unsigned int gnucash_parser_t::parse(std::istream& in,
|
||||||
XML_SetCharacterDataHandler(parser, dataHandler);
|
XML_SetCharacterDataHandler(parser, dataHandler);
|
||||||
|
|
||||||
while (in.good() && ! in.eof()) {
|
while (in.good() && ! in.eof()) {
|
||||||
#ifdef USE_EDITOR
|
|
||||||
beg_pos = in.tellg();
|
beg_pos = in.tellg();
|
||||||
beg_line = (XML_GetCurrentLineNumber(parser) - offset) + 1;
|
beg_line = (XML_GetCurrentLineNumber(parser) - offset) + 1;
|
||||||
#endif
|
|
||||||
|
|
||||||
in.getline(buf, BUFSIZ - 1);
|
in.getline(buf, BUFSIZ - 1);
|
||||||
std::strcat(buf, "\n");
|
std::strcat(buf, "\n");
|
||||||
|
|
|
||||||
14
journal.h
14
journal.h
|
|
@ -44,12 +44,10 @@ class transaction_t
|
||||||
state_t state;
|
state_t state;
|
||||||
unsigned short flags;
|
unsigned short flags;
|
||||||
std::string note;
|
std::string note;
|
||||||
#ifdef USE_EDITOR
|
|
||||||
istream_pos_type beg_pos;
|
istream_pos_type beg_pos;
|
||||||
unsigned long beg_line;
|
unsigned long beg_line;
|
||||||
istream_pos_type end_pos;
|
istream_pos_type end_pos;
|
||||||
unsigned long end_line;
|
unsigned long end_line;
|
||||||
#endif
|
|
||||||
mutable void * data;
|
mutable void * data;
|
||||||
|
|
||||||
static bool use_effective_date;
|
static bool use_effective_date;
|
||||||
|
|
@ -58,9 +56,7 @@ class transaction_t
|
||||||
: entry(NULL), _date(0), _date_eff(0), account(_account),
|
: entry(NULL), _date(0), _date_eff(0), account(_account),
|
||||||
amount_expr(NULL), cost(NULL), cost_expr(NULL),
|
amount_expr(NULL), cost(NULL), cost_expr(NULL),
|
||||||
state(UNCLEARED), flags(TRANSACTION_NORMAL),
|
state(UNCLEARED), flags(TRANSACTION_NORMAL),
|
||||||
#ifdef USE_EDITOR
|
|
||||||
beg_pos(0), beg_line(0), end_pos(0), end_line(0),
|
beg_pos(0), beg_line(0), end_pos(0), end_line(0),
|
||||||
#endif
|
|
||||||
data(NULL) {
|
data(NULL) {
|
||||||
DEBUG_PRINT("ledger.memory.ctors", "ctor transaction_t");
|
DEBUG_PRINT("ledger.memory.ctors", "ctor transaction_t");
|
||||||
}
|
}
|
||||||
|
|
@ -72,9 +68,7 @@ class transaction_t
|
||||||
: entry(NULL), _date(0), _date_eff(0), account(_account),
|
: entry(NULL), _date(0), _date_eff(0), account(_account),
|
||||||
amount(_amount), amount_expr(NULL), cost(NULL), cost_expr(NULL),
|
amount(_amount), amount_expr(NULL), cost(NULL), cost_expr(NULL),
|
||||||
state(UNCLEARED), flags(_flags), note(_note),
|
state(UNCLEARED), flags(_flags), note(_note),
|
||||||
#ifdef USE_EDITOR
|
|
||||||
beg_pos(0), beg_line(0), end_pos(0), end_line(0),
|
beg_pos(0), beg_line(0), end_pos(0), end_line(0),
|
||||||
#endif
|
|
||||||
data(NULL) {
|
data(NULL) {
|
||||||
DEBUG_PRINT("ledger.memory.ctors", "ctor transaction_t");
|
DEBUG_PRINT("ledger.memory.ctors", "ctor transaction_t");
|
||||||
}
|
}
|
||||||
|
|
@ -84,9 +78,7 @@ class transaction_t
|
||||||
amount(xact.amount), amount_expr(NULL),
|
amount(xact.amount), amount_expr(NULL),
|
||||||
cost(xact.cost ? new amount_t(*xact.cost) : NULL), cost_expr(NULL),
|
cost(xact.cost ? new amount_t(*xact.cost) : NULL), cost_expr(NULL),
|
||||||
state(xact.state), flags(xact.flags), note(xact.note),
|
state(xact.state), flags(xact.flags), note(xact.note),
|
||||||
#ifdef USE_EDITOR
|
|
||||||
beg_pos(0), beg_line(0), end_pos(0), end_line(0),
|
beg_pos(0), beg_line(0), end_pos(0), end_line(0),
|
||||||
#endif
|
|
||||||
data(NULL) {
|
data(NULL) {
|
||||||
DEBUG_PRINT("ledger.memory.ctors", "ctor transaction_t");
|
DEBUG_PRINT("ledger.memory.ctors", "ctor transaction_t");
|
||||||
}
|
}
|
||||||
|
|
@ -124,26 +116,20 @@ class entry_base_t
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
journal_t * journal;
|
journal_t * journal;
|
||||||
#ifdef USE_EDITOR
|
|
||||||
unsigned long src_idx;
|
unsigned long src_idx;
|
||||||
istream_pos_type beg_pos;
|
istream_pos_type beg_pos;
|
||||||
unsigned long beg_line;
|
unsigned long beg_line;
|
||||||
istream_pos_type end_pos;
|
istream_pos_type end_pos;
|
||||||
unsigned long end_line;
|
unsigned long end_line;
|
||||||
#endif
|
|
||||||
transactions_list transactions;
|
transactions_list transactions;
|
||||||
|
|
||||||
entry_base_t() : journal(NULL),
|
entry_base_t() : journal(NULL),
|
||||||
#ifdef USE_EDITOR
|
|
||||||
beg_pos(0), beg_line(0), end_pos(0), end_line(0)
|
beg_pos(0), beg_line(0), end_pos(0), end_line(0)
|
||||||
#endif
|
|
||||||
{
|
{
|
||||||
DEBUG_PRINT("ledger.memory.ctors", "ctor entry_base_t");
|
DEBUG_PRINT("ledger.memory.ctors", "ctor entry_base_t");
|
||||||
}
|
}
|
||||||
entry_base_t(const entry_base_t& e) : journal(NULL),
|
entry_base_t(const entry_base_t& e) : journal(NULL),
|
||||||
#ifdef USE_EDITOR
|
|
||||||
beg_pos(0), beg_line(0), end_pos(0), end_line(0)
|
beg_pos(0), beg_line(0), end_pos(0), end_line(0)
|
||||||
#endif
|
|
||||||
{
|
{
|
||||||
DEBUG_PRINT("ledger.memory.ctors", "ctor entry_base_t");
|
DEBUG_PRINT("ledger.memory.ctors", "ctor entry_base_t");
|
||||||
for (transactions_list::const_iterator i = e.transactions.begin();
|
for (transactions_list::const_iterator i = e.transactions.begin();
|
||||||
|
|
|
||||||
6
main.cc
6
main.cc
|
|
@ -104,10 +104,8 @@ int parse_and_report(int argc, char * argv[], char * envp[])
|
||||||
command = "p";
|
command = "p";
|
||||||
else if (command == "output")
|
else if (command == "output")
|
||||||
command = "w";
|
command = "w";
|
||||||
#ifdef USE_EDITOR
|
|
||||||
else if (command == "emacs")
|
else if (command == "emacs")
|
||||||
command = "x";
|
command = "x";
|
||||||
#endif
|
|
||||||
else if (command == "xml")
|
else if (command == "xml")
|
||||||
command = "X";
|
command = "X";
|
||||||
else if (command == "entry")
|
else if (command == "entry")
|
||||||
|
|
@ -245,10 +243,8 @@ int parse_and_report(int argc, char * argv[], char * envp[])
|
||||||
formatter = new set_account_value;
|
formatter = new set_account_value;
|
||||||
else if (command == "p" || command == "e")
|
else if (command == "p" || command == "e")
|
||||||
formatter = new format_entries(*out, *format);
|
formatter = new format_entries(*out, *format);
|
||||||
#ifdef USE_EDITOR
|
|
||||||
else if (command == "x")
|
else if (command == "x")
|
||||||
formatter = new format_emacs_transactions(*out);
|
formatter = new format_emacs_transactions(*out);
|
||||||
#endif
|
|
||||||
else if (command == "X") {
|
else if (command == "X") {
|
||||||
#if defined(HAVE_EXPAT) || defined(HAVE_XMLPARSE)
|
#if defined(HAVE_EXPAT) || defined(HAVE_XMLPARSE)
|
||||||
formatter = new format_xml_entries(*out, config.show_totals);
|
formatter = new format_xml_entries(*out, config.show_totals);
|
||||||
|
|
@ -259,10 +255,8 @@ int parse_and_report(int argc, char * argv[], char * envp[])
|
||||||
formatter = new format_transactions(*out, *format);
|
formatter = new format_transactions(*out, *format);
|
||||||
|
|
||||||
if (command == "w") {
|
if (command == "w") {
|
||||||
#ifdef USE_EDITOR
|
|
||||||
write_textual_journal(*journal, first_arg, *formatter,
|
write_textual_journal(*journal, first_arg, *formatter,
|
||||||
config.write_hdr_format, *out);
|
config.write_hdr_format, *out);
|
||||||
#endif
|
|
||||||
} else {
|
} else {
|
||||||
formatter = config.chain_xact_handlers(command, formatter, journal.get(),
|
formatter = config.chain_xact_handlers(command, formatter, journal.get(),
|
||||||
journal->master, formatter_ptrs);
|
journal->master, formatter_ptrs);
|
||||||
|
|
|
||||||
8
qif.cc
8
qif.cc
|
|
@ -63,7 +63,6 @@ unsigned int qif_parser_t::parse(std::istream& in,
|
||||||
src_idx = journal->sources.size() - 1;
|
src_idx = journal->sources.size() - 1;
|
||||||
linenum = 1;
|
linenum = 1;
|
||||||
|
|
||||||
#ifdef USE_EDITOR
|
|
||||||
istream_pos_type beg_pos = 0;
|
istream_pos_type beg_pos = 0;
|
||||||
unsigned long beg_line = 0;
|
unsigned long beg_line = 0;
|
||||||
|
|
||||||
|
|
@ -72,9 +71,6 @@ unsigned int qif_parser_t::parse(std::istream& in,
|
||||||
beg_pos = in.tellg(); \
|
beg_pos = in.tellg(); \
|
||||||
beg_line = linenum; \
|
beg_line = linenum; \
|
||||||
}
|
}
|
||||||
#else
|
|
||||||
#define SET_BEG_POS_AND_LINE()
|
|
||||||
#endif
|
|
||||||
|
|
||||||
while (in.good() && ! in.eof()) {
|
while (in.good() && ! in.eof()) {
|
||||||
char c;
|
char c;
|
||||||
|
|
@ -221,13 +217,11 @@ unsigned int qif_parser_t::parse(std::istream& in,
|
||||||
}
|
}
|
||||||
|
|
||||||
if (journal->add_entry(entry.get())) {
|
if (journal->add_entry(entry.get())) {
|
||||||
#ifdef USE_EDITOR
|
|
||||||
entry->src_idx = src_idx;
|
entry->src_idx = src_idx;
|
||||||
entry->beg_pos = beg_pos;
|
entry->beg_pos = beg_pos;
|
||||||
entry->beg_line = beg_line;
|
entry->beg_line = beg_line;
|
||||||
entry->end_pos = in.tellg();
|
entry->end_pos = in.tellg();
|
||||||
entry->end_line = linenum;
|
entry->end_line = linenum;
|
||||||
#endif
|
|
||||||
entry.release();
|
entry.release();
|
||||||
count++;
|
count++;
|
||||||
}
|
}
|
||||||
|
|
@ -240,9 +234,7 @@ unsigned int qif_parser_t::parse(std::istream& in,
|
||||||
saw_splits = false;
|
saw_splits = false;
|
||||||
saw_category = false;
|
saw_category = false;
|
||||||
total = NULL;
|
total = NULL;
|
||||||
#ifdef USE_EDITOR
|
|
||||||
beg_line = 0;
|
beg_line = 0;
|
||||||
#endif
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
32
textual.cc
32
textual.cc
|
|
@ -318,9 +318,7 @@ bool parse_transactions(std::istream& in,
|
||||||
in.getline(line, MAX_LINE);
|
in.getline(line, MAX_LINE);
|
||||||
if (in.eof())
|
if (in.eof())
|
||||||
break;
|
break;
|
||||||
#ifdef USE_EDITOR
|
|
||||||
beg_pos += istream_pos_type(std::strlen(line) + 1);
|
beg_pos += istream_pos_type(std::strlen(line) + 1);
|
||||||
#endif
|
|
||||||
linenum++;
|
linenum++;
|
||||||
if (line[0] == ' ' || line[0] == '\t' || line[0] == '\r') {
|
if (line[0] == ' ' || line[0] == '\t' || line[0] == '\r') {
|
||||||
char * p = skip_ws(line);
|
char * p = skip_ws(line);
|
||||||
|
|
@ -403,18 +401,14 @@ entry_t * parse_entry(std::istream& in, char * line, account_t * master,
|
||||||
|
|
||||||
TIMER_START(entry_xacts);
|
TIMER_START(entry_xacts);
|
||||||
|
|
||||||
#ifdef USE_EDITOR
|
|
||||||
istream_pos_type end_pos;
|
istream_pos_type end_pos;
|
||||||
unsigned long beg_line = linenum;
|
unsigned long beg_line = linenum;
|
||||||
#endif
|
|
||||||
while (! in.eof() && (in.peek() == ' ' || in.peek() == '\t')) {
|
while (! in.eof() && (in.peek() == ' ' || in.peek() == '\t')) {
|
||||||
line[0] = '\0';
|
line[0] = '\0';
|
||||||
in.getline(line, MAX_LINE);
|
in.getline(line, MAX_LINE);
|
||||||
if (in.eof() && line[0] == '\0')
|
if (in.eof() && line[0] == '\0')
|
||||||
break;
|
break;
|
||||||
#ifdef USE_EDITOR
|
|
||||||
end_pos = beg_pos + istream_pos_type(std::strlen(line) + 1);
|
end_pos = beg_pos + istream_pos_type(std::strlen(line) + 1);
|
||||||
#endif
|
|
||||||
|
|
||||||
linenum++;
|
linenum++;
|
||||||
if (line[0] == ' ' || line[0] == '\t' || line[0] == '\r') {
|
if (line[0] == ' ' || line[0] == '\t' || line[0] == '\r') {
|
||||||
|
|
@ -428,13 +422,11 @@ entry_t * parse_entry(std::istream& in, char * line, account_t * master,
|
||||||
xact->state == transaction_t::UNCLEARED)
|
xact->state == transaction_t::UNCLEARED)
|
||||||
xact->state = state;
|
xact->state = state;
|
||||||
|
|
||||||
#ifdef USE_EDITOR
|
|
||||||
xact->beg_pos = beg_pos;
|
xact->beg_pos = beg_pos;
|
||||||
xact->beg_line = beg_line;
|
xact->beg_line = beg_line;
|
||||||
xact->end_pos = end_pos;
|
xact->end_pos = end_pos;
|
||||||
xact->end_line = linenum;
|
xact->end_line = linenum;
|
||||||
beg_pos = end_pos;
|
beg_pos = end_pos;
|
||||||
#endif
|
|
||||||
curr->add_transaction(xact);
|
curr->add_transaction(xact);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -547,20 +539,16 @@ unsigned int textual_parser_t::parse(std::istream& in,
|
||||||
src_idx = journal->sources.size() - 1;
|
src_idx = journal->sources.size() - 1;
|
||||||
linenum = 1;
|
linenum = 1;
|
||||||
|
|
||||||
#ifdef USE_EDITOR
|
|
||||||
istream_pos_type beg_pos = in.tellg();
|
istream_pos_type beg_pos = in.tellg();
|
||||||
istream_pos_type end_pos;
|
istream_pos_type end_pos;
|
||||||
unsigned long beg_line = linenum;
|
unsigned long beg_line = linenum;
|
||||||
#endif
|
|
||||||
while (in.good() && ! in.eof()) {
|
while (in.good() && ! in.eof()) {
|
||||||
try {
|
try {
|
||||||
in.getline(line, MAX_LINE);
|
in.getline(line, MAX_LINE);
|
||||||
if (in.eof())
|
if (in.eof())
|
||||||
break;
|
break;
|
||||||
linenum++;
|
linenum++;
|
||||||
#ifdef USE_EDITOR
|
|
||||||
end_pos = beg_pos + istream_pos_type(std::strlen(line) + 1);
|
end_pos = beg_pos + istream_pos_type(std::strlen(line) + 1);
|
||||||
#endif
|
|
||||||
|
|
||||||
switch (line[0]) {
|
switch (line[0]) {
|
||||||
case '\0':
|
case '\0':
|
||||||
|
|
@ -710,13 +698,11 @@ unsigned int textual_parser_t::parse(std::istream& in,
|
||||||
if (parse_transactions(in, account_stack.front(), *ae,
|
if (parse_transactions(in, account_stack.front(), *ae,
|
||||||
"automated", end_pos)) {
|
"automated", end_pos)) {
|
||||||
journal->auto_entries.push_back(ae);
|
journal->auto_entries.push_back(ae);
|
||||||
#ifdef USE_EDITOR
|
|
||||||
ae->src_idx = src_idx;
|
ae->src_idx = src_idx;
|
||||||
ae->beg_pos = beg_pos;
|
ae->beg_pos = beg_pos;
|
||||||
ae->beg_line = beg_line;
|
ae->beg_line = beg_line;
|
||||||
ae->end_pos = end_pos;
|
ae->end_pos = end_pos;
|
||||||
ae->end_line = linenum;
|
ae->end_line = linenum;
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
@ -732,13 +718,11 @@ unsigned int textual_parser_t::parse(std::istream& in,
|
||||||
if (pe->finalize()) {
|
if (pe->finalize()) {
|
||||||
extend_entry_base(journal, *pe);
|
extend_entry_base(journal, *pe);
|
||||||
journal->period_entries.push_back(pe);
|
journal->period_entries.push_back(pe);
|
||||||
#ifdef USE_EDITOR
|
|
||||||
pe->src_idx = src_idx;
|
pe->src_idx = src_idx;
|
||||||
pe->beg_pos = beg_pos;
|
pe->beg_pos = beg_pos;
|
||||||
pe->beg_line = beg_line;
|
pe->beg_line = beg_line;
|
||||||
pe->end_pos = end_pos;
|
pe->end_pos = end_pos;
|
||||||
pe->end_line = linenum;
|
pe->end_line = linenum;
|
||||||
#endif
|
|
||||||
} else {
|
} else {
|
||||||
throw parse_error(path, linenum, "Period entry failed to balance");
|
throw parse_error(path, linenum, "Period entry failed to balance");
|
||||||
}
|
}
|
||||||
|
|
@ -752,10 +736,8 @@ unsigned int textual_parser_t::parse(std::istream& in,
|
||||||
if (word == "include") {
|
if (word == "include") {
|
||||||
push_var<std::string> save_path(path);
|
push_var<std::string> save_path(path);
|
||||||
push_var<unsigned int> save_src_idx(src_idx);
|
push_var<unsigned int> save_src_idx(src_idx);
|
||||||
#ifdef USE_EDITOR
|
|
||||||
push_var<istream_pos_type> save_beg_pos(beg_pos);
|
push_var<istream_pos_type> save_beg_pos(beg_pos);
|
||||||
push_var<istream_pos_type> save_end_pos(end_pos);
|
push_var<istream_pos_type> save_end_pos(end_pos);
|
||||||
#endif
|
|
||||||
push_var<unsigned int> save_linenum(linenum);
|
push_var<unsigned int> save_linenum(linenum);
|
||||||
|
|
||||||
path = p;
|
path = p;
|
||||||
|
|
@ -804,21 +786,15 @@ unsigned int textual_parser_t::parse(std::istream& in,
|
||||||
|
|
||||||
default: {
|
default: {
|
||||||
unsigned int first_line = linenum;
|
unsigned int first_line = linenum;
|
||||||
#ifdef USE_EDITOR
|
|
||||||
istream_pos_type pos = end_pos;
|
istream_pos_type pos = end_pos;
|
||||||
#else
|
|
||||||
istream_pos_type pos;
|
|
||||||
#endif
|
|
||||||
if (entry_t * entry =
|
if (entry_t * entry =
|
||||||
parse_entry(in, line, account_stack.front(), *this, pos)) {
|
parse_entry(in, line, account_stack.front(), *this, pos)) {
|
||||||
if (journal->add_entry(entry)) {
|
if (journal->add_entry(entry)) {
|
||||||
#ifdef USE_EDITOR
|
|
||||||
entry->src_idx = src_idx;
|
entry->src_idx = src_idx;
|
||||||
entry->beg_pos = beg_pos;
|
entry->beg_pos = beg_pos;
|
||||||
entry->beg_line = beg_line;
|
entry->beg_line = beg_line;
|
||||||
entry->end_pos = end_pos;
|
entry->end_pos = end_pos;
|
||||||
entry->end_line = linenum;
|
entry->end_line = linenum;
|
||||||
#endif
|
|
||||||
count++;
|
count++;
|
||||||
} else {
|
} else {
|
||||||
print_entry(std::cerr, *entry);
|
print_entry(std::cerr, *entry);
|
||||||
|
|
@ -833,9 +809,7 @@ unsigned int textual_parser_t::parse(std::istream& in,
|
||||||
} else {
|
} else {
|
||||||
throw parse_error(path, first_line, "Failed to parse entry");
|
throw parse_error(path, first_line, "Failed to parse entry");
|
||||||
}
|
}
|
||||||
#ifdef USE_EDITOR
|
|
||||||
end_pos = pos;
|
end_pos = pos;
|
||||||
#endif
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -854,9 +828,7 @@ unsigned int textual_parser_t::parse(std::istream& in,
|
||||||
<< err.what() << std::endl;;
|
<< err.what() << std::endl;;
|
||||||
errors++;
|
errors++;
|
||||||
}
|
}
|
||||||
#ifdef USE_EDITOR
|
|
||||||
beg_pos = end_pos;
|
beg_pos = end_pos;
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
done:
|
done:
|
||||||
|
|
@ -876,8 +848,6 @@ unsigned int textual_parser_t::parse(std::istream& in,
|
||||||
return count;
|
return count;
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef USE_EDITOR
|
|
||||||
|
|
||||||
void write_textual_journal(journal_t& journal, std::string path,
|
void write_textual_journal(journal_t& journal, std::string path,
|
||||||
item_handler<transaction_t>& formatter,
|
item_handler<transaction_t>& formatter,
|
||||||
const std::string& write_hdr_format,
|
const std::string& write_hdr_format,
|
||||||
|
|
@ -964,6 +934,4 @@ void write_textual_journal(journal_t& journal, std::string path,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif // USE_EDITOR
|
|
||||||
|
|
||||||
} // namespace ledger
|
} // namespace ledger
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue