allow certain unsafe ops

git-svn-id: svn+ssh://svn.gnucash.org/repo/gnucash/trunk@1515 57a11ea4-9604-0410-9ed3-97b8803252fd
zzzoldfeatures/xacc-12-patch
Linas Vepstas 28 years ago
parent 720132fb46
commit 871b7795c7

@ -1,7 +1,7 @@
/********************************************************************\
* Account.c -- the Account data structure *
* Copyright (C) 1997 Robin D. Clark *
* Copyright (C) 1997, 1998 Linas Vepstas *
* Copyright (C) 1997, 1998, 1999 Linas Vepstas *
* *
* This program is free software; you can redistribute it and/or *
* modify it under the terms of the GNU General Public License as *
@ -38,8 +38,17 @@
#include "TransactionP.h"
#include "util.h"
/* The unsafe_ops flag allows certain unsafe manipulations to be
* performed on the data structures. Normally, this is disabled,
* as it can lead to scrambled data.
* hack alert -- this should be a configurable parameter.
*/
int unsafe_ops = 0;
int next_free_unique_account_id = 0;
static short module = MOD_ENGINE;
#ifndef FALSE
#define FALSE 0
#endif
@ -820,10 +829,10 @@ xaccAccountSetType (Account *acc, int tip)
/* After an account type has been set, it cannot be changed */
if (-1 < acc->type) {
printf ("Error: xaccAccountSetType(): "
"the type of the account cannot be changed "
"after its been set! \n"
);
PERR ("xaccAccountSetType(): "
"the type of the account cannot be changed "
"after its been set! \n"
);
return;
}
@ -891,11 +900,17 @@ xaccAccountSetCurrency (Account *acc, char *str)
CHECK (acc);
if (acc->currency && (0x0 != acc->currency[0])) {
printf ("Error: xacAccountSetCurrency(): "
"the currency denomination of an account "
"cannot be changed!\n"
);
return;
if (unsafe_ops) {
PWARN ("xaccAccountSetCurrency(): "
"it is dangerous to change the currency denomination of an account! \n"
"\tAccount=%s old currency=%s new currency=%s \n",
acc->accountName, acc->currency, str);
} else {
PERR ("xaccAccountSetCurrency(): "
"the currency denomination of an account cannot be changed!\n"
"\tAccount=%s \n", acc->accountName);
return;
}
}
/* free the zero-length string */
if (acc->currency) free (acc->currency);
@ -909,11 +924,17 @@ xaccAccountSetSecurity (Account *acc, char *str)
CHECK (acc);
if (acc->security && (0x0 != acc->security[0])) {
printf ("Error: xacAccountSetCurrency(): "
"the security traded in an account "
"cannot be changed!\n"
);
return;
if (unsafe_ops) {
PWARN ("xaccAccountSetSecurity(): "
"it is dangerous to change the security denomination of an account! \n"
"\tAccount=%s old security=%s new security=%s \n",
acc->accountName, acc->security, str);
} else {
PERR ("xaccAccountSetSecurity(): "
"the security denomination of an account cannot be changed!\n"
"\tAccount=%s \n", acc->accountName);
return;
}
}
/* free the zero-length string */
if (acc->security) free (acc->security);

Loading…
Cancel
Save