Add parseGitRev
function
This commit is contained in:
parent
0606189269
commit
e4fe1c5740
1 changed files with 26 additions and 7 deletions
33
semver.c
33
semver.c
|
@ -106,7 +106,7 @@ int parseArch(char *s) {
|
|||
return -1;
|
||||
}
|
||||
|
||||
uint16_t parseNumNonZero(char *vp, long *out) {
|
||||
uint16_t parseU12NonZero(char *vp, long *out) {
|
||||
long val;
|
||||
char *ep;
|
||||
|
||||
|
@ -114,7 +114,7 @@ uint16_t parseNumNonZero(char *vp, long *out) {
|
|||
*out = 0;
|
||||
}
|
||||
val = strtol(vp, &ep, 10);
|
||||
if (vp != ep && ep == NULL && val <= U12_MAX) {
|
||||
if (vp != ep && ep == NULL && val <= U12_MAX && val > 0) {
|
||||
*out = val;
|
||||
} else {
|
||||
return 1;
|
||||
|
@ -123,8 +123,27 @@ uint16_t parseNumNonZero(char *vp, long *out) {
|
|||
}
|
||||
|
||||
int parseGitRev(char *vp, GitRevision *git) {
|
||||
// todo
|
||||
return 1;
|
||||
char hash[7];
|
||||
int64_t ts;
|
||||
char *hash_str, *ts_str, *ep;
|
||||
int i;
|
||||
|
||||
hash_str = strtok(vp, ".");
|
||||
if (hash_str == NULL) return 1;
|
||||
if (strnlen(hash_str, 8) != 7) return 2;
|
||||
for (i = 0; i < 7; i++) {
|
||||
hash[i] = hash_str[i];
|
||||
}
|
||||
ts_str = strtok(NULL, ".");
|
||||
if (ts_str == NULL) return 1;
|
||||
ts = strtoll(ts_str, &ep, 10);
|
||||
if (ts_str == ep || ep != NULL) return 3;
|
||||
if (strtok(NULL, ".") != NULL) return 4;
|
||||
for (i = 0; i < 7; i++) {
|
||||
git->hash[i] = hash[i];
|
||||
}
|
||||
dateTimeFromTimestampParts(ts, 0, &git->dt);
|
||||
return 0;
|
||||
}
|
||||
|
||||
int parsePreRelease(PreRelease *pr, char *s) {
|
||||
|
@ -139,17 +158,17 @@ int parsePreRelease(PreRelease *pr, char *s) {
|
|||
if (strncasecmp(s, "alpha", 5) == 0) {
|
||||
tag = Alpha;
|
||||
vp = s + 5;
|
||||
if (parseNumNonZero(vp, &val) != 0)
|
||||
if (parseU12NonZero(vp, &val) != 0)
|
||||
return 1;
|
||||
} else if (strncasecmp(s, "beta", 4) == 0) {
|
||||
tag = Beta;
|
||||
vp = s + 4;
|
||||
if (parseNumNonZero(vp, &val) != 0)
|
||||
if (parseU12NonZero(vp, &val) != 0)
|
||||
return 1;
|
||||
} else if (strncasecmp(s, "rc", 2) == 0) {
|
||||
tag = ReleaseCandidate;
|
||||
vp = s + 2;
|
||||
if (parseNumNonZero(vp, &val) != 0)
|
||||
if (parseU12NonZero(vp, &val) != 0)
|
||||
return 1;
|
||||
} else if (strncasecmp(s, "git_", 4) == 0) {
|
||||
tag = GitRev;
|
||||
|
|
Loading…
Add table
Reference in a new issue