James LewisMoss's xml patch.

git-svn-id: svn+ssh://svn.gnucash.org/repo/gnucash/trunk@3840 57a11ea4-9604-0410-9ed3-97b8803252fd
This commit is contained in:
Dave Peticolas 2001-03-27 07:30:25 +00:00
parent 6740a78708
commit 2d76753469
9 changed files with 144 additions and 55 deletions

View File

@ -25,6 +25,7 @@ ltmain.sh
make-gnucash-patch make-gnucash-patch
stamp-h stamp-h
stamp-h.in stamp-h.in
install-stamp
tags tags
*.tar.gz *.tar.gz
*.log *.log

View File

@ -1,3 +1,20 @@
2001-03-27 James LewisMoss <jimdres@mindspring.com>
* src/engine/io-gncxml-v2.c (add_account_local): duh. currency
not commodity. commodity is same as Security. Old gets freed
really hosing the data known_commodities structure.
2001-03-26 James LewisMoss <jimdres@mindspring.com>
* src/engine/gnc-commodity.c (count_coms): new func.
(gnc_commodity_table_get_size): Actually return size rather than
namespace size.
(gnc_commodity_table_get_number_of_namespaces): new func. Used to
be the get_size one.
* src/test/test-commodities.c (test_commodity): Improve error
output for size diffs.
2001-03-26 Bill Gribble <grib@billgribble.com> 2001-03-26 Bill Gribble <grib@billgribble.com>
* src/gnome/dialog-column-view.{c,h}: new files. Options editor * src/gnome/dialog-column-view.{c,h}: new files. Options editor
@ -25,6 +42,10 @@
multiple reports. Each report is in a table cell with a multiple reports. Each report is in a table cell with a
configurable rowspan and colspan. configurable rowspan and colspan.
2001-03-26 James LewisMoss <jimdres@mindspring.com>
* README (NOTE): Update how make-gnucash-patch works.
2001-03-26 Dave Peticolas <dave@krondo.com> 2001-03-26 Dave Peticolas <dave@krondo.com>
* src/scm/report/transaction-report.scm: fix i18n bug * src/scm/report/transaction-report.scm: fix i18n bug
@ -90,6 +111,14 @@
* src/scm/report/income-or-expense-pie.scm: Included new option to * src/scm/report/income-or-expense-pie.scm: Included new option to
summarize all subaccount balances below a certain level threshold. summarize all subaccount balances below a certain level threshold.
2001-03-23 James LewisMoss <jimdres@mindspring.com>
* src/engine/gnc-pricedb-xml-v1.c (gnc_pricedb_to_dom_tree): Don't
return and empty tree. Return NULL.
* src/engine/io-gncxml-v2.c (write_pricedb): check for null return
from pricedb tree generator and ignore. It's ok to get NULL.
2001-03-22 Dave Peticolas <dave@krondo.com> 2001-03-22 Dave Peticolas <dave@krondo.com>
* src/Makefile.am: compile src/test after compile src/ * src/Makefile.am: compile src/test after compile src/

88
README
View File

@ -493,6 +493,49 @@ Submitting a Patch:
provided with the distribution that you can use to create the provided with the distribution that you can use to create the
patch. Here is how to use that perl script. patch. Here is how to use that perl script.
There are two methods.
1) Run ./make-gnucash-patch in your source directory. The script
will then create two directories ../diff and ../tmp. In ../tmp
it will then do a checkout of the cvs sources. If gnucash has
already been checked out into this directory then only an update
will occur. As a consequence of this you should make sure you
are merged with current CVS before running make-gnucash-patch or
you will find parts of the patch are reversing recent changes in
CVS.
make-gnucash-patch will then use makepatch to create a patch
between the original directory and ../tmp/gnucash. makepatch
will ask you for a description of the patch. And then the diff
will be written to the diff file
../diffs/gnucash-YYYYMMDD-hhmmss-<username>.diff.gz where Y=year,
M=month, D=day, h=hour, m=minute, and s=second.
make-gnucash-patch will then uuencode the diff to
../diffs/<samefilename>.uue.
There are two vars you can set in a ~/.gnucash-patch.rc file.
The file should look like this
----------------------------------------------------------------------
# -*- perl -*-
$::should_uuencode = 0;
$::ask_description = 0;
1;
----------------------------------------------------------------------
This is basically a perl file that is sourced by the script. If
you don't want the diff to be uuencoded (say you'll send the
patch in email using mime and don't need it double encoded). Set
$::should_uuencode to 0. If you don't want makepatch to ask you
for the patch description (so the process is more automated
possibly) set $::ask_description to 0.
2) The second method is basically described below but it also
includes the vars you can set from above. This method gives you
more control over which directories are used.
First, set up your development directories as follows: First, set up your development directories as follows:
< GnuCash home development directory > < GnuCash home development directory >
@ -509,44 +552,27 @@ Submitting a Patch:
| |
|---- /home/me/gnucash/gnucash.mywork (original sources + my edits) |---- /home/me/gnucash/gnucash.mywork (original sources + my edits)
Copy the make-gnucash-patch script to the home development directory Copy the make-gnucash-patch script to the home development
(/home/me/gnucash above). Now set three environment variables to directory (/home/me/gnucash above). Now set three environment
reflect the names of your directories. Given the names above, you variables to reflect the names of your directories. Given the
would use: names above, you would use:
export GNC_MAKEPATCH_OLD_DIR=gnucash.pristine export GNC_MAKEPATCH_OLD_DIR=gnucash.pristine
export GNC_MAKEPATCH_NEW_DIR=gnucash.mywork export GNC_MAKEPATCH_NEW_DIR=gnucash.mywork
export GNC_MAKEPATCH_HOME_DIR=/home/me/gnucash export GNC_MAKEPATCH_HOME_DIR=/home/me/gnucash
Right before you make your patch, make sure *both* your working and Right before you make your patch, make sure *both* your working
your pristine directories are in sync with cvs. Run 'cvs -z3 update and your pristine directories are in sync with cvs. Run 'cvs -z3
-dP' in both directories to ensure that is the case. Updating from update -dP' in both directories to ensure that is the
cvs in your working directory may cause conficts in a file. You must case. Updating from cvs in your working directory may cause
resolve those conficts before making a patch. conficts in a file. You must resolve those conficts before making
a patch.
Now run the script. Note that this script requires the programs Now run the script. Note that this script requires the programs
'makepatch', 'gzip', 'diff', and 'uuencode' (and, of course, 'perl') 'makepatch', 'gzip', 'diff', and 'uuencode' (and, of course,
to run. 'perl') to run.
When you run the script, three files will be generated: The same files will be generated for this method as the last
(../diffs/*.diff.gz and ../diffs/*.diff.gz.uue).
gnc.diff: This file is an ascii text file containing the differences
between the original sources and your edits. At the bottom of this
file is a list of the files which were added, changed, or deleted.
Please examine this file (especially the list at the bottom) to
make sure that all of your changes (and no other changes) are
present in the file.
If the patch is relatively small, send this file as an attachment
to gnucash-patches@gnucash.org and you are done. Otherwise,
continue.
gnucash.diff.gz: This is a gzipped version of the above file.
If you want to send the patch as an attachment, send this
file to gnucash-patches@gnucash.org. Otherwise, continue.
gnucash.diff.gz.uue: This is a uuencoded (ascii-encoded) version of
the above file. Send this file to gnucash-patches@gnucash.org.
Thanks in advance for your contribution! Thanks in advance for your contribution!

View File

@ -301,13 +301,36 @@ gnc_commodity_table_new(void) {
********************************************************************/ ********************************************************************/
guint guint
gnc_commodity_table_get_size(gnc_commodity_table* tbl) gnc_commodity_table_get_number_of_namespaces(gnc_commodity_table* tbl)
{ {
g_return_val_if_fail(tbl, 0); g_return_val_if_fail(tbl, 0);
g_return_val_if_fail(tbl->table, 0); g_return_val_if_fail(tbl->table, 0);
return g_hash_table_size(tbl->table); return g_hash_table_size(tbl->table);
} }
static void
count_coms(gpointer key, gpointer value, gpointer user_data)
{
GHashTable *tbl = ((gnc_commodity_namespace*)value)->table;
guint *count = (guint*)user_data;
if(!value) return;
*count += g_hash_table_size(tbl);
}
guint
gnc_commodity_table_get_size(gnc_commodity_table* tbl)
{
guint count = 0;
g_return_val_if_fail(tbl, 0);
g_return_val_if_fail(tbl->table, 0);
g_hash_table_foreach(tbl->table, count_coms, (gpointer)&count);
return count;
}
/******************************************************************** /********************************************************************
* gnc_commodity_table_lookup * gnc_commodity_table_lookup
* locate a commodity by namespace and mnemonic. * locate a commodity by namespace and mnemonic.

View File

@ -81,6 +81,7 @@ gnc_commodity * gnc_commodity_table_insert(gnc_commodity_table * table,
int gnc_commodity_table_has_namespace(const gnc_commodity_table * t, int gnc_commodity_table_has_namespace(const gnc_commodity_table * t,
const char * namespace); const char * namespace);
guint gnc_commodity_table_get_size(gnc_commodity_table* tbl); guint gnc_commodity_table_get_size(gnc_commodity_table* tbl);
guint gnc_commodity_table_get_number_of_namespaces(gnc_commodity_table* tbl);
/* The next two functions return newly allocated lists which should /* The next two functions return newly allocated lists which should
* be freed with g_list_free. */ * be freed with g_list_free. */

View File

@ -293,7 +293,6 @@ pricedb_v2_end_handler(
return TRUE; return TRUE;
} }
sixtp* sixtp*
gnc_pricedb_sixtp_parser_create(void) gnc_pricedb_sixtp_parser_create(void)
{ {
@ -430,6 +429,13 @@ gnc_pricedb_to_dom_tree(const char *tag, GNCPriceDB *db)
return NULL; return NULL;
} }
/* if no children have been added just return NULL */
if(!db_xml->xmlChildrenNode)
{
xmlFreeNode(db_xml);
return NULL;
}
return db_xml; return db_xml;
} }

View File

@ -688,8 +688,6 @@ gnc_pricedb_substitute_commodity(GNCPriceDB *db,
/***************************************************************************/ /***************************************************************************/
#if 0
/* Semi-lame debugging code */ /* Semi-lame debugging code */
static void static void
@ -740,7 +738,7 @@ static gboolean
print_pricedb_adapter(GNCPrice *p, gpointer user_data) print_pricedb_adapter(GNCPrice *p, gpointer user_data)
{ {
FILE *f = (FILE *) user_data; FILE *f = (FILE *) user_data;
gnc_price_print(p, f); gnc_price_print(p, f, 1);
return TRUE; return TRUE;
} }
@ -755,4 +753,4 @@ gnc_pricedb_print_contents(GNCPriceDB *db, FILE *f)
fprintf(f, "</gnc:pricedb>\n"); fprintf(f, "</gnc:pricedb>\n");
} }
#endif

View File

@ -161,10 +161,8 @@ gboolean gnc_pricedb_foreach_price(GNCPriceDB *db,
/* Return FALSE if the database has not been modified */ /* Return FALSE if the database has not been modified */
gboolean gnc_pricedb_dirty(GNCPriceDB *p); gboolean gnc_pricedb_dirty(GNCPriceDB *p);
#if 0
/* semi-lame debugging code */ /* semi-lame debugging code */
void gnc_price_print(GNCPrice *db, FILE *f); void gnc_price_print(GNCPrice *db, FILE *f, int indent);
void gnc_pricedb_print_contents(GNCPriceDB *db, FILE *f); void gnc_pricedb_print_contents(GNCPriceDB *db, FILE *f);
#endif
#endif #endif

View File

@ -11,6 +11,7 @@
#include "sixtp-parsers.h" #include "sixtp-parsers.h"
#include "gnc-xml.h" #include "gnc-xml.h"
#include "gnc-book-p.h" #include "gnc-book-p.h"
#include "gnc-pricedb.h"
#include "Group.h" #include "Group.h"
@ -57,8 +58,8 @@ static gboolean
add_account_local(sixtp_gdv2 *data, Account *act) add_account_local(sixtp_gdv2 *data, Account *act)
{ {
clear_up_account_commodity(data->book, act, clear_up_account_commodity(data->book, act,
xaccAccountGetCommodity, xaccAccountGetCurrency,
xaccAccountSetCommodity); xaccAccountSetCurrency);
clear_up_account_commodity(data->book, act, clear_up_account_commodity(data->book, act,
xaccAccountGetSecurity, xaccAccountGetSecurity,
xaccAccountSetSecurity); xaccAccountSetSecurity);
@ -108,6 +109,7 @@ add_pricedb_local(sixtp_gdv2 *data, GNCPriceDB *db)
gnc_pricedb_destroy(gnc_book_get_pricedb(data->book)); gnc_pricedb_destroy(gnc_book_get_pricedb(data->book));
} }
/* gnc_pricedb_print_contents(db, stdout); */
gnc_book_set_pricedb(data->book, db); gnc_book_set_pricedb(data->book, db);
return TRUE; return TRUE;
@ -364,6 +366,11 @@ write_pricedb(FILE *out, GNCBook *book)
node = gnc_pricedb_dom_tree_create(gnc_book_get_pricedb(book)); node = gnc_pricedb_dom_tree_create(gnc_book_get_pricedb(book));
if(!node)
{
return;
}
xmlElemDump(out, NULL, node); xmlElemDump(out, NULL, node);
fprintf(out, "\n"); fprintf(out, "\n");