aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/qregisters.cpp
diff options
context:
space:
mode:
authorRobin Haberkorn <robin.haberkorn@googlemail.com>2013-06-02 13:47:19 +0200
committerRobin Haberkorn <robin.haberkorn@googlemail.com>2014-02-15 15:21:54 +0100
commit8046e11445ba71b767d4fde08ce1e43e0dcd0359 (patch)
treed6991bb858a91336e76831b8dbd39c28345f21a9 /src/qregisters.cpp
parent78ad52e40992d6e68238dc1574d4ae6c6f922d27 (diff)
downloadsciteco-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.cpp14
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();