Skip to content

Commit

Permalink
Make the version_ok() hack a little more...uh, big.
Browse files Browse the repository at this point in the history
  • Loading branch information
icculus committed Jun 16, 2004
1 parent b308fea commit 1fb0169
Show file tree
Hide file tree
Showing 2 changed files with 36 additions and 14 deletions.
30 changes: 30 additions & 0 deletions mojopatch.c
Expand Up @@ -581,9 +581,39 @@ int version_ok(const char *ver, const char *allowed_ver)
if (*allowed_ver == '\0')
return 1; /* No specified version? Anything is okay, then. */

if (strcmp(allowed_ver, ver) == 0)
return -1; /* all patched up. */

buf = (char *) alloca(strlen(allowed_ver) + 1);
strcpy(buf, allowed_ver);

const char *lessThan = "less than ";
const size_t lessThanLen = strlen(lessThan);
if (strncmp(buf, lessThan, lessThanLen) == 0)
{
char *endptr = NULL;
double dver;
double dallow;
ptr = buf + lessThanLen;
*ptr = '\0';
ptr++;

dver = strtod(ver, &endptr);
if (endptr == ver)
return 0;

dallow = strtod(ptr, &endptr);
if (endptr == ptr)
return 0;

if (dver < dallow)
return(1);
else if (dver == dallow)
return(-1);

return(0);
} /* if */

while ((ptr = strstr(buf, " or ")) != NULL)
{
*ptr = '\0';
Expand Down
20 changes: 6 additions & 14 deletions platform_unix.c
Expand Up @@ -329,21 +329,13 @@ static int parse_info_dot_plist(const char *ident,
ptr = find_info_plist_version(mem);
if (ptr != NULL)
{
if (version_ok(ptr, version))
retval = 1;
else
retval = version_ok(ptr, version);
if (retval == -1)
_fatal("You seem to be all patched up already!");
else if (retval == 0)
{
if (strcmp(ptr, newversion) == 0)
{
_fatal("You seem to be all patched up already!");
retval = -1;
} /* if */
else
{
_fatal("This patch applies to version '%s', but you have '%s'.",
version, ptr);
retval = 0;
} /* else */
_fatal("This patch applies to version '%s', but you have '%s'.",
version, ptr);
} /* else */
} /* if */

Expand Down

0 comments on commit 1fb0169

Please sign in to comment.