OSTree Manual | ||||
---|---|---|---|---|
Top | Description |
Core repository-independent functionsCore repository-independent functions — Create, validate, and convert core data types |
Synopsis
#define OSTREE_MAX_METADATA_SIZE #define OSTREE_MAX_RECURSION enum OstreeObjectType; #define OSTREE_OBJECT_TYPE_IS_META (t) #define OSTREE_OBJECT_TYPE_LAST #define OSTREE_DIRMETA_GVARIANT_FORMAT #define OSTREE_TREE_GVARIANT_FORMAT #define OSTREE_COMMIT_GVARIANT_FORMAT const GVariantType * ostree_metadata_variant_type (OstreeObjectType objtype
); gboolean ostree_validate_checksum_string (const char *sha256
,GError **error
); guchar * ostree_checksum_to_bytes (const char *checksum
); GVariant * ostree_checksum_to_bytes_v (const char *checksum
); char * ostree_checksum_from_bytes (const guchar *csum
); char * ostree_checksum_from_bytes_v (GVariant *csum_v
); void ostree_checksum_inplace_from_bytes (const guchar *csum
,char *buf
); void ostree_checksum_inplace_to_bytes (const char *checksum
,guchar *buf
); const guchar * ostree_checksum_bytes_peek (GVariant *bytes
); int ostree_cmp_checksum_bytes (const guchar *a
,const guchar *b
); gboolean ostree_validate_rev (const char *rev
,GError **error
); gboolean ostree_parse_refspec (const char *refspec
,char **out_remote
,char **out_ref
,GError **error
); void ostree_checksum_update_meta (GChecksum *checksum
,GFileInfo *file_info
,GVariant *xattrs
); const char * ostree_object_type_to_string (OstreeObjectType objtype
); OstreeObjectType ostree_object_type_from_string (const char *str
); guint ostree_hash_object_name (gconstpointer a
); GVariant * ostree_object_name_serialize (const char *checksum
,OstreeObjectType objtype
); void ostree_object_name_deserialize (GVariant *variant
,const char **out_checksum
,OstreeObjectType *out_objtype
); char * ostree_object_to_string (const char *checksum
,OstreeObjectType objtype
); void ostree_object_from_string (const char *str
,gchar **out_checksum
,OstreeObjectType *out_objtype
); gboolean ostree_content_stream_parse (gboolean compressed
,GInputStream *input
,guint64 input_length
,gboolean trusted
,GInputStream **out_input
,GFileInfo **out_file_info
,GVariant **out_xattrs
,GCancellable *cancellable
,GError **error
); gboolean ostree_content_file_parse (gboolean compressed
,GFile *content_path
,gboolean trusted
,GInputStream **out_input
,GFileInfo **out_file_info
,GVariant **out_xattrs
,GCancellable *cancellable
,GError **error
); gboolean ostree_raw_file_to_content_stream (GInputStream *input
,GFileInfo *file_info
,GVariant *xattrs
,GInputStream **out_input
,guint64 *out_length
,GCancellable *cancellable
,GError **error
); gboolean ostree_checksum_file_from_input (GFileInfo *file_info
,GVariant *xattrs
,GInputStream *in
,OstreeObjectType objtype
,guchar **out_csum
,GCancellable *cancellable
,GError **error
); gboolean ostree_checksum_file (GFile *f
,OstreeObjectType objtype
,guchar **out_csum
,GCancellable *cancellable
,GError **error
); void ostree_checksum_file_async (GFile *f
,OstreeObjectType objtype
,int io_priority
,GCancellable *cancellable
,GAsyncReadyCallback callback
,gpointer user_data
); gboolean ostree_checksum_file_async_finish (GFile *f
,GAsyncResult *result
,guchar **out_csum
,GError **error
); GVariant * ostree_create_directory_metadata (GFileInfo *dir_info
,GVariant *xattrs
); gboolean ostree_validate_structureof_objtype (guchar objtype
,GError **error
); gboolean ostree_validate_structureof_csum_v (GVariant *checksum
,GError **error
); gboolean ostree_validate_structureof_checksum_string (const char *checksum
,GError **error
); gboolean ostree_validate_structureof_file_mode (guint32 mode
,GError **error
); gboolean ostree_validate_structureof_commit (GVariant *commit
,GError **error
); gboolean ostree_validate_structureof_dirtree (GVariant *dirtree
,GError **error
); gboolean ostree_validate_structureof_dirmeta (GVariant *dirmeta
,GError **error
); gchar * ostree_commit_get_parent (GVariant *commit_variant
);
Description
These functions implement repository-independent algorithms for operating on the core OSTree data formats, such as converting GFileInfo into a GVariant.
There are 4 types of objects; file, dirmeta, tree, and commit. The last 3 are metadata, and the file object is the only content object type.
All metadata objects are stored as GVariant (big endian). The rationale for this is the same as that of the ext{2,3,4} family of filesystems; most developers will be using LE, and so it's better to continually test the BE->LE swap.
The file object is a custom format in order to support streaming.
Details
OSTREE_MAX_METADATA_SIZE
#define OSTREE_MAX_METADATA_SIZE (1 << 26)
Maximum permitted size in bytes of metadata objects.
enum OstreeObjectType
typedef enum { OSTREE_OBJECT_TYPE_FILE = 1, /* .file */ OSTREE_OBJECT_TYPE_DIR_TREE = 2, /* .dirtree */ OSTREE_OBJECT_TYPE_DIR_META = 3, /* .dirmeta */ OSTREE_OBJECT_TYPE_COMMIT = 4 /* .commit */ } OstreeObjectType;
Enumeration for core object types; OSTREE_OBJECT_TYPE_FILE
is for
content, the other types are metadata.
OSTREE_OBJECT_TYPE_IS_META()
#define OSTREE_OBJECT_TYPE_IS_META(t) (t >= 2 && t <= 4)
|
An OstreeObjectType |
Returns : |
TRUE if object type is metadata |
OSTREE_OBJECT_TYPE_LAST
#define OSTREE_OBJECT_TYPE_LAST OSTREE_OBJECT_TYPE_COMMIT
Last valid object type; use this to validate ranges.
OSTREE_DIRMETA_GVARIANT_FORMAT
#define OSTREE_DIRMETA_GVARIANT_FORMAT G_VARIANT_TYPE ("(uuua(ayay))")
u - uid u - gid u - mode a(ayay) - xattrs
OSTREE_TREE_GVARIANT_FORMAT
#define OSTREE_TREE_GVARIANT_FORMAT G_VARIANT_TYPE ("(a(say)a(sayay))")
a(say) - array of (filename, checksum) for files a(sayay) - array of (dirname, tree_checksum, meta_checksum) for directories
OSTREE_COMMIT_GVARIANT_FORMAT
#define OSTREE_COMMIT_GVARIANT_FORMAT G_VARIANT_TYPE ("(a{sv}aya(say)sstayay)")
a{sv} - Metadata ay - parent checksum (empty string for initial) a(say) - Related objects s - subject s - body t - Timestamp in seconds since the epoch (UTC) ay - Root tree contents ay - Root tree metadata
ostree_metadata_variant_type ()
const GVariantType * ostree_metadata_variant_type (OstreeObjectType objtype
);
ostree_validate_checksum_string ()
gboolean ostree_validate_checksum_string (const char *sha256
,GError **error
);
Use this function to see if input strings are checksums.
ostree_checksum_to_bytes ()
guchar * ostree_checksum_to_bytes (const char *checksum
);
|
An ASCII checksum |
Returns : |
Binary checksum from checksum of length 32; free with g_free() . [transfer full][array fixed-size=32]
|
ostree_checksum_to_bytes_v ()
GVariant * ostree_checksum_to_bytes_v (const char *checksum
);
|
An ASCII checksum |
Returns : |
New GVariant of type ay with length 32. [transfer full] |
ostree_checksum_from_bytes ()
char * ostree_checksum_from_bytes (const guchar *csum
);
|
An binary checksum of length 32. [array fixed-size=32] |
Returns : |
String form of csum . [transfer full]
|
ostree_checksum_from_bytes_v ()
char * ostree_checksum_from_bytes_v (GVariant *csum_v
);
|
GVariant of type ay |
Returns : |
String form of csum_bytes . [transfer full]
|
ostree_checksum_inplace_from_bytes ()
void ostree_checksum_inplace_from_bytes (const guchar *csum
,char *buf
);
Overwrite the contents of buf
with stringified version of csum
.
|
An binary checksum of length 32. [array fixed-size=32] |
|
Output location, must be at least 65 bytes in length |
ostree_checksum_inplace_to_bytes ()
void ostree_checksum_inplace_to_bytes (const char *checksum
,guchar *buf
);
Convert checksum
from a string to binary in-place, without
allocating memory. Use this function in hot code paths.
|
a SHA256 string |
|
Output buffer with at least 32 bytes of space |
ostree_checksum_bytes_peek ()
const guchar * ostree_checksum_bytes_peek (GVariant *bytes
);
|
GVariant of type ay |
Returns : |
Binary checksum data in bytes ; do not free. If bytes does not have the correct length, return NULL . [transfer none][array fixed-size=32][element-type guint8]
|
ostree_cmp_checksum_bytes ()
int ostree_cmp_checksum_bytes (const guchar *a
,const guchar *b
);
Compare two binary checksums, using memcmp()
.
|
A binary checksum |
|
A binary checksum |
ostree_validate_rev ()
gboolean ostree_validate_rev (const char *rev
,GError **error
);
|
A revision string |
|
Error |
Returns : |
TRUE if rev is a valid ref string |
ostree_parse_refspec ()
gboolean ostree_parse_refspec (const char *refspec
,char **out_remote
,char **out_ref
,GError **error
);
Split a refspec like "gnome-ostree:gnome-ostree/buildmaster" into
two parts; out_remote
will be set to "gnome-ostree", and out_ref
will be "gnome-ostree/buildmaster".
If refspec
refers to a local ref, out_remote
will be NULL
.
|
A "refspec" string |
|
The remote name, or NULL if the refspec refs to a local ref. [out][allow-none]
|
|
Name of ref. [out][allow-none] |
|
Error |
ostree_checksum_update_meta ()
void ostree_checksum_update_meta (GChecksum *checksum
,GFileInfo *file_info
,GVariant *xattrs
);
ostree_object_type_to_string ()
const char * ostree_object_type_to_string (OstreeObjectType objtype
);
Serialize objtype
to a string; this is used for file extensions.
|
an OstreeObjectType |
ostree_object_type_from_string ()
OstreeObjectType ostree_object_type_from_string (const char *str
);
The reverse of ostree_object_type_to_string()
.
|
A stringified version of OstreeObjectType |
ostree_hash_object_name ()
guint ostree_hash_object_name (gconstpointer a
);
Use this function with GHashTable and ostree_object_name_serialize()
.
|
A GVariant containing a serialized object |
ostree_object_name_serialize ()
GVariant * ostree_object_name_serialize (const char *checksum
,OstreeObjectType objtype
);
|
An ASCII checksum |
|
An object type |
Returns : |
A new floating GVariant containing checksum string and objtype. [transfer floating] |
ostree_object_name_deserialize ()
void ostree_object_name_deserialize (GVariant *variant
,const char **out_checksum
,OstreeObjectType *out_objtype
);
Reverse ostree_object_name_serialize()
. Note that out_checksum
is
only valid for the lifetime of variant
, and must not be freed.
|
A GVariant of type (su) |
|
Pointer into string memory of variant with checksum. [out][transfer none]
|
|
Return object type. [out] |
ostree_object_to_string ()
char * ostree_object_to_string (const char *checksum
,OstreeObjectType objtype
);
|
An ASCII checksum |
|
Object type |
Returns : |
A string containing both checksum and a stringifed version of objtype
|
ostree_object_from_string ()
void ostree_object_from_string (const char *str
,gchar **out_checksum
,OstreeObjectType *out_objtype
);
Reverse ostree_object_to_string()
.
|
An ASCII checksum |
|
Parsed checksum. [out][transfer full] |
|
Parsed object type. [out] |
ostree_content_stream_parse ()
gboolean ostree_content_stream_parse (gboolean compressed
,GInputStream *input
,guint64 input_length
,gboolean trusted
,GInputStream **out_input
,GFileInfo **out_file_info
,GVariant **out_xattrs
,GCancellable *cancellable
,GError **error
);
The reverse of ostree_raw_file_to_content_stream()
; this function
converts an object content stream back into components.
|
Whether or not the stream is zlib-compressed |
|
Object content stream |
|
Length of stream |
|
If TRUE , assume the content has been validated |
|
The raw file content stream. [out] |
|
Normal metadata. [out] |
|
Extended attributes. [out] |
|
Cancellable |
|
Error |
ostree_content_file_parse ()
gboolean ostree_content_file_parse (gboolean compressed
,GFile *content_path
,gboolean trusted
,GInputStream **out_input
,GFileInfo **out_file_info
,GVariant **out_xattrs
,GCancellable *cancellable
,GError **error
);
A thin wrapper for ostree_content_stream_parse()
; this function
converts an object content stream back into components.
|
Whether or not the stream is zlib-compressed |
|
Path to file containing content |
|
If TRUE , assume the content has been validated |
|
The raw file content stream. [out] |
|
Normal metadata. [out] |
|
Extended attributes. [out] |
|
Cancellable |
|
Error |
ostree_raw_file_to_content_stream ()
gboolean ostree_raw_file_to_content_stream (GInputStream *input
,GFileInfo *file_info
,GVariant *xattrs
,GInputStream **out_input
,guint64 *out_length
,GCancellable *cancellable
,GError **error
);
Convert from a "bare" file representation into an OSTREE_OBJECT_TYPE_FILE stream. This is a fundamental operation for writing data to an OstreeRepo.
|
File raw content stream |
|
A file info |
|
Optional extended attributes. [allow-none] |
|
Serialized object stream. [out] |
|
Length of stream. [out] |
|
Cancellable |
|
Error |
ostree_checksum_file_from_input ()
gboolean ostree_checksum_file_from_input (GFileInfo *file_info
,GVariant *xattrs
,GInputStream *in
,OstreeObjectType objtype
,guchar **out_csum
,GCancellable *cancellable
,GError **error
);
Compute the OSTree checksum for a given input.
|
File information |
|
Optional extended attributes. [allow-none] |
|
File content, should be NULL for symbolic links. [allow-none]
|
|
Object type |
|
Return location for binary checksum. [out][array fixed-size=32] |
|
Cancellable |
|
Error |
ostree_checksum_file ()
gboolean ostree_checksum_file (GFile *f
,OstreeObjectType objtype
,guchar **out_csum
,GCancellable *cancellable
,GError **error
);
Compute the OSTree checksum for a given file.
ostree_checksum_file_async ()
void ostree_checksum_file_async (GFile *f
,OstreeObjectType objtype
,int io_priority
,GCancellable *cancellable
,GAsyncReadyCallback callback
,gpointer user_data
);
Asynchronously compute the OSTree checksum for a given file;
complete with ostree_checksum_file_async_finish()
.
|
File path |
|
Object type |
|
Priority for operation, see G_IO_PRIORITY_DEFAULT
|
|
Cancellable |
|
Invoked when operation is complete |
|
Data for callback
|
ostree_checksum_file_async_finish ()
gboolean ostree_checksum_file_async_finish (GFile *f
,GAsyncResult *result
,guchar **out_csum
,GError **error
);
Finish computing the OSTree checksum for a given file; see
ostree_checksum_file_async()
.
ostree_create_directory_metadata ()
GVariant * ostree_create_directory_metadata (GFileInfo *dir_info
,GVariant *xattrs
);
|
a GFileInfo containing directory information |
|
Optional extended attributes. [allow-none] |
Returns : |
A new GVariant containing OSTREE_OBJECT_TYPE_DIR_META . [transfer full]
|
ostree_validate_structureof_objtype ()
gboolean ostree_validate_structureof_objtype (guchar objtype
,GError **error
);
|
Error |
Returns : |
TRUE if objtype represents a valid object type |
ostree_validate_structureof_csum_v ()
gboolean ostree_validate_structureof_csum_v (GVariant *checksum
,GError **error
);
ostree_validate_structureof_checksum_string ()
gboolean ostree_validate_structureof_checksum_string (const char *checksum
,GError **error
);
|
an ASCII string |
|
Error |
Returns : |
TRUE if checksum is a valid ASCII SHA256 checksum |
ostree_validate_structureof_file_mode ()
gboolean ostree_validate_structureof_file_mode (guint32 mode
,GError **error
);
|
A Unix filesystem mode |
|
Error |
Returns : |
TRUE if mode represents a valid file type and permissions |
ostree_validate_structureof_commit ()
gboolean ostree_validate_structureof_commit (GVariant *commit
,GError **error
);
Use this to validate the basic structure of commit
, independent of
any other objects it references.
|
A commit object, OSTREE_OBJECT_TYPE_COMMIT
|
|
Error |
Returns : |
TRUE if commit is structurally valid |
ostree_validate_structureof_dirtree ()
gboolean ostree_validate_structureof_dirtree (GVariant *dirtree
,GError **error
);
Use this to validate the basic structure of dirtree
, independent of
any other objects it references.
|
A dirtree object, OSTREE_OBJECT_TYPE_DIR_TREE
|
|
Error |
Returns : |
TRUE if dirtree is structurally valid |
ostree_validate_structureof_dirmeta ()
gboolean ostree_validate_structureof_dirmeta (GVariant *dirmeta
,GError **error
);
Use this to validate the basic structure of dirmeta
.
|
A dirmeta object, OSTREE_OBJECT_TYPE_DIR_META
|
|
Error |
Returns : |
TRUE if dirmeta is structurally valid |
ostree_commit_get_parent ()
gchar * ostree_commit_get_parent (GVariant *commit_variant
);
|
Variant of type OSTREE_OBJECT_TYPE_COMMIT
|
Returns : |
Binary checksum with parent of commit_variant , or NULL if none |