diff options
author | Robin Haberkorn <robin.haberkorn@googlemail.com> | 2013-06-02 13:47:19 +0200 |
---|---|---|
committer | Robin Haberkorn <robin.haberkorn@googlemail.com> | 2014-02-15 15:21:54 +0100 |
commit | 8046e11445ba71b767d4fde08ce1e43e0dcd0359 (patch) | |
tree | d6991bb858a91336e76831b8dbd39c28345f21a9 /src/qregisters.cpp | |
parent | 78ad52e40992d6e68238dc1574d4ae6c6f922d27 (diff) | |
download | sciteco-8046e11445ba71b767d4fde08ce1e43e0dcd0359.tar.gz |
use GLib's GError information to yield errors
* results in better error messages, e.g. when opening files
* the case that a file to be opened (EB) exists but is not readably is handled for the first time
Diffstat (limited to 'src/qregisters.cpp')
-rw-r--r-- | src/qregisters.cpp | 14 |
1 files changed, 6 insertions, 8 deletions
diff --git a/src/qregisters.cpp b/src/qregisters.cpp index 9cf1461..550b103 100644 --- a/src/qregisters.cpp +++ b/src/qregisters.cpp @@ -198,15 +198,17 @@ QRegister::execute(bool locals) g_free(str); } -bool +void QRegister::load(const gchar *filename) { gchar *contents; gsize size; + GError *gerror = NULL; + /* FIXME: prevent excessive allocations by reading file into buffer */ - if (!g_file_get_contents(filename, &contents, &size, NULL)) - return false; + if (!g_file_get_contents(filename, &contents, &size, &gerror)) + throw State::GError(gerror); edit(); string.reset(); @@ -219,8 +221,6 @@ QRegister::load(const gchar *filename) g_free(contents); current_edit(); - - return true; } tecoInt @@ -531,9 +531,7 @@ StateLoadQReg::done(const gchar *str) if (*str) { register_argument->undo_load(); - if (!register_argument->load(str)) - throw Error("Cannot load \"%s\" into Q-Register \"%s\"", - str, register_argument->name); + register_argument->load(str); } else { if (ring.current) ring.undo_edit(); |