[epiphany/mcatanzaro/declaration-after-statement] Build with -Werror=declaration-after-statement



commit 90cddee2c3f7ebf3707aa721a45308701a394ce2
Author: Michael Catanzaro <mcatanzaro igalia com>
Date:   Fri Jul 12 19:40:37 2019 -0500

    Build with -Werror=declaration-after-statement
    
    Historically, Epiphany did not permit declarations after the first
    statement in a block due to its use of AX_COMPILER_FLAGS, which adds
    -Werror=declaration-after-statement when compiling C files. But I
    dropped this in switching to meson, thinking we would adopt a more
    modern code style.
    
    There are two schools of thought here:
    
     (1) It's safest and cleanest to limit variable declarations to the
         smallest-possible scope. I'm a firm believer in this rule and I
         almost always follow it when writing C++.
     (2) It just doesn't look very good in C, especially with GNOME code
         style.
    
    I'm starting to become sympathetic to (2). Especially now that we are
    starting to use autofrees and autoptrs all over the place, I find that
    declaring these at point of first use causes the code to become rather
    cluttered.
    
    There is not much code in Epiphany that violates the rule because we
    only recently began to allow it, so not much to clean up.
    
    The only code that really does not benefit from this is the profile
    migrator code, which probably overuses local variables. I'd call that an
    exception rather than the rule.
    
    Let's sneak in -Werror=implicit-function-declaration at the same time,
    since this is always a serious bug.

 embed/ephy-embed-shell.c                     | 17 +++---
 embed/ephy-web-process-extension-proxy.c     |  5 +-
 embed/ephy-web-view.c                        |  3 +-
 lib/ephy-file-helpers.c                      |  3 +-
 lib/ephy-settings.c                          | 11 ++--
 lib/ephy-web-app-utils.c                     |  3 +-
 meson.build                                  |  4 +-
 src/profile-migrator/ephy-profile-migrator.c | 84 ++++++++++++++++++----------
 8 files changed, 84 insertions(+), 46 deletions(-)
---
diff --git a/embed/ephy-embed-shell.c b/embed/ephy-embed-shell.c
index d7d2bbf03..73ce1f8c2 100644
--- a/embed/ephy-embed-shell.c
+++ b/embed/ephy-embed-shell.c
@@ -118,11 +118,12 @@ ephy_embed_shell_get_view_for_page_id (EphyEmbedShell *self,
     for (GList *t = tabs; t && t->data; t = t->next) {
       EphyWebView *ephy_view = ephy_embed_get_web_view (t->data);
       WebKitWebView *web_view = WEBKIT_WEB_VIEW (ephy_view);
+      g_autofree char *real_origin = NULL;
 
       if (webkit_web_view_get_page_id (web_view) != page_id)
         continue;
 
-      g_autofree char *real_origin = ephy_uri_to_security_origin (webkit_web_view_get_uri (web_view));
+      real_origin = ephy_uri_to_security_origin (webkit_web_view_get_uri (web_view));
 
       if (g_strcmp0 (real_origin, origin)) {
         g_debug ("Extension's origin '%s' doesn't match real origin '%s'", origin, real_origin);
@@ -361,6 +362,7 @@ static void
 password_manager_query_finished_cb (GList               *records,
                                     PasswordManagerData *data)
 {
+  EphyWebProcessExtensionProxy *proxy;
   EphyPasswordRecord *record;
   const char *username = NULL;
   const char *password = NULL;
@@ -371,7 +373,7 @@ password_manager_query_finished_cb (GList               *records,
     password = ephy_password_record_get_password (record);
   }
 
-  EphyWebProcessExtensionProxy *proxy = ephy_embed_shell_get_extension_proxy_for_page_id (data->shell,
+  proxy = ephy_embed_shell_get_extension_proxy_for_page_id (data->shell,
                                                                                    data->page_id,
                                                                                    data->origin);
   if (proxy)
@@ -421,6 +423,7 @@ web_process_extension_password_manager_query_received_cb (WebKitUserContentManag
   gint32 promise_id = property_to_int32 (value, "promiseID");
   guint64 page_id = property_to_uint64 (value, "pageID");
   guint64 frame_id = property_to_uint64 (value, "frameID");
+  PasswordManagerData *data;
 
   if (!origin || !target_origin || !password_field)
     return;
@@ -432,7 +435,7 @@ web_process_extension_password_manager_query_received_cb (WebKitUserContentManag
   if (!username && username_field)
     g_clear_pointer (&username_field, g_free);
 
-  PasswordManagerData *data = g_new (PasswordManagerData, 1);
+  data = g_new (PasswordManagerData, 1);
   data->shell = g_object_ref (shell);
   data->promise_id = promise_id;
   data->page_id = page_id;
@@ -508,6 +511,7 @@ web_process_extension_password_manager_save_real (EphyEmbedShell *shell,
   gboolean is_new = jsc_value_to_boolean (is_new_prop);
   guint64 page_id = property_to_uint64 (value, "pageID");
   EphyWebView *view;
+  SaveAuthRequest *request;
 
   /* Both origin and target origin are required. */
   if (!origin || !target_origin)
@@ -542,7 +546,7 @@ web_process_extension_password_manager_save_real (EphyEmbedShell *shell,
     return;
   }
 
-  SaveAuthRequest *request = g_new (SaveAuthRequest, 1);
+  request = g_new (SaveAuthRequest, 1);
   request->password_manager = g_object_ref (priv->password_manager);
   request->permissions_manager = g_object_ref (priv->permissions_manager);
   request->origin = g_steal_pointer (&origin);
@@ -581,21 +585,20 @@ web_process_extension_password_manager_query_usernames_received_cb (WebKitUserCo
                                                                     EphyEmbedShell           *shell)
 {
   EphyEmbedShellPrivate *priv = ephy_embed_shell_get_instance_private (shell);
-
   JSCValue *value = webkit_javascript_result_get_js_value (message);
   g_autofree char *origin = property_to_string_or_null (value, "origin");
   gint32 promise_id = property_to_int32 (value, "promiseID");
   guint64 page_id = property_to_uint64 (value, "pageID");
   guint64 frame_id = property_to_uint64 (value, "frameID");
-
   GList *usernames;
+  EphyWebProcessExtensionProxy *proxy;
 
   if (!origin)
     return;
 
   usernames = ephy_password_manager_get_usernames_for_origin (priv->password_manager, origin);
 
-  EphyWebProcessExtensionProxy *proxy = ephy_embed_shell_get_extension_proxy_for_page_id (shell, page_id, 
origin);
+  proxy = ephy_embed_shell_get_extension_proxy_for_page_id (shell, page_id, origin);
   if (proxy)
     ephy_web_process_extension_proxy_password_query_usernames_response (proxy, usernames, promise_id, 
frame_id);
 }
diff --git a/embed/ephy-web-process-extension-proxy.c b/embed/ephy-web-process-extension-proxy.c
index 71c839458..a65450d81 100644
--- a/embed/ephy-web-process-extension-proxy.c
+++ b/embed/ephy-web-process-extension-proxy.c
@@ -300,11 +300,12 @@ ephy_web_process_extension_proxy_password_query_usernames_response (EphyWebProce
                                                                     gint32                        promise_id,
                                                                     guint64                       frame_id)
 {
+  GList *l;
+  g_auto(GVariantBuilder) builder = G_VARIANT_BUILDER_INIT (G_VARIANT_TYPE_STRING_ARRAY);
+
   if (!web_process_extension->proxy)
     return;
 
-  GList *l;
-  g_auto(GVariantBuilder) builder = G_VARIANT_BUILDER_INIT (G_VARIANT_TYPE_STRING_ARRAY);
   for (l = users; l != NULL; l = l->next)
     g_variant_builder_add (&builder, "s", l->data);
 
diff --git a/embed/ephy-web-view.c b/embed/ephy-web-view.c
index ed76678a2..1dc973d89 100644
--- a/embed/ephy-web-view.c
+++ b/embed/ephy-web-view.c
@@ -670,10 +670,11 @@ ephy_web_view_show_auth_form_save_request (EphyWebView                    *web_v
                                            GDestroyNotify                  response_destroy)
 {
   GtkWidget *info_bar;
+  SaveRequestData *data;
 
   info_bar = ephy_web_view_create_form_auth_save_confirmation_info_bar (web_view, origin, username);
 
-  SaveRequestData *data = g_new(SaveRequestData, 1);
+  data = g_new(SaveRequestData, 1);
   data->callback = response_callback;
   data->callback_data = response_data;
   data->callback_destroy = response_destroy;
diff --git a/lib/ephy-file-helpers.c b/lib/ephy-file-helpers.c
index a06f271cd..f1ea7437a 100644
--- a/lib/ephy-file-helpers.c
+++ b/lib/ephy-file-helpers.c
@@ -352,6 +352,7 @@ ephy_file_helpers_init (const char          *profile_dir,
   gboolean ret = TRUE;
   gboolean private_profile;
   gboolean steal_data_from_profile;
+  g_autofree char *app_file = NULL;
 
   ephy_file_helpers_error_quark = g_quark_from_static_string ("ephy-file-helpers-error");
 
@@ -373,7 +374,7 @@ ephy_file_helpers_init (const char          *profile_dir,
       g_object_unref (file);
     }
 
-    g_autofree char *app_file = g_build_filename (profile_dir, ".app", NULL);
+    app_file = g_build_filename (profile_dir, ".app", NULL);
     if (g_file_test (app_file, G_FILE_TEST_EXISTS)) {
       const char *app_name = ephy_web_application_get_program_name_from_profile_directory 
(profile_dir_global);
       cache_dir = g_build_filename (g_get_user_cache_dir (), app_name, NULL);
diff --git a/lib/ephy-settings.c b/lib/ephy-settings.c
index b5983f8c9..897dc4bb6 100644
--- a/lib/ephy-settings.c
+++ b/lib/ephy-settings.c
@@ -205,6 +205,10 @@ ephy_settings_get_for_web_process_extension (const char *schema)
 
   if (gsettings == NULL) {
     g_autoptr(GSettingsBackend) backend = NULL;
+    g_autoptr(GSettings) web_gsettings = NULL;
+    g_autofree char *keyfile_path = NULL;
+    g_autofree char *path = NULL;
+
     gsettings = ephy_settings_get (schema);
     g_assert (gsettings != NULL);
 
@@ -217,11 +221,10 @@ ephy_settings_get_for_web_process_extension (const char *schema)
       return gsettings;
     }
 
-    g_autofree char *keyfile_path = g_build_filename (ephy_config_dir (), "web-extension-settings.ini", 
NULL);
+    keyfile_path = g_build_filename (ephy_config_dir (), "web-extension-settings.ini", NULL);
     backend = g_keyfile_settings_backend_new (keyfile_path, "/", "/");
 
-    GSettings *web_gsettings;
-    g_autofree char *path = get_relocatable_path (schema);
+    path = get_relocatable_path (schema);
     if (path != NULL)
       web_gsettings = g_settings_new_with_backend_and_path (schema, backend, path);
     else
@@ -230,7 +233,7 @@ ephy_settings_get_for_web_process_extension (const char *schema)
     sync_settings (gsettings, web_gsettings);
     g_hash_table_insert (settings, g_steal_pointer (&key_name), web_gsettings);
 
-    return web_gsettings;
+    return g_steal_pointer (&web_gsettings);
   }
 
   return gsettings;
diff --git a/lib/ephy-web-app-utils.c b/lib/ephy-web-app-utils.c
index cab7a1185..0b7f6c184 100644
--- a/lib/ephy-web-app-utils.c
+++ b/lib/ephy-web-app-utils.c
@@ -377,6 +377,7 @@ ephy_web_application_create (const char *id,
   g_autofree char *app_file = NULL;
   g_autofree char *profile_dir = NULL;
   g_autofree char *desktop_file_path = NULL;
+  int fd;
 
   /* If there's already a WebApp profile for the contents of this
    * view, do nothing. */
@@ -397,7 +398,7 @@ ephy_web_application_create (const char *id,
 
   /* Create an .app file. */
   app_file = g_build_filename (profile_dir, ".app", NULL);
-  int fd = g_open (app_file, O_WRONLY|O_CREAT|O_TRUNC, 0644);
+  fd = g_open (app_file, O_WRONLY|O_CREAT|O_TRUNC, 0644);
   if (fd < 0) {
     g_warning ("Failed to create .app file: %s", g_strerror (errno));
     return NULL;
diff --git a/meson.build b/meson.build
index 2a54c6c7a..b9307baec 100644
--- a/meson.build
+++ b/meson.build
@@ -118,7 +118,9 @@ cc = meson.get_compiler('c')
 gmp_dep = cc.find_library('gmp')
 m_dep = cc.find_library('m', required: false)
 
-cflags = cc.get_supported_arguments(['-Werror=format-security',
+cflags = cc.get_supported_arguments(['-Werror=declaration-after-statement',
+                                     '-Werror=format-security',
+                                     '-Werror=implicit-function-declaration',
                                      '-Wno-cast-function-type',
                                      '-Wno-missing-field-initializers',
                                      '-Wno-unused-parameter'])
diff --git a/src/profile-migrator/ephy-profile-migrator.c b/src/profile-migrator/ephy-profile-migrator.c
index 54dc96d8a..aa3b068c6 100644
--- a/src/profile-migrator/ephy-profile-migrator.c
+++ b/src/profile-migrator/ephy-profile-migrator.c
@@ -1124,15 +1124,19 @@ move_directory_contents (const char *source_path,
   while (TRUE) {
     GFileInfo *info;
     g_autoptr(GError) error = NULL;
+    g_autoptr(GFile) source_file = NULL;
+    g_autoptr(GFile) dest_file = NULL;
+
     if (!g_file_enumerator_iterate (direnum, &info, NULL, NULL, &error)) {
       g_warning ("Failed to enumerate dir: %s", error->message);
       return FALSE;
     }
+
     if (!info)
       break;
 
-    g_autoptr(GFile) source_file = g_file_get_child (source, g_file_info_get_name (info));
-    g_autoptr(GFile) dest_file = g_file_get_child (dest, g_file_info_get_name (info));
+    source_file = g_file_get_child (source, g_file_info_get_name (info));
+    dest_file = g_file_get_child (dest, g_file_info_get_name (info));
     if (!g_file_move (source_file, dest_file, G_FILE_COPY_NONE, NULL, NULL, NULL, &error)) {
       g_autofree char *source_path = g_file_get_path (source_file);
       g_autofree char *dest_path = g_file_get_path (dest_file);
@@ -1184,8 +1188,14 @@ migrate_webapps_harder (void)
 
       if (g_file_test (app_file, G_FILE_TEST_EXISTS)) {
         g_autoptr(GKeyFile) file = g_key_file_new ();
+        g_autoptr(GFile) desktop_symlink = NULL;
         g_autofree char *desktop_file_name = g_strconcat (name, ".desktop", NULL);
         g_autofree char *desktop_file_path = g_build_filename (correct_profile_dir, desktop_file_name, NULL);
+        g_autofree char *exec = NULL;
+        g_autofree char *new_exec = NULL;
+        g_autofree char *icon = NULL;
+        g_autofree char *new_icon = NULL;
+        g_autofree char *desktop_symlink_path = NULL;
         g_autoptr(GError) error = NULL;
 
         move_directory_contents (incorrect_profile_dir, correct_profile_dir);
@@ -1193,21 +1203,21 @@ migrate_webapps_harder (void)
         // Update Exec and Icon to point to the new profile dir
         g_key_file_load_from_file (file, desktop_file_path, G_KEY_FILE_NONE, NULL);
 
-        g_autofree char *exec = g_key_file_get_string (file, G_KEY_FILE_DESKTOP_GROUP, 
G_KEY_FILE_DESKTOP_KEY_EXEC, &error);
+        exec = g_key_file_get_string (file, G_KEY_FILE_DESKTOP_GROUP, G_KEY_FILE_DESKTOP_KEY_EXEC, &error);
         if (exec == NULL) {
           g_warning ("Failed to get Exec key from %s: %s", desktop_file_path, error->message);
           continue;
         }
-        g_autofree char *new_exec = ephy_string_find_and_replace (exec, incorrect_profile_dir, 
correct_profile_dir);
+        new_exec = ephy_string_find_and_replace (exec, incorrect_profile_dir, correct_profile_dir);
         LOG ("migrate_profile_directories: setting Exec to %s", new_exec);
         g_key_file_set_string (file, G_KEY_FILE_DESKTOP_GROUP, G_KEY_FILE_DESKTOP_KEY_EXEC, new_exec);
 
-        g_autofree char *icon = g_key_file_get_string (file, G_KEY_FILE_DESKTOP_GROUP, 
G_KEY_FILE_DESKTOP_KEY_ICON, &error);
+        icon = g_key_file_get_string (file, G_KEY_FILE_DESKTOP_GROUP, G_KEY_FILE_DESKTOP_KEY_ICON, &error);
         if (exec == NULL) {
           g_warning ("Failed to get Icon key from %s: %s", desktop_file_path, error->message);
           continue;
         }
-        g_autofree char *new_icon = ephy_string_find_and_replace (icon, incorrect_profile_dir, 
correct_profile_dir);
+        new_icon = ephy_string_find_and_replace (icon, incorrect_profile_dir, correct_profile_dir);
         LOG ("migrate_profile_directories: setting Icon to %s", new_icon);
         g_key_file_set_string (file, G_KEY_FILE_DESKTOP_GROUP, G_KEY_FILE_DESKTOP_KEY_ICON, new_icon);
 
@@ -1216,8 +1226,8 @@ migrate_webapps_harder (void)
           g_clear_error (&error);
         }
 
-        g_autofree char *desktop_symlink_path = g_build_filename (g_get_user_data_dir (), "applications", 
desktop_file_name, NULL);
-        g_autoptr(GFile) desktop_symlink = g_file_new_for_path (desktop_symlink_path);
+        desktop_symlink_path = g_build_filename (g_get_user_data_dir (), "applications", desktop_file_name, 
NULL);
+        desktop_symlink = g_file_new_for_path (desktop_symlink_path);
         LOG ("Symlinking %s to %s", desktop_symlink_path, desktop_file_path);
 
         // Try removing old symlink, failure is ok assuming it doesn't exist.
@@ -1239,7 +1249,12 @@ migrate_webapps_harder (void)
 static void
 migrate_profile_directories (void)
 {
-  GList *web_apps, *l;
+  g_autoptr(GFile) new_directory = NULL;
+  g_autoptr(GFile) adblock_directory = NULL;
+  g_autoptr(GFile) gsb_file = NULL;
+  g_autoptr(GFile) gsb_journal_file = NULL;
+  GList *web_apps;
+  GList *l;
 
   /* Web app profiles moved from config to data dirs. If this migration has
    * already been run for a separate profile, then the legacy application list
@@ -1249,55 +1264,66 @@ migrate_profile_directories (void)
   for (l = web_apps; l; l = l->next) {
     EphyWebApplication *app = (EphyWebApplication *)l->data;
     g_autoptr(GError) error = NULL;
-
+    g_autoptr(GKeyFile) file = NULL;
+    g_autoptr(GFile) desktop_symlink = NULL;
     g_autofree char *old_name = g_strconcat ("app-epiphany-", app->id, NULL);
     g_autofree char *old_path = g_build_filename (legacy_default_profile_dir (), old_name, NULL);
     g_autofree char *app_path = ephy_web_application_get_profile_directory (app->id);
+    g_autofree char *app_file = NULL;
+    g_autofree char *old_profile_prefix = NULL;
+    g_autofree char *new_profile_prefix = NULL;
+    g_autofree char *desktop_file_path = NULL;
+    g_autofree char *exec = NULL;
+    g_autofree char *new_exec = NULL;
+    g_autofree char *icon = NULL;
+    g_autofree char *new_icon = NULL;
+    g_autofree char *desktop_symlink_path = NULL;
+    int fd;
 
     if (!move_directory_contents (old_path, app_path))
       continue;
 
     // Create an empty file to indicate it's an app
-    g_autofree char *app_file = g_build_filename (app_path, ".app", NULL);
-    int fd = g_open (app_file, O_WRONLY|O_CREAT|O_TRUNC, 0644);
+    app_file = g_build_filename (app_path, ".app", NULL);
+    fd = g_open (app_file, O_WRONLY|O_CREAT|O_TRUNC, 0644);
     if (fd < 0)
       g_warning ("Failed to create .app file: %s", g_strerror (errno));
     else
       close (fd);
 
     // Update Exec and Icon to point to the new profile dir
-    g_autofree char *old_profile_prefix = g_build_filename (legacy_default_profile_dir (), "app-epiphany-", 
NULL);
-    g_autofree char *new_profile_prefix = g_build_filename (g_get_user_data_dir (), "epiphany-", NULL);
-    g_autoptr(GKeyFile) file = g_key_file_new ();
-    g_autofree char *desktop_file_path = g_build_filename (app_path, app->desktop_file, NULL);
+    old_profile_prefix = g_build_filename (legacy_default_profile_dir (), "app-epiphany-", NULL);
+    new_profile_prefix = g_build_filename (g_get_user_data_dir (), "epiphany-", NULL);
+    file = g_key_file_new ();
+    desktop_file_path = g_build_filename (app_path, app->desktop_file, NULL);
     g_key_file_load_from_file (file, desktop_file_path, G_KEY_FILE_NONE, NULL);
 
-    g_autofree char *exec = g_key_file_get_string (file, G_KEY_FILE_DESKTOP_GROUP, 
G_KEY_FILE_DESKTOP_KEY_EXEC, &error);
+    exec = g_key_file_get_string (file, G_KEY_FILE_DESKTOP_GROUP, G_KEY_FILE_DESKTOP_KEY_EXEC, &error);
     if (exec == NULL) {
       g_warning ("Failed to get Exec key from %s: %s", desktop_file_path, error->message);
       continue;
     }
-    g_autofree char *new_exec = ephy_string_find_and_replace (exec, old_profile_prefix, new_profile_prefix);
+    new_exec = ephy_string_find_and_replace (exec, old_profile_prefix, new_profile_prefix);
     LOG ("migrate_profile_directories: setting Exec to %s", new_exec);
     g_key_file_set_string (file, G_KEY_FILE_DESKTOP_GROUP, G_KEY_FILE_DESKTOP_KEY_EXEC, new_exec);
 
-    g_autofree char *icon = g_key_file_get_string (file, G_KEY_FILE_DESKTOP_GROUP, 
G_KEY_FILE_DESKTOP_KEY_ICON, &error);
+    icon = g_key_file_get_string (file, G_KEY_FILE_DESKTOP_GROUP, G_KEY_FILE_DESKTOP_KEY_ICON, &error);
     if (exec == NULL) {
       g_warning ("Failed to get Icon key from %s: %s", desktop_file_path, error->message);
       continue;
     }
-    g_autofree char *new_icon = ephy_string_find_and_replace (icon, old_profile_prefix, new_profile_prefix);
+    new_icon = ephy_string_find_and_replace (icon, old_profile_prefix, new_profile_prefix);
     LOG ("migrate_profile_directories: setting Icon to %s", new_icon);
     g_key_file_set_string (file, G_KEY_FILE_DESKTOP_GROUP, G_KEY_FILE_DESKTOP_KEY_ICON, new_icon);
 
     if (!g_key_file_save_to_file (file, desktop_file_path, &error))
       g_warning ("Failed to save desktop file %s", error->message);
 
-    g_autofree char *desktop_symlink_path = g_build_filename (g_get_user_data_dir (),
-                                                              "applications",
-                                                              app->desktop_file,
-                                                              NULL);
-    g_autoptr(GFile) desktop_symlink = g_file_new_for_path (desktop_symlink_path);
+    desktop_symlink_path = g_build_filename (g_get_user_data_dir (),
+                                             "applications",
+                                             app->desktop_file,
+                                             NULL);
+    desktop_symlink = g_file_new_for_path (desktop_symlink_path);
     LOG ("Symlinking %s to %s", desktop_symlink_path, desktop_file_path);
 
     // Try removing old symlink, failure is ok assuming it doesn't exist.
@@ -1322,12 +1348,12 @@ migrate_profile_directories (void)
     return;
 
   /* We are also moving some cache directories so just remove the old ones */
-  g_autoptr(GFile) new_directory = g_file_new_for_path (ephy_default_profile_dir ());
-  g_autoptr(GFile) adblock_directory = g_file_get_child (new_directory, "adblock");
+  new_directory = g_file_new_for_path (ephy_default_profile_dir ());
+  adblock_directory = g_file_get_child (new_directory, "adblock");
   g_file_delete (adblock_directory, NULL, NULL);
-  g_autoptr(GFile) gsb_file = g_file_get_child (new_directory, "gsb-threats.db");
+  gsb_file = g_file_get_child (new_directory, "gsb-threats.db");
   g_file_delete (gsb_file, NULL, NULL);
-  g_autoptr(GFile) gsb_journal_file = g_file_get_child (new_directory, "gsb-threats.db-journal");
+  gsb_journal_file = g_file_get_child (new_directory, "gsb-threats.db-journal");
   g_file_delete (gsb_journal_file, NULL, NULL);
 }
 


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]