core: Add utility functions to convert a OstreeObjectType to/from a string

This commit is contained in:
Colin Walters 2011-12-15 13:09:51 -05:00
parent b8e8b58585
commit 8ab2296a70
2 changed files with 60 additions and 22 deletions

View File

@ -480,12 +480,53 @@ ostree_parse_metadata_file (GFile *file,
return ret; return ret;
} }
const char *
ostree_object_type_to_string (OstreeObjectType objtype)
{
switch (objtype)
{
case OSTREE_OBJECT_TYPE_RAW_FILE:
return "file";
case OSTREE_OBJECT_TYPE_ARCHIVED_FILE_CONTENT:
return "archive-content";
case OSTREE_OBJECT_TYPE_ARCHIVED_FILE_META:
return "archive-meta";
case OSTREE_OBJECT_TYPE_DIR_TREE:
return "dirtree";
case OSTREE_OBJECT_TYPE_DIR_META:
return "dirmeta";
case OSTREE_OBJECT_TYPE_COMMIT:
return "commit";
default:
g_assert_not_reached ();
return NULL;
}
}
OstreeObjectType
ostree_object_type_from_string (const char *str)
{
if (!strcmp (str, "file"))
return OSTREE_OBJECT_TYPE_RAW_FILE;
else if (!strcmp (str, "archive-content"))
return OSTREE_OBJECT_TYPE_ARCHIVED_FILE_CONTENT;
else if (!strcmp (str, "archive-meta"))
return OSTREE_OBJECT_TYPE_ARCHIVED_FILE_META;
else if (!strcmp (str, "dirtree"))
return OSTREE_OBJECT_TYPE_DIR_TREE;
else if (!strcmp (str, "dirmeta"))
return OSTREE_OBJECT_TYPE_DIR_META;
else if (!strcmp (str, "commit"))
return OSTREE_OBJECT_TYPE_COMMIT;
g_assert_not_reached ();
return 0;
}
char * char *
ostree_get_relative_object_path (const char *checksum, ostree_get_relative_object_path (const char *checksum,
OstreeObjectType type) OstreeObjectType type)
{ {
GString *path; GString *path;
const char *type_string;
g_assert (strlen (checksum) == 64); g_assert (strlen (checksum) == 64);
@ -494,27 +535,9 @@ ostree_get_relative_object_path (const char *checksum,
g_string_append_len (path, checksum, 2); g_string_append_len (path, checksum, 2);
g_string_append_c (path, '/'); g_string_append_c (path, '/');
g_string_append (path, checksum + 2); g_string_append (path, checksum + 2);
switch (type) g_string_append_c (path, '.');
{ g_string_append (path, ostree_object_type_to_string (type));
case OSTREE_OBJECT_TYPE_RAW_FILE:
type_string = ".file";
break;
case OSTREE_OBJECT_TYPE_ARCHIVED_FILE:
type_string = ".archive";
break;
case OSTREE_OBJECT_TYPE_DIR_TREE:
type_string = ".dirtree";
break;
case OSTREE_OBJECT_TYPE_DIR_META:
type_string = ".dirmeta";
break;
case OSTREE_OBJECT_TYPE_COMMIT:
type_string = ".commit";
break;
default:
g_assert_not_reached ();
}
g_string_append (path, type_string);
return g_string_free (path, FALSE); return g_string_free (path, FALSE);
} }

View File

@ -85,11 +85,26 @@ typedef enum {
*/ */
#define OSTREE_COMMIT_GVARIANT_FORMAT "(ua{sv}ssstss)" #define OSTREE_COMMIT_GVARIANT_FORMAT "(ua{sv}ssstss)"
/* Archive file objects:
* u - Version
* u - uid
* u - gid
* u - mode
* u - rdev
* s - symlink target
* a(ayay) - xattrs
*/
#define OSTREE_ARCHIVED_FILE_VARIANT_FORMAT G_VARIANT_TYPE ("(uuuuusa(ayay))")
gboolean ostree_validate_checksum_string (const char *sha256, gboolean ostree_validate_checksum_string (const char *sha256,
GError **error); GError **error);
void ostree_checksum_update_stat (GChecksum *checksum, guint32 uid, guint32 gid, guint32 mode); void ostree_checksum_update_stat (GChecksum *checksum, guint32 uid, guint32 gid, guint32 mode);
const char * ostree_object_type_to_string (OstreeObjectType objtype);
OstreeObjectType ostree_object_type_from_string (const char *str);
char *ostree_get_relative_object_path (const char *checksum, char *ostree_get_relative_object_path (const char *checksum,
OstreeObjectType type); OstreeObjectType type);