+ char astr[256], bstr[256];
+
+ if (vsa && !vsb) {
+ return 1;
+ }
+ if (vsb && !vsa) {
+ return -1;
+ }
+ if (!vsa && !vsb) {
+ return 0;
+ }
+
+ zpm_parse_version(vsa, &ainfo);
+ zpm_parse_version(vsb, &binfo);
+ cmp = cmp_strlen(ainfo.name, ainfo.namelen, binfo.name, binfo.namelen);
+
+ if (cmp != 0) {
+ return cmp;
+ }
+
+ if (ainfo.verlen > 255) {
+ ainfo.verlen = 255;
+ }
+ if (binfo.verlen > 255) {
+ binfo.verlen = 255;
+ }
+
+ strncpy(astr, ainfo.version, ainfo.verlen);
+ strncpy(bstr, binfo.version, binfo.verlen);
+ astr[ainfo.verlen] = 0;
+ bstr[binfo.verlen] = 0;