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 NULL;
|
||||||
return g_mapped_file_get_bytes (mfile);
|
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,
|
GBytes *ot_fd_readall_or_mmap (int fd, goffset offset,
|
||||||
GError **error);
|
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
|
G_END_DECLS
|
||||||
|
|
|
||||||
|
|
@ -124,32 +124,6 @@ static GOptionEntry options[] = {
|
||||||
{ NULL }
|
{ 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 {
|
struct CommitFilterData {
|
||||||
GHashTable *mode_adds;
|
GHashTable *mode_adds;
|
||||||
GHashTable *mode_overrides;
|
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_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);
|
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,
|
if (!ot_parse_file_by_line (opt_statoverride_file, handle_statoverride_line,
|
||||||
&filter_data, cancellable, error))
|
&filter_data, cancellable, error))
|
||||||
goto out;
|
goto out;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (opt_skiplist_file)
|
if (opt_skiplist_file)
|
||||||
{
|
{
|
||||||
skip_list = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, NULL);
|
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,
|
if (!ot_parse_file_by_line (opt_skiplist_file, handle_skiplist_line,
|
||||||
skip_list, cancellable, error))
|
skip_list, cancellable, error))
|
||||||
goto out;
|
goto out;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue