Add versionToString
function
This commit is contained in:
parent
7d5622a714
commit
9d72c50f34
1 changed files with 91 additions and 4 deletions
95
semver.c
95
semver.c
|
@ -1,4 +1,8 @@
|
|||
#include "semver.h"
|
||||
#include "epoch.h"
|
||||
#include <stdlib.h>
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
|
||||
u128 u128FromVersion(Version *self) {
|
||||
u128 out = 0;
|
||||
|
@ -28,8 +32,6 @@ u128 u128FromVersion(Version *self) {
|
|||
build = (uint64_t)self->vk_data.extended.build << 16;
|
||||
out = (u128)(major | minor | patch | build) << 64;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
switch (self->pr_tag) {
|
||||
case Alpha:
|
||||
|
@ -55,8 +57,6 @@ u128 u128FromVersion(Version *self) {
|
|||
case PRNone:
|
||||
out |= ((u128)0100000 << 64);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
return out;
|
||||
}
|
||||
|
@ -78,3 +78,90 @@ Comparison compareVersion(Version *self, Version *other) {
|
|||
return CompNone;
|
||||
}
|
||||
|
||||
char *archToString(Arch self) {
|
||||
switch (self) {
|
||||
case any: return "any";
|
||||
case arm: return "arm";
|
||||
case arm64: return "aarch64";
|
||||
case loongson: return "loongson";
|
||||
case mips32: return "mips32";
|
||||
case mips64: return "mips64";
|
||||
case powerepc: return "ppc";
|
||||
case powerpc64: return "ppc64";
|
||||
case riscv64: return "riscv64";
|
||||
case s390x: return "s390x";
|
||||
case sparc: return "sparc";
|
||||
case sparc64: return "sparc64";
|
||||
case x86: return "x86";
|
||||
case x86_64: return "x86_64";
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
|
||||
char *versionToString(Version *self) {
|
||||
char *buf, *temp;
|
||||
|
||||
buf = calloc(75, sizeof(char));
|
||||
if (buf == NULL) return NULL;
|
||||
temp = calloc(50, sizeof(char));
|
||||
if (temp == NULL) {
|
||||
free(buf);
|
||||
return NULL;
|
||||
}
|
||||
switch (self->vk_tag) {
|
||||
case Simple:
|
||||
snprintf(buf, 6, "%d", self->vk_data.simple.major);
|
||||
break;
|
||||
case Rapid:
|
||||
snprintf(buf, 13, "%d.%d", self->vk_data.rapid.major, self->vk_data.rapid.minor);
|
||||
break;
|
||||
case SemVer:
|
||||
snprintf(
|
||||
buf, 20, "%d.%d.%d",
|
||||
self->vk_data.semver.major,
|
||||
self->vk_data.semver.minor,
|
||||
self->vk_data.semver.patch
|
||||
);
|
||||
break;
|
||||
case Extended:
|
||||
snprintf(
|
||||
buf, 27, "%d.%d.%d.%d",
|
||||
self->vk_data.extended.major,
|
||||
self->vk_data.extended.minor,
|
||||
self->vk_data.extended.patch,
|
||||
self->vk_data.extended.build
|
||||
);
|
||||
break;
|
||||
}
|
||||
switch (self->pr_tag) {
|
||||
case PRNone:
|
||||
snprintf(temp, 9, "-%s", archToString(self->arch));
|
||||
break;
|
||||
case Alpha:
|
||||
snprintf(temp, 25, "_alpha%d-%s", self->pr_data.alpha, archToString(self->arch));
|
||||
break;
|
||||
case Beta:
|
||||
snprintf(temp, 25, "_beta%d-%s", self->pr_data.beta, archToString(self->arch));
|
||||
break;
|
||||
case ReleaseCandidate:
|
||||
snprintf(temp, 25, "_rc%d-%s", self->pr_data.rc, archToString(self->arch));
|
||||
break;
|
||||
case GitRev:
|
||||
snprintf(
|
||||
temp, 30, "_git_%c%c%c%c%c%c%c.%li-%s",
|
||||
self->pr_data.git->hash[0],
|
||||
self->pr_data.git->hash[1],
|
||||
self->pr_data.git->hash[2],
|
||||
self->pr_data.git->hash[3],
|
||||
self->pr_data.git->hash[4],
|
||||
self->pr_data.git->hash[5],
|
||||
self->pr_data.git->hash[6],
|
||||
dateTimeGetTimestamp(&self->pr_data.git->dt),
|
||||
archToString(self->arch)
|
||||
);
|
||||
}
|
||||
strncat(buf, temp, 50);
|
||||
free(temp);
|
||||
return buf;
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue