aboutsummaryrefslogtreecommitdiffstats
path: root/e-util/e-fsutils.c
diff options
context:
space:
mode:
authorMatthew Barnes <mbarnes@redhat.com>2009-11-07 02:33:55 +0800
committerMatthew Barnes <mbarnes@redhat.com>2009-11-08 03:01:46 +0800
commitaa66a17e401d73cbe394ed7f99bf73350e9b938b (patch)
tree305c80be39d688cf8386b5e123f3df631f2cfc84 /e-util/e-fsutils.c
parentb2dd9c153519d315f96bfd760e91a6f6b32affd6 (diff)
downloadgsoc2013-evolution-aa66a17e401d73cbe394ed7f99bf73350e9b938b.tar.gz
gsoc2013-evolution-aa66a17e401d73cbe394ed7f99bf73350e9b938b.tar.zst
gsoc2013-evolution-aa66a17e401d73cbe394ed7f99bf73350e9b938b.zip
Test drive EIOActivity with a simple asynchronous function.
Rename e-fsutils to e-file-utils. This is where we'll add asynchronous functions for common file I/O operations with EActivity integration. Start with e_file_replace_contents_async() (and corresponding finish() function). This is a simple wrapper for g_file_replace_contents_async() which also returns an EActivity. It replaces e_write_file_uri(). Also redesign EIOActivity to -contain- a GAsyncResult rather than implement the interface for itself. This is easier for now but I may change my mind again when I figure out how to tie centralized error reporting into the EActivity framework.
Diffstat (limited to 'e-util/e-fsutils.c')
-rw-r--r--e-util/e-fsutils.c158
1 files changed, 0 insertions, 158 deletions
diff --git a/e-util/e-fsutils.c b/e-util/e-fsutils.c
deleted file mode 100644
index c5426f8c81..0000000000
--- a/e-util/e-fsutils.c
+++ /dev/null
@@ -1,158 +0,0 @@
-/*
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) version 3.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with the program; if not, see <http://www.gnu.org/licenses/>
- *
- *
- * Authors:
- * Michael Zucchi <notzed@ximian.com>
- *
- * Copyright (C) 1999-2008 Novell, Inc. (www.novell.com)
- *
- */
-
-#include <config.h>
-
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <unistd.h>
-
-/* This isn't as portable as, say, the stuff in GNU coreutils. But I care not for OSF1. */
-#ifdef HAVE_STATVFS
-# ifdef HAVE_SYS_STATVFS_H
-# include <sys/statvfs.h>
-# endif
-#else
-#ifdef HAVE_STATFS
-# ifdef HAVE_SYS_PARAM_H
-# include <sys/param.h> /* bsd interface */
-# endif
-# ifdef HAVE_SYS_MOUNT_H
-# include <sys/mount.h>
-# endif
-#endif
-#endif
-
-#include <errno.h>
-#include <string.h>
-
-#include <glib.h>
-#include <glib/gstdio.h>
-
-#include "e-fsutils.h"
-
-/**
- * e_fsutils_usage:
- * @path:
- *
- * Calculate the amount of disk space used by a given path.
- *
- * Return value: The number of 1024 byte blocks used by the
- * filesystem.
- **/
-glong e_fsutils_usage(const gchar *inpath)
-{
- GDir *dir;
- const gchar *d;
- long size = 0;
- GSList *paths;
-
- /* iterative, depth-first scan, because i can ... */
- paths = g_slist_prepend(NULL, g_strdup(inpath));
-
- while (paths) {
- gchar *path = paths->data;
-
- paths = g_slist_remove_link(paths, paths);
-
- dir = g_dir_open(path, 0, NULL);
- if (dir == NULL) {
- g_free(path);
- goto fail;
- }
-
- while ((d = g_dir_read_name(dir))) {
- gchar *full_path;
- struct stat st;
-
- full_path = g_build_filename(path, d, NULL);
- if (g_stat(full_path, &st) == -1) {
- g_free(full_path);
- g_dir_close(dir);
- g_free(path);
- goto fail;
- } else if (S_ISDIR(st.st_mode)) {
- paths = g_slist_prepend(paths, full_path);
- full_path = NULL;
- } else if (S_ISREG(st.st_mode)) {
- /* This is in 512 byte blocks. st_blksize is page size on linux,
- on *BSD it might be significant. */
-#ifndef G_OS_WIN32
- size += st.st_blocks/2;
-#endif
- }
-
- g_free(full_path);
- }
-
- g_dir_close(dir);
- g_free(path);
- }
-
- return size;
-
-fail:
- g_slist_foreach(paths, (GFunc)g_free, NULL);
- g_slist_free(paths);
-
- return -1;
-}
-
-/**
- * e_fsutils_avail:
- * @path:
- *
- * Find the available disk space at the given path.
- *
- * Return value: -1 if it could not be determined, otherwise the
- * number of disk blocks, expressed as system-independent, 1024 byte
- * blocks.
- **/
-glong
-e_fsutils_avail(const gchar *path)
-{
-#if defined(HAVE_STATVFS)
- struct statvfs stfs;
-
- if (statvfs(path, &stfs) == -1)
- return -1;
-
- /* Assumes that frsize === power of 2 */
- if (stfs.f_frsize >= 1024)
- return stfs.f_bavail * (stfs.f_frsize / 1024);
- else
- return stfs.f_bavail / (1024 / stfs.f_frsize);
-#elif defined(HAVE_STATFS)
- struct statfs stfs;
-
- if (statfs(path, &stfs) == -1)
- return -1;
-
- /* For BSD this isn't clear, it may be dependent on f_bsize */
- return stfs.f_bavail / 2;
-#else
- errno = ENOSYS;
- return -1;
-#endif
-}
-