]> git.ipfire.org Git - pakfire.git/commitdiff
distro: Add a function that creates the tag
authorMichael Tremer <michael.tremer@ipfire.org>
Tue, 18 Oct 2022 18:44:50 +0000 (18:44 +0000)
committerMichael Tremer <michael.tremer@ipfire.org>
Tue, 18 Oct 2022 18:44:50 +0000 (18:44 +0000)
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
src/libpakfire/dist.c
src/libpakfire/include/pakfire/pakfire.h
src/libpakfire/pakfire.c

index b241617b89e9bf571d7d30301d9c1b74c92b3b34..b93e886074508d6d452606094dcf21882a5fa7cd 100644 (file)
@@ -85,11 +85,9 @@ static int pakfire_makefile_set_defaults(struct pakfire* pakfire,
                pakfire_parser_set(parser, NULL, "DISTRO_RELEASE", version_id, 0);
 
        // Set DISTRO_DISTTAG
-       if (id && version_id) {
-               pakfire_string_format(buffer, "%s%s", id, version_id);
-
-               pakfire_parser_set(parser, NULL, "DISTRO_DISTTAG", buffer, 0);
-       }
+       const char* tag = pakfire_get_distro_tag(pakfire);
+       if (tag)
+               pakfire_parser_set(parser, NULL, "DISTRO_DISTTAG", tag, 0);
 
        // Set DISTRO_VENDOR
        const char* vendor = pakfire_get_distro_vendor(pakfire);
index 5fdd850da8e660e9da1bde2ee1efb70853001434..3147b95bb85a51b94bea2bd2be0c8df7139f22c4 100644 (file)
@@ -151,6 +151,7 @@ const char* pakfire_get_distro_id(struct pakfire* pakfire);
 const char* pakfire_get_distro_vendor(struct pakfire* pakfire);
 const char* pakfire_get_distro_version(struct pakfire* pakfire);
 const char* pakfire_get_distro_version_id(struct pakfire* pakfire);
+const char* pakfire_get_distro_tag(struct pakfire* pakfire);
 
 const char* pakfire_get_keystore_path(struct pakfire* pakfire);
 
index 3555a8c3268d3b4805d6b70788fdd9811d5b37ef..e472396c427df6a1248e4f721dd3d4ed9b0c3f57 100644 (file)
@@ -115,6 +115,7 @@ struct pakfire {
                char version[64];
                char version_codename[32];
                char version_id[8];
+               char tag[40];
        } distro;
 
        // GPG Context
@@ -485,6 +486,30 @@ const char* pakfire_get_distro_version_id(struct pakfire* pakfire) {
        return NULL;
 }
 
+const char* pakfire_get_distro_tag(struct pakfire* pakfire) {
+       int r;
+
+       if (*pakfire->distro.tag)
+               return pakfire->distro.tag;
+
+       const char* id         = pakfire_get_distro_id(pakfire);
+       const char* version_id = pakfire_get_distro_version_id(pakfire);
+
+       // Break if the configuration is incomplete
+       if (!id || !version_id) {
+               errno = EINVAL;
+               return NULL;
+       }
+
+       // Format string
+       r = pakfire_string_format(pakfire->distro.tag, "%s%s", id, version_id);
+       if (r)
+               return NULL;
+
+       // Return the tag
+       return pakfire->distro.tag;
+}
+
 static int pakfire_config_import_distro(struct pakfire* pakfire) {
        // Nothing to do if there is no distro section
        if (!pakfire_config_has_section(pakfire->config, "distro"))