#define _GNU_SOURCE
#include <ctype.h>
#include <string.h>

int strverscmp(const char* l0, const char* r0) {
  const unsigned char* l = (const void*)l0;
  const unsigned char* r = (const void*)r0;
  size_t i, dp, j;
  int z = 1;

  /* Find maximal matching prefix and track its maximal digit
   * suffix and whether those digits are all zeros. */
  for (dp = i = 0; l[i] == r[i]; i++) {
    int c = l[i];
    if (!c)
      return 0;
    if (!isdigit(c))
      dp = i + 1, z = 1;
    else if (c != '0')
      z = 0;
  }

  if (l[dp] != '0' && r[dp] != '0') {
    /* If we're not looking at a digit sequence that began
     * with a zero, longest digit string is greater. */
    for (j = i; isdigit(l[j]); j++)
      if (!isdigit(r[j]))
        return 1;
    if (isdigit(r[j]))
      return -1;
  } else if (z && dp < i && (isdigit(l[i]) || isdigit(r[i]))) {
    /* Otherwise, if common prefix of digit sequence is
     * all zeros, digits order less than non-digits. */
    return (unsigned char)(l[i] - '0') - (unsigned char)(r[i] - '0');
  }

  return l[i] - r[i];
}
