mirror of
https://github.com/ostreedev/ostree.git
synced 2025-03-19 22:50:35 +03:00
libotutil: factor out utility to parse file by line
This will be used in the checkout CLI as well. Closes: #1442 Approved by: cgwalters
This commit is contained in:
parent
4a98a86b72
commit
5cba67520e
@ -221,3 +221,29 @@ ot_map_anonymous_tmpfile_from_content (GInputStream *instream,
|
||||
return NULL;
|
||||
return g_mapped_file_get_bytes (mfile);
|
||||
}
|
||||
|
||||
gboolean
|
||||
ot_parse_file_by_line (const char *path,
|
||||
gboolean (*cb)(const char*, void*, GError**),
|
||||
void *cbdata,
|
||||
GCancellable *cancellable,
|
||||
GError **error)
|
||||
{
|
||||
g_autofree char *contents =
|
||||
glnx_file_get_contents_utf8_at (AT_FDCWD, path, NULL, cancellable, error);
|
||||
if (!contents)
|
||||
return FALSE;
|
||||
|
||||
g_auto(GStrv) lines = g_strsplit (contents, "\n", -1);
|
||||
for (char **iter = lines; iter && *iter; iter++)
|
||||
{
|
||||
/* skip empty lines at least */
|
||||
if (**iter == '\0')
|
||||
continue;
|
||||
|
||||
if (!cb (*iter, cbdata, error))
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
@ -90,4 +90,11 @@ ot_map_anonymous_tmpfile_from_content (GInputStream *instream,
|
||||
GBytes *ot_fd_readall_or_mmap (int fd, goffset offset,
|
||||
GError **error);
|
||||
|
||||
gboolean
|
||||
ot_parse_file_by_line (const char *path,
|
||||
gboolean (*cb)(const char*, void*, GError**),
|
||||
void *cbdata,
|
||||
GCancellable *cancellable,
|
||||
GError **error);
|
||||
|
||||
G_END_DECLS
|
||||
|
@ -124,32 +124,6 @@ static GOptionEntry options[] = {
|
||||
{ NULL }
|
||||
};
|
||||
|
||||
static gboolean
|
||||
parse_file_by_line (const char *path,
|
||||
gboolean (*cb)(const char*, void*, GError**),
|
||||
void *cbdata,
|
||||
GCancellable *cancellable,
|
||||
GError **error)
|
||||
{
|
||||
g_autofree char *contents =
|
||||
glnx_file_get_contents_utf8_at (AT_FDCWD, path, NULL, cancellable, error);
|
||||
if (!contents)
|
||||
return FALSE;
|
||||
|
||||
g_auto(GStrv) lines = g_strsplit (contents, "\n", -1);
|
||||
for (char **iter = lines; iter && *iter; iter++)
|
||||
{
|
||||
/* skip empty lines at least */
|
||||
if (**iter == '\0')
|
||||
continue;
|
||||
|
||||
if (!cb (*iter, cbdata, error))
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
struct CommitFilterData {
|
||||
GHashTable *mode_adds;
|
||||
GHashTable *mode_overrides;
|
||||
@ -457,16 +431,16 @@ ostree_builtin_commit (int argc, char **argv, OstreeCommandInvocation *invocatio
|
||||
{
|
||||
filter_data.mode_adds = mode_adds = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, NULL);
|
||||
filter_data.mode_overrides = mode_overrides = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, NULL);
|
||||
if (!parse_file_by_line (opt_statoverride_file, handle_statoverride_line,
|
||||
&filter_data, cancellable, error))
|
||||
if (!ot_parse_file_by_line (opt_statoverride_file, handle_statoverride_line,
|
||||
&filter_data, cancellable, error))
|
||||
goto out;
|
||||
}
|
||||
|
||||
if (opt_skiplist_file)
|
||||
{
|
||||
skip_list = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, NULL);
|
||||
if (!parse_file_by_line (opt_skiplist_file, handle_skiplist_line,
|
||||
skip_list, cancellable, error))
|
||||
if (!ot_parse_file_by_line (opt_skiplist_file, handle_skiplist_line,
|
||||
skip_list, cancellable, error))
|
||||
goto out;
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user