+Mon Jul 16 14:10:18 CEST 2001 Wichert Akkerman <wakkerma@debian.org>
+
+ * lib/vercmp.c: New verrevcmp() from Anthony Towns
+
Mon Jul 16 13:27:44 CEST 2001 Wichert Akkerman <wakkerma@debian.org>
* Merge a modified patch from Josip Rodin:
consistent with the package list
* Fix test for nice(2) failure in start-stop-daemon. Closes: Bug#104561
* Improve the dselect helpscreen a bit. Closes: Bug#72634
+ * New version comparison routine that can handle arbitrarily large numbers
+ and accepts `~' as a low-sorting character. Closes: Bug#93386
-- Wichert Akkerman <wakkerma@debian.org> UNRELEASED
return a->epoch != b->epoch;
}
+/* assume ascii; warning: evaluates x multiple times! */
+#define order(x) ((x) == '~' ? -1 \
+ : isdigit((x)) ? 0 \
+ : !(x) ? 0 \
+ : isalpha((x)) ? (x) \
+ : (x) + 256)
+
+static int verrevcmp(const char *val, const char *ref) {
+ if (!val) val= "";
+ if (!ref) ref= "";
+
+ while (*val || *ref) {
+ int first_diff= 0;
+
+ while ( (*val && !isdigit(*val)) || (*ref && !isdigit(*ref)) ) {
+ int vc= order(*val), rc= order(*ref);
+ if (vc != rc) return vc - rc;
+ val++; ref++;
+ }
+
+ while ( *val == '0' ) val++;
+ while ( *ref == '0' ) ref++;
+ while (isdigit(*val) && isdigit(*ref)) {
+ if (!first_diff) first_diff= *val - *ref;
+ val++; ref++;
+ }
+ if (isdigit(*val)) return 1;
+ if (isdigit(*ref)) return -1;
+ if (first_diff) return first_diff;
+ }
+ return 0;
+}
+
+
+#if 0
static int verrevcmp(const char *ival, const char *iref) {
static char empty[] = "";
int vc, rc;
if (!*ref) return +1;
}
}
+#endif
int versioncompare(const struct versionrevision *version,
const struct versionrevision *refversion) {
.B COLUMNS
Sets the number of columns \fBdpkg\fP should use when displaying formatted
text. Currently only used by -l.
+.TP
+.B DPKG_OLD_CONFFILE
+Set by \fBdpkg\fP to the filename of the old configuration file
+when you start a shell to examine a changed configuration.
+file.
+.TP
+.B DPKG_NEW_CONFFILE
+Set by \fBdpkg\fP to the filename of the newversion of a configuration file
+when you start a shell to examine a changed configuration.
+file.
.SH EXAMPLES
To list packages related to the editor vi: