From 8046e11445ba71b767d4fde08ce1e43e0dcd0359 Mon Sep 17 00:00:00 2001 From: Robin Haberkorn Date: Sun, 2 Jun 2013 13:47:19 +0200 Subject: 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 --- src/qregisters.cpp | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) (limited to 'src/qregisters.cpp') 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(); -- cgit v1.2.3