builder: Add builder_context_find_in_sources_dirs

This centralizes the code for searching in the sources
directory.
tingping/wmclass
Alexander Larsson 2017-04-21 18:23:52 +02:00
parent 4a60c87958
commit b593ff04d3
2 changed files with 43 additions and 0 deletions

View File

@ -271,6 +271,45 @@ builder_context_set_sources_dirs (BuilderContext *self,
self->sources_dirs = g_ptr_array_ref (sources_dirs);
}
GFile *
builder_context_find_in_sources_dirs_va (BuilderContext *self,
va_list args)
{
int i;
if (self->sources_dirs == NULL)
return NULL;
for (i = 0; i < self->sources_dirs->len; i++)
{
GFile *dir = g_ptr_array_index (self->sources_dirs, i);
g_autoptr(GFile) local_file = NULL;
va_list args2;
va_copy(args2, args);
local_file = flatpak_build_file_va (dir, args2);
if (g_file_query_exists (local_file, NULL))
return g_steal_pointer (&local_file);
}
return NULL;
}
GFile *
builder_context_find_in_sources_dirs (BuilderContext *self,
...)
{
GFile *res;
va_list args;
va_start (args, self);
res = builder_context_find_in_sources_dirs_va (self, args);
va_end (args);
return res;
}
GFile *
builder_context_get_cache_dir (BuilderContext *self)
{

View File

@ -52,6 +52,10 @@ GFile * builder_context_get_download_dir (BuilderContext *self);
GPtrArray * builder_context_get_sources_dirs (BuilderContext *self);
void builder_context_set_sources_dirs (BuilderContext *self,
GPtrArray *sources_dirs);
GFile * builder_context_find_in_sources_dirs (BuilderContext *self,
...) G_GNUC_NULL_TERMINATED;
GFile * builder_context_find_in_sources_dirs_va (BuilderContext *self,
va_list args);
SoupSession * builder_context_get_soup_session (BuilderContext *self);
const char * builder_context_get_arch (BuilderContext *self);
void builder_context_set_arch (BuilderContext *self,