core: Add OSTREE_OBJECT_TYPE_COMMIT_META

This is cleaner than the loose_path_with_suffix approach

Closes: #359
Approved by: cgwalters
This commit is contained in:
Mathnerd314 2016-06-15 23:37:29 -06:00 committed by Atomic Bot
parent 55f5f73d80
commit 23049bbd01
6 changed files with 20 additions and 43 deletions

View File

@ -128,13 +128,6 @@ _ostree_loose_path (char *buf,
OstreeObjectType objtype, OstreeObjectType objtype,
OstreeRepoMode repo_mode); OstreeRepoMode repo_mode);
void
_ostree_loose_path_with_suffix (char *buf,
const char *checksum,
OstreeObjectType objtype,
OstreeRepoMode repo_mode,
const char *suffix);
#define _OSTREE_METADATA_GPGSIGS_NAME "ostree.gpgsigs" #define _OSTREE_METADATA_GPGSIGS_NAME "ostree.gpgsigs"
#define _OSTREE_METADATA_GPGSIGS_TYPE G_VARIANT_TYPE ("aay") #define _OSTREE_METADATA_GPGSIGS_TYPE G_VARIANT_TYPE ("aay")

View File

@ -1047,6 +1047,8 @@ ostree_object_type_to_string (OstreeObjectType objtype)
return "commit"; return "commit";
case OSTREE_OBJECT_TYPE_TOMBSTONE_COMMIT: case OSTREE_OBJECT_TYPE_TOMBSTONE_COMMIT:
return "tombstone-commit"; return "tombstone-commit";
case OSTREE_OBJECT_TYPE_COMMIT_META:
return "commitmeta";
default: default:
g_assert_not_reached (); g_assert_not_reached ();
return NULL; return NULL;
@ -1070,6 +1072,10 @@ ostree_object_type_from_string (const char *str)
return OSTREE_OBJECT_TYPE_DIR_META; return OSTREE_OBJECT_TYPE_DIR_META;
else if (!strcmp (str, "commit")) else if (!strcmp (str, "commit"))
return OSTREE_OBJECT_TYPE_COMMIT; return OSTREE_OBJECT_TYPE_COMMIT;
else if (!strcmp (str, "tombstone-commit"))
return OSTREE_OBJECT_TYPE_TOMBSTONE_COMMIT;
else if (!strcmp (str, "commitmeta"))
return OSTREE_OBJECT_TYPE_COMMIT_META;
g_assert_not_reached (); g_assert_not_reached ();
return 0; return 0;
} }
@ -1414,7 +1420,13 @@ _ostree_loose_path (char *buf,
OstreeObjectType objtype, OstreeObjectType objtype,
OstreeRepoMode mode) OstreeRepoMode mode)
{ {
_ostree_loose_path_with_suffix (buf, checksum, objtype, mode, ""); *buf = checksum[0];
buf++;
*buf = checksum[1];
buf++;
snprintf (buf, _OSTREE_LOOSE_PATH_MAX - 2, "/%s.%s%s",
checksum + 2, ostree_object_type_to_string (objtype),
(!OSTREE_OBJECT_TYPE_IS_META (objtype) && mode == OSTREE_REPO_MODE_ARCHIVE_Z2) ? "z" : "");
} }
/** /**
@ -1442,33 +1454,6 @@ _ostree_header_gfile_info_new (mode_t mode, uid_t uid, gid_t gid)
return ret; return ret;
} }
/*
* _ostree_loose_path_with_suffix:
* @buf: Output buffer, must be _OSTREE_LOOSE_PATH_MAX in size
* @checksum: ASCII checksum
* @objtype: Object type
* @mode: Repository mode
*
* Like _ostree_loose_path, but also append a further arbitrary
* suffix; useful for finding non-core objects.
*/
void
_ostree_loose_path_with_suffix (char *buf,
const char *checksum,
OstreeObjectType objtype,
OstreeRepoMode mode,
const char *suffix)
{
*buf = checksum[0];
buf++;
*buf = checksum[1];
buf++;
snprintf (buf, _OSTREE_LOOSE_PATH_MAX - 2, "/%s.%s%s%s",
checksum + 2, ostree_object_type_to_string (objtype),
(!OSTREE_OBJECT_TYPE_IS_META (objtype) && mode == OSTREE_REPO_MODE_ARCHIVE_Z2) ? "z" : "",
suffix);
}
/* /*
* _ostree_get_relative_object_path: * _ostree_get_relative_object_path:
* @checksum: ASCII checksum string * @checksum: ASCII checksum string

View File

@ -72,6 +72,7 @@ G_BEGIN_DECLS
* @OSTREE_OBJECT_TYPE_DIR_META: Directory metadata * @OSTREE_OBJECT_TYPE_DIR_META: Directory metadata
* @OSTREE_OBJECT_TYPE_COMMIT: Toplevel object, refers to tree and dirmeta for root * @OSTREE_OBJECT_TYPE_COMMIT: Toplevel object, refers to tree and dirmeta for root
* @OSTREE_OBJECT_TYPE_TOMBSTONE_COMMIT: Toplevel object, refers to a deleted commit * @OSTREE_OBJECT_TYPE_TOMBSTONE_COMMIT: Toplevel object, refers to a deleted commit
* @OSTREE_OBJECT_TYPE_COMMIT_META: Detached metadata for a commit
* *
* Enumeration for core object types; %OSTREE_OBJECT_TYPE_FILE is for * Enumeration for core object types; %OSTREE_OBJECT_TYPE_FILE is for
* content, the other types are metadata. * content, the other types are metadata.
@ -82,6 +83,7 @@ typedef enum {
OSTREE_OBJECT_TYPE_DIR_META = 3, /* .dirmeta */ OSTREE_OBJECT_TYPE_DIR_META = 3, /* .dirmeta */
OSTREE_OBJECT_TYPE_COMMIT = 4, /* .commit */ OSTREE_OBJECT_TYPE_COMMIT = 4, /* .commit */
OSTREE_OBJECT_TYPE_TOMBSTONE_COMMIT = 5, /* .commit-tombstone */ OSTREE_OBJECT_TYPE_TOMBSTONE_COMMIT = 5, /* .commit-tombstone */
OSTREE_OBJECT_TYPE_COMMIT_META = 6, /* .commitmeta */
} OstreeObjectType; } OstreeObjectType;
/** /**
@ -90,14 +92,14 @@ typedef enum {
* *
* Returns: %TRUE if object type is metadata * Returns: %TRUE if object type is metadata
*/ */
#define OSTREE_OBJECT_TYPE_IS_META(t) (t >= 2 && t <= 5) #define OSTREE_OBJECT_TYPE_IS_META(t) (t >= 2 && t <= 6)
/** /**
* OSTREE_OBJECT_TYPE_LAST: * OSTREE_OBJECT_TYPE_LAST:
* *
* Last valid object type; use this to validate ranges. * Last valid object type; use this to validate ranges.
*/ */
#define OSTREE_OBJECT_TYPE_LAST OSTREE_OBJECT_TYPE_TOMBSTONE_COMMIT #define OSTREE_OBJECT_TYPE_LAST OSTREE_OBJECT_TYPE_COMMIT_META
/** /**
* OSTREE_DIRMETA_GVARIANT_FORMAT: * OSTREE_DIRMETA_GVARIANT_FORMAT:

View File

@ -2058,8 +2058,7 @@ _ostree_repo_get_commit_metadata_loose_path (OstreeRepo *self,
const char *checksum) const char *checksum)
{ {
char buf[_OSTREE_LOOSE_PATH_MAX]; char buf[_OSTREE_LOOSE_PATH_MAX];
_ostree_loose_path_with_suffix (buf, checksum, OSTREE_OBJECT_TYPE_COMMIT, self->mode, _ostree_loose_path (buf, checksum, OSTREE_OBJECT_TYPE_COMMIT_META, self->mode);
"meta");
return g_file_resolve_relative_path (self->objects_dir, buf); return g_file_resolve_relative_path (self->objects_dir, buf);
} }

View File

@ -1316,8 +1316,7 @@ enqueue_one_object_request (OtPullData *pull_data,
if (is_detached_meta) if (is_detached_meta)
{ {
char buf[_OSTREE_LOOSE_PATH_MAX]; char buf[_OSTREE_LOOSE_PATH_MAX];
_ostree_loose_path_with_suffix (buf, checksum, OSTREE_OBJECT_TYPE_COMMIT, _ostree_loose_path (buf, checksum, OSTREE_OBJECT_TYPE_COMMIT_META, pull_data->remote_mode);
pull_data->remote_mode, "meta");
obj_uri = suburi_new (pull_data->base_uri, "objects", buf, NULL); obj_uri = suburi_new (pull_data->base_uri, "objects", buf, NULL);
} }
else else

View File

@ -3120,8 +3120,7 @@ ostree_repo_delete_object (OstreeRepo *self,
{ {
char meta_loose[_OSTREE_LOOSE_PATH_MAX]; char meta_loose[_OSTREE_LOOSE_PATH_MAX];
_ostree_loose_path_with_suffix (meta_loose, sha256, _ostree_loose_path (meta_loose, sha256, OSTREE_OBJECT_TYPE_COMMIT_META, self->mode);
OSTREE_OBJECT_TYPE_COMMIT, self->mode, "meta");
do do
res = unlinkat (self->objects_dir_fd, meta_loose, 0); res = unlinkat (self->objects_dir_fd, meta_loose, 0);