From 9382f127ccebdd59917c97c61d008ed0e127cd75 Mon Sep 17 00:00:00 2001 From: Tomas Bzatek Date: Sat, 28 Nov 2009 13:11:51 +0100 Subject: Engine and VFS API cleanup Also enable symlink resolving by default. --- common/vfsutils.c | 80 ++++++++++++++++++++++++++++++++++++------------------- 1 file changed, 52 insertions(+), 28 deletions(-) (limited to 'common/vfsutils.c') diff --git a/common/vfsutils.c b/common/vfsutils.c index 173c0df..856d9f9 100644 --- a/common/vfsutils.c +++ b/common/vfsutils.c @@ -1,5 +1,5 @@ -/* Tux Commander VFS: String utilities - * Copyright (C) 2007 Tomas Bzatek +/* Tux Commander VFS: VFS utilities + * Copyright (C) 2007-2009 Tomas Bzatek * Check for updates on tuxcmd.sourceforge.net * * This program is free software; you can redistribute it and/or modify @@ -17,52 +17,76 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -#include +#include #include +#include #include #include "strutils.h" -#include "vfs_types.h" +#include "tuxcmd-vfs.h" -void copy_vfs_item(struct TVFSItem *src, struct TVFSItem *dst) +void +copy_vfs_item (struct TVFSItem *src, struct TVFSItem *dst) { + memcpy (dst, src, sizeof (struct TVFSItem)); dst->FName = g_strdup (src->FName); dst->FDisplayName = g_strdup (src->FDisplayName); - dst->iSize = src->iSize; - dst->iPackedSize = src->iPackedSize; - dst->m_time = src->m_time; - dst->a_time = src->a_time; - dst->c_time = src->c_time; - dst->iMode = src->iMode; dst->sLinkTo = g_strdup (src->sLinkTo); - dst->iUID = src->iUID; - dst->iGID = src->iGID; - dst->ItemType = src->ItemType; } -void free_vfs_item(struct TVFSItem *item) +void +free_vfs_item (struct TVFSItem *item) { if (item) { - if (item->FName) - free(item->FName); - if (item->FDisplayName) - free(item->FDisplayName); - if (item->sLinkTo) - free(item->sLinkTo); - free(item); + g_free (item->FName); + g_free (item->FDisplayName); + g_free (item->sLinkTo); + g_free (item); } } -int compare_two_same_files(const char *Path1, const char *Path2) +/* -------------------------------------------------------------------------------------- */ + +struct TVFSItem * +create_placeholder_item (const char *name, enum TVFSItemType item_type) +{ + struct TVFSItem *data; + + data = g_malloc0 (sizeof (struct TVFSItem)); + data->FName = g_strdup (name); + data->FDisplayName = g_strdup (name); + data->ItemType = item_type; + data->iMode = S_IRWXO + S_IRWXG + S_IRWXU; + data->IsLink = FALSE; + data->iUID = geteuid (); + data->iGID = getegid (); + data->m_time = time (NULL); + data->c_time = data->m_time; + data->a_time = data->m_time; + data->iSize = 0; + data->iPackedSize = -1; + + return data; +} + + +/* -------------------------------------------------------------------------------------- */ + +gboolean +compare_two_same_files (const char *path1, const char *path2) { - char *f1 = exclude_trailing_path_sep(Path1); - char *f2 = exclude_trailing_path_sep(Path2); - gboolean b = strcmp(f1, f2) == 0; - free(f1); - free(f2); + char *f1, *f2; + gboolean b; + + f1 = exclude_trailing_path_sep (path1); + f2 = exclude_trailing_path_sep (path2); + b = (g_strcmp0 (f1, f2) == 0); + g_free (f1); + g_free (f2); + return b; } -- cgit v1.2.3