From b593ff04d3654a9aa1f146b7714ec0e1bbf5b8ea Mon Sep 17 00:00:00 2001 From: Alexander Larsson Date: Fri, 21 Apr 2017 18:23:52 +0200 Subject: [PATCH] builder: Add builder_context_find_in_sources_dirs This centralizes the code for searching in the sources directory. --- builder/builder-context.c | 39 +++++++++++++++++++++++++++++++++++++++ builder/builder-context.h | 4 ++++ 2 files changed, 43 insertions(+) diff --git a/builder/builder-context.c b/builder/builder-context.c index 564176e9..f66f2a76 100644 --- a/builder/builder-context.c +++ b/builder/builder-context.c @@ -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) { diff --git a/builder/builder-context.h b/builder/builder-context.h index f09f29ef..e13e84c4 100644 --- a/builder/builder-context.h +++ b/builder/builder-context.h @@ -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,