Commit ceba40c2 authored by Benjamin Otte's avatar Benjamin Otte

add private header with attribute ids

attribute ids are generated when the attribute hash is initialized. This
way we can guarantee that the ids match every time.
parent 2620c235
......@@ -202,6 +202,7 @@ libgio_2_0_la_SOURCES = \
gfileenumerator.c \
gfileicon.c \
gfileinfo.c \
gfileinfo-priv.h \
gfileinputstream.c \
gfilemonitor.c \
gfilenamecompleter.c \
......
/* GIO - GLib Input, Output and Streaming Library
*
* Copyright (C) 2006-2007 Red Hat, Inc.
* 2009 Benjamin Otte
*
* This library 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) any later version.
*
* This library 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 this library; if not, write to the
* Free Software Foundation, Inc., 59 Temple Place, Suite 330,
* Boston, MA 02111-1307, USA.
*
* Author: Benjamin Otte <otte@gnome.org>
*/
#ifndef __G_FILE_INFO_PRIV_H__
#define __G_FILE_INFO_PRIV_H__
#include "gfileinfo.h"
#define G_FILE_ATTRIBUTE_ID_STANDARD_TYPE (1048576 + 1)
#define G_FILE_ATTRIBUTE_ID_STANDARD_IS_HIDDEN (1048576 + 2)
#define G_FILE_ATTRIBUTE_ID_STANDARD_IS_BACKUP (1048576 + 3)
#define G_FILE_ATTRIBUTE_ID_STANDARD_IS_SYMLINK (1048576 + 4)
#define G_FILE_ATTRIBUTE_ID_STANDARD_IS_VIRTUAL (1048576 + 5)
#define G_FILE_ATTRIBUTE_ID_STANDARD_NAME (1048576 + 6)
#define G_FILE_ATTRIBUTE_ID_STANDARD_DISPLAY_NAME (1048576 + 7)
#define G_FILE_ATTRIBUTE_ID_STANDARD_EDIT_NAME (1048576 + 8)
#define G_FILE_ATTRIBUTE_ID_STANDARD_COPY_NAME (1048576 + 9)
#define G_FILE_ATTRIBUTE_ID_STANDARD_DESCRIPTION (1048576 + 10)
#define G_FILE_ATTRIBUTE_ID_STANDARD_ICON (1048576 + 11)
#define G_FILE_ATTRIBUTE_ID_STANDARD_CONTENT_TYPE (1048576 + 12)
#define G_FILE_ATTRIBUTE_ID_STANDARD_FAST_CONTENT_TYPE (1048576 + 13)
#define G_FILE_ATTRIBUTE_ID_STANDARD_SIZE (1048576 + 14)
#define G_FILE_ATTRIBUTE_ID_STANDARD_ALLOCATED_SIZE (1048576 + 15)
#define G_FILE_ATTRIBUTE_ID_STANDARD_SYMLINK_TARGET (1048576 + 16)
#define G_FILE_ATTRIBUTE_ID_STANDARD_TARGET_URI (1048576 + 17)
#define G_FILE_ATTRIBUTE_ID_STANDARD_SORT_ORDER (1048576 + 18)
#define G_FILE_ATTRIBUTE_ID_ETAG_VALUE (2097152 + 1)
#define G_FILE_ATTRIBUTE_ID_ID_FILE (3145728 + 1)
#define G_FILE_ATTRIBUTE_ID_ID_FILESYSTEM (3145728 + 2)
#define G_FILE_ATTRIBUTE_ID_ACCESS_CAN_READ (4194304 + 1)
#define G_FILE_ATTRIBUTE_ID_ACCESS_CAN_WRITE (4194304 + 2)
#define G_FILE_ATTRIBUTE_ID_ACCESS_CAN_EXECUTE (4194304 + 3)
#define G_FILE_ATTRIBUTE_ID_ACCESS_CAN_DELETE (4194304 + 4)
#define G_FILE_ATTRIBUTE_ID_ACCESS_CAN_TRASH (4194304 + 5)
#define G_FILE_ATTRIBUTE_ID_ACCESS_CAN_RENAME (4194304 + 6)
#define G_FILE_ATTRIBUTE_ID_MOUNTABLE_CAN_MOUNT (5242880 + 1)
#define G_FILE_ATTRIBUTE_ID_MOUNTABLE_CAN_UNMOUNT (5242880 + 2)
#define G_FILE_ATTRIBUTE_ID_MOUNTABLE_CAN_EJECT (5242880 + 3)
#define G_FILE_ATTRIBUTE_ID_MOUNTABLE_UNIX_DEVICE (5242880 + 4)
#define G_FILE_ATTRIBUTE_ID_MOUNTABLE_HAL_UDI (5242880 + 5)
#define G_FILE_ATTRIBUTE_ID_MOUNTABLE_CAN_START (5242880 + 6)
#define G_FILE_ATTRIBUTE_ID_MOUNTABLE_CAN_STOP (5242880 + 7)
#define G_FILE_ATTRIBUTE_ID_MOUNTABLE_START_STOP_TYPE (5242880 + 8)
#define G_FILE_ATTRIBUTE_ID_TIME_MODIFIED (6291456 + 1)
#define G_FILE_ATTRIBUTE_ID_TIME_MODIFIED_USEC (6291456 + 2)
#define G_FILE_ATTRIBUTE_ID_TIME_ACCESS (6291456 + 3)
#define G_FILE_ATTRIBUTE_ID_TIME_ACCESS_USEC (6291456 + 4)
#define G_FILE_ATTRIBUTE_ID_TIME_CHANGED (6291456 + 5)
#define G_FILE_ATTRIBUTE_ID_TIME_CHANGED_USEC (6291456 + 6)
#define G_FILE_ATTRIBUTE_ID_TIME_CREATED (6291456 + 7)
#define G_FILE_ATTRIBUTE_ID_TIME_CREATED_USEC (6291456 + 8)
#define G_FILE_ATTRIBUTE_ID_UNIX_DEVICE (7340032 + 1)
#define G_FILE_ATTRIBUTE_ID_UNIX_INODE (7340032 + 2)
#define G_FILE_ATTRIBUTE_ID_UNIX_MODE (7340032 + 3)
#define G_FILE_ATTRIBUTE_ID_UNIX_NLINK (7340032 + 4)
#define G_FILE_ATTRIBUTE_ID_UNIX_UID (7340032 + 5)
#define G_FILE_ATTRIBUTE_ID_UNIX_GID (7340032 + 6)
#define G_FILE_ATTRIBUTE_ID_UNIX_RDEV (7340032 + 7)
#define G_FILE_ATTRIBUTE_ID_UNIX_BLOCK_SIZE (7340032 + 8)
#define G_FILE_ATTRIBUTE_ID_UNIX_BLOCKS (7340032 + 9)
#define G_FILE_ATTRIBUTE_ID_UNIX_IS_MOUNTPOINT (7340032 + 10)
#define G_FILE_ATTRIBUTE_ID_DOS_IS_ARCHIVE (8388608 + 1)
#define G_FILE_ATTRIBUTE_ID_DOS_IS_SYSTEM (8388608 + 2)
#define G_FILE_ATTRIBUTE_ID_OWNER_USER (9437184 + 1)
#define G_FILE_ATTRIBUTE_ID_OWNER_USER_REAL (9437184 + 2)
#define G_FILE_ATTRIBUTE_ID_OWNER_GROUP (9437184 + 3)
#define G_FILE_ATTRIBUTE_ID_THUMBNAIL_PATH (10485760 + 1)
#define G_FILE_ATTRIBUTE_ID_THUMBNAILING_FAILED (10485760 + 2)
#define G_FILE_ATTRIBUTE_ID_PREVIEW_ICON (11534336 + 1)
#define G_FILE_ATTRIBUTE_ID_FILESYSTEM_SIZE (12582912 + 1)
#define G_FILE_ATTRIBUTE_ID_FILESYSTEM_FREE (12582912 + 2)
#define G_FILE_ATTRIBUTE_ID_FILESYSTEM_TYPE (12582912 + 3)
#define G_FILE_ATTRIBUTE_ID_FILESYSTEM_READONLY (12582912 + 4)
#define G_FILE_ATTRIBUTE_ID_FILESYSTEM_USE_PREVIEW (12582912 + 5)
#define G_FILE_ATTRIBUTE_ID_GVFS_BACKEND (13631488 + 1)
#define G_FILE_ATTRIBUTE_ID_SELINUX_CONTEXT (14680064 + 1)
#define G_FILE_ATTRIBUTE_ID_TRASH_ITEM_COUNT (15728640 + 1)
#endif /* __G_FILE_INFO_PRIV_H__ */
......@@ -57,6 +57,7 @@
#include <string.h>
#include "gfileinfo.h"
#include "gfileinfo-priv.h"
#include "gfileattribute-priv.h"
#include "gicon.h"
#include "glibintl.h"
......@@ -182,7 +183,83 @@ ensure_attribute_hash (void)
ns_hash = g_hash_table_new (g_str_hash, g_str_equal);
attribute_hash = g_hash_table_new (g_str_hash, g_str_equal);
#define REGISTER_ATTRIBUTE(name) G_STMT_START{\
guint _u = _lookup_attribute (G_FILE_ATTRIBUTE_ ## name); \
/* use for generating the ID: g_print ("#define G_FILE_ATTRIBUTE_ID_%s (%u + %u)\n", #name + 17, _u & ~ID_MASK, _u & ID_MASK); */ \
g_assert (_u == G_FILE_ATTRIBUTE_ID_ ## name); \
}G_STMT_END
REGISTER_ATTRIBUTE (STANDARD_TYPE);
REGISTER_ATTRIBUTE (STANDARD_IS_HIDDEN);
REGISTER_ATTRIBUTE (STANDARD_IS_BACKUP);
REGISTER_ATTRIBUTE (STANDARD_IS_SYMLINK);
REGISTER_ATTRIBUTE (STANDARD_IS_VIRTUAL);
REGISTER_ATTRIBUTE (STANDARD_NAME);
REGISTER_ATTRIBUTE (STANDARD_DISPLAY_NAME);
REGISTER_ATTRIBUTE (STANDARD_EDIT_NAME);
REGISTER_ATTRIBUTE (STANDARD_COPY_NAME);
REGISTER_ATTRIBUTE (STANDARD_DESCRIPTION);
REGISTER_ATTRIBUTE (STANDARD_ICON);
REGISTER_ATTRIBUTE (STANDARD_CONTENT_TYPE);
REGISTER_ATTRIBUTE (STANDARD_FAST_CONTENT_TYPE);
REGISTER_ATTRIBUTE (STANDARD_SIZE);
REGISTER_ATTRIBUTE (STANDARD_ALLOCATED_SIZE);
REGISTER_ATTRIBUTE (STANDARD_SYMLINK_TARGET);
REGISTER_ATTRIBUTE (STANDARD_TARGET_URI);
REGISTER_ATTRIBUTE (STANDARD_SORT_ORDER);
REGISTER_ATTRIBUTE (ETAG_VALUE);
REGISTER_ATTRIBUTE (ID_FILE);
REGISTER_ATTRIBUTE (ID_FILESYSTEM);
REGISTER_ATTRIBUTE (ACCESS_CAN_READ);
REGISTER_ATTRIBUTE (ACCESS_CAN_WRITE);
REGISTER_ATTRIBUTE (ACCESS_CAN_EXECUTE);
REGISTER_ATTRIBUTE (ACCESS_CAN_DELETE);
REGISTER_ATTRIBUTE (ACCESS_CAN_TRASH);
REGISTER_ATTRIBUTE (ACCESS_CAN_RENAME);
REGISTER_ATTRIBUTE (MOUNTABLE_CAN_MOUNT);
REGISTER_ATTRIBUTE (MOUNTABLE_CAN_UNMOUNT);
REGISTER_ATTRIBUTE (MOUNTABLE_CAN_EJECT);
REGISTER_ATTRIBUTE (MOUNTABLE_UNIX_DEVICE);
REGISTER_ATTRIBUTE (MOUNTABLE_HAL_UDI);
REGISTER_ATTRIBUTE (MOUNTABLE_CAN_START);
REGISTER_ATTRIBUTE (MOUNTABLE_CAN_STOP);
REGISTER_ATTRIBUTE (MOUNTABLE_START_STOP_TYPE);
REGISTER_ATTRIBUTE (TIME_MODIFIED);
REGISTER_ATTRIBUTE (TIME_MODIFIED_USEC);
REGISTER_ATTRIBUTE (TIME_ACCESS);
REGISTER_ATTRIBUTE (TIME_ACCESS_USEC);
REGISTER_ATTRIBUTE (TIME_CHANGED);
REGISTER_ATTRIBUTE (TIME_CHANGED_USEC);
REGISTER_ATTRIBUTE (TIME_CREATED);
REGISTER_ATTRIBUTE (TIME_CREATED_USEC);
REGISTER_ATTRIBUTE (UNIX_DEVICE);
REGISTER_ATTRIBUTE (UNIX_INODE);
REGISTER_ATTRIBUTE (UNIX_MODE);
REGISTER_ATTRIBUTE (UNIX_NLINK);
REGISTER_ATTRIBUTE (UNIX_UID);
REGISTER_ATTRIBUTE (UNIX_GID);
REGISTER_ATTRIBUTE (UNIX_RDEV);
REGISTER_ATTRIBUTE (UNIX_BLOCK_SIZE);
REGISTER_ATTRIBUTE (UNIX_BLOCKS);
REGISTER_ATTRIBUTE (UNIX_IS_MOUNTPOINT);
REGISTER_ATTRIBUTE (DOS_IS_ARCHIVE);
REGISTER_ATTRIBUTE (DOS_IS_SYSTEM);
REGISTER_ATTRIBUTE (OWNER_USER);
REGISTER_ATTRIBUTE (OWNER_USER_REAL);
REGISTER_ATTRIBUTE (OWNER_GROUP);
REGISTER_ATTRIBUTE (THUMBNAIL_PATH);
REGISTER_ATTRIBUTE (THUMBNAILING_FAILED);
REGISTER_ATTRIBUTE (PREVIEW_ICON);
REGISTER_ATTRIBUTE (FILESYSTEM_SIZE);
REGISTER_ATTRIBUTE (FILESYSTEM_FREE);
REGISTER_ATTRIBUTE (FILESYSTEM_TYPE);
REGISTER_ATTRIBUTE (FILESYSTEM_READONLY);
REGISTER_ATTRIBUTE (FILESYSTEM_USE_PREVIEW);
REGISTER_ATTRIBUTE (GVFS_BACKEND);
REGISTER_ATTRIBUTE (SELINUX_CONTEXT);
REGISTER_ATTRIBUTE (TRASH_ITEM_COUNT);
#undef REGISTER_ATTRIBUTE
}
static guint32
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment