Bug 639322 part 2: display an error message if a user attempts to save beneath gnc_dotgnucash_dir

git-svn-id: svn+ssh://svn.gnucash.org/repo/gnucash/trunk@20099 57a11ea4-9604-0410-9ed3-97b8803252fd
pull/1/head
Geert Janssens 16 years ago
parent ff6c190003
commit ff4ff5a752

@ -34,6 +34,7 @@
#include "gnc-engine.h"
#include "Account.h"
#include "gnc-file.h"
#include "gnc-filepath-utils.h"
#include "gnc-gui-query.h"
#include "gnc-hooks.h"
#include "gnc-keyring.h"
@ -398,6 +399,13 @@ show_session_error (QofBackendError io_error,
gnc_error_dialog (parent, fmt, displayname);
break;
case ERR_FILEIO_RESERVED_WRITE:
fmt = _("You attempted to save in\n%s\nor a subdirectory thereof. "
"This is not allowed as %s reserves that directory for internal use.\n\n"
"Please try again in a different directory.");
gnc_error_dialog (parent, fmt, gnc_dotgnucash_dir(), PACKAGE_NAME);
break;
case ERR_SQL_DB_TOO_OLD:
fmt = _("This database is from an older version of GnuCash. "
"Do you want to want to upgrade the database "
@ -1210,12 +1218,23 @@ gnc_file_do_save_as (const char* filename)
newfile = norm_file;
}
/* For file based uri's, remember the directory as the default. */
/* Some extra steps for file based uri's only */
if (gnc_uri_is_file_protocol(protocol))
{
/* Remember the directory as the default. */
gchar *default_dir = g_path_get_dirname(path);
gnc_set_default_directory (GCONF_DIR_OPEN_SAVE, default_dir);
g_free(default_dir);
/* Prevent user to store file in GnuCash' private configuration
* directory (~/.gnucash by default in linux, but can be overridden)
*/
DEBUG("User path: %s, dotgnucash_dir: %s", path, gnc_dotgnucash_dir());
if (g_str_has_prefix(path, gnc_dotgnucash_dir()))
{
show_session_error (ERR_FILEIO_RESERVED_WRITE, newfile, GNC_FILE_DIALOG_SAVE);
return;
}
}
/* Check to see if the user specified the same file as the current

@ -96,6 +96,8 @@ typedef enum
ERR_FILEIO_READ_ERROR, /**< Could not open the file for reading. */
ERR_FILEIO_NO_ENCODING, /**< file does not specify encoding */
ERR_FILEIO_FILE_EACCES, /**< No read access permission for the given file */
ERR_FILEIO_RESERVED_WRITE, /**< User attempt to write to a directory reserved
for internal use by GnuCash */
/* network errors */
ERR_NETIO_SHORT_READ = 2000, /**< not enough bytes received */

Loading…
Cancel
Save