[PATCH opkg 3/5] download: factor out the logic for building cache filenames

Baptiste Jonglez baptiste at bitsofnetworks.org
Mon Aug 24 19:00:30 EDT 2020


From: Baptiste Jonglez <git at bitsofnetworks.org>

If we want to access files in the cache from multiple functions, it is
necessary to have a single source of truth regarding the naming of files
in the cache.

Signed-off-by: Baptiste Jonglez <git at bitsofnetworks.org>
---
 libopkg/opkg_download.c | 17 ++++++++++++-----
 1 file changed, 12 insertions(+), 5 deletions(-)

diff --git a/libopkg/opkg_download.c b/libopkg/opkg_download.c
index f7c2f88..175282c 100644
--- a/libopkg/opkg_download.c
+++ b/libopkg/opkg_download.c
@@ -206,6 +206,17 @@ opkg_download(const char *src, const char *dest_file_name,
 	return err;
 }
 
+static char* get_cache_filename(const char *dest_file_name)
+{
+	char *cache_name;
+	char *filename = strrchr(dest_file_name, '/');
+	if (filename)
+		cache_name = xstrdup(filename + 1);	// strip leading '/'
+	else
+		cache_name = xstrdup(dest_file_name);
+	return cache_name;
+}
+
 static int
 opkg_download_cache(const char *src, const char *dest_file_name)
 {
@@ -223,11 +234,7 @@ opkg_download_cache(const char *src, const char *dest_file_name)
 		goto out1;
 	}
 
-	char *filename = strrchr(dest_file_name, '/');
-	if (filename)
-		cache_name = xstrdup(filename + 1);	// strip leading '/'
-	else
-		cache_name = xstrdup(dest_file_name);
+	cache_name = get_cache_filename(dest_file_name);
 	sprintf_alloc(&cache_location, "%s/%s", conf->cache, cache_name);
 	if (file_exists(cache_location))
 		opkg_msg(NOTICE, "Copying %s.\n", cache_location);
-- 
2.27.0




More information about the openwrt-devel mailing list