From 817281f6fd5b98c902aa9ed0d8ec8d1fa96a0159 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marco=20Trevisan=20=28Trevi=C3=B1o=29?= Date: Thu, 20 Feb 2025 15:34:02 +0100 Subject: [PATCH] examples/clear-storage: Cleanup code and use better error handling --- examples/clear-storage.c | 12 +++++++----- examples/storage.c | 20 +++++++++++++++++--- examples/storage.h | 5 ++++- 3 files changed, 28 insertions(+), 9 deletions(-) diff --git a/examples/clear-storage.c b/examples/clear-storage.c index 28de13df..a3dd71b8 100644 --- a/examples/clear-storage.c +++ b/examples/clear-storage.c @@ -87,10 +87,10 @@ on_clear_storage_completed (FpDevice *dev, GAsyncResult *res, void *user_data) } else { - int r = clear_saved_prints (); - if (r < 0) + if (!clear_saved_prints (&error)) { - g_warning ("Clear saved prints from local storage failed, code %d", r); + g_warning ("Clear saved prints from local storage failed: %s", + error->message); clear_storage_data->ret_value = EXIT_FAILURE; } else @@ -110,9 +110,11 @@ start_clear_storage (FpDevice *dev, ClearStorageData *clear_storage_data) g_print ("Clear device storage? [Y/n]? "); if (fgets (buffer, sizeof (buffer), stdin) && - (buffer[0] == 'Y' || buffer[0] == 'y' || buffer[0] == '\n')) + (buffer[0] == 'Y' || buffer[0] == 'y')) { - fp_device_clear_storage (dev, clear_storage_data->cancellable, (GAsyncReadyCallback) on_clear_storage_completed, clear_storage_data); + fp_device_clear_storage (dev, clear_storage_data->cancellable, + (GAsyncReadyCallback) on_clear_storage_completed, + clear_storage_data); return; } diff --git a/examples/storage.c b/examples/storage.c index c1b84dba..d05a002a 100644 --- a/examples/storage.c +++ b/examples/storage.c @@ -209,10 +209,24 @@ gallery_data_load (FpDevice *dev) return gallery; } -int -clear_saved_prints (void) +gboolean +clear_saved_prints (GError **error) { - return g_remove (STORAGE_FILE); + if (g_remove (STORAGE_FILE) < 0) + { + int errsv = errno; + + g_set_error (error, + G_IO_ERROR, + g_io_error_from_errno (errsv), + "Error clearing storage file ā€œ%sā€: %s", + STORAGE_FILE, + g_strerror (errsv)); + + return FALSE; + } + + return TRUE; } FpPrint * diff --git a/examples/storage.h b/examples/storage.h index 7e0f2271..c2e852b1 100644 --- a/examples/storage.h +++ b/examples/storage.h @@ -20,13 +20,16 @@ #pragma once +#include +#include + int print_data_save (FpPrint *print, FpFinger finger, gboolean update_fingerprint); FpPrint * print_data_load (FpDevice *dev, FpFinger finger); GPtrArray * gallery_data_load (FpDevice *dev); -int clear_saved_prints (void); +gboolean clear_saved_prints (GError **error); FpPrint * print_create_template (FpDevice *dev, FpFinger finger, const gboolean load_existing);