-diff -Nur shadow-4.0.3/src/chage.c shadow-4.0.3.new/src/chage.c
---- shadow-4.0.3/src/chage.c 2002-01-05 16:41:43.000000000 +0100
-+++ shadow-4.0.3.new/src/chage.c 2003-05-27 20:42:50.000000000 +0200
-@@ -83,6 +83,7 @@
+--- shadow-4.0.6/src/chage.c 2004-11-18 21:36:19.617616944 +0100
++++ shadow-4.0.16/src/chage.c 2006-06-08 00:30:20.837211299 +0300
+@@ -84,7 +84,7 @@
+ extern int sp_dbm_mode;
#endif
- #define EPOCH "1969-12-31"
-+#define EPOCH_SHORT "12/31/69"
+-#define EPOCH "1969-12-31"
++#define EPOCH_SHORT "12/31/69"
/* local function prototypes */
static void usage (void);
-@@ -302,7 +303,7 @@
- */
+@@ -168,7 +168,7 @@
+ change_field (buf, sizeof buf,
+ _("Last Password Change (YYYY-MM-DD)"));
+
+- if (strcmp (buf, EPOCH) == 0)
++ if (strcmp (buf, EPOCH_SHORT) == 0)
+ lastday = -1;
+ else if ((lastday = strtoday (buf)) == -1)
+ return 0;
+@@ -190,7 +190,7 @@
+ change_field (buf, sizeof buf,
+ _("Account Expiration Date (YYYY-MM-DD)"));
- printf (_("Account Expires:\t"));
-- if (expdays <= 0) {
+- if (strcmp (buf, EPOCH) == 0)
++ if (strcmp (buf, EPOCH_SHORT) == 0)
+ expdays = -1;
+ else if ((expdays = strtoday (buf)) == -1)
+ return 0;
+@@ -274,7 +274,7 @@
+ * password expiring or not.
+ */
+ printf (_("Account expires\t\t\t\t\t\t: "));
+- if (expdays < 0) {
+ if (expdays == -1) {
- printf (_("Never\n"));
+ printf (_("never\n"));
} else {
expires = expdays * SCALE;
-@@ -440,7 +441,11 @@
- case 'E':
- Eflg++;
- if (!isnum (optarg))
-- expdays = strtoday (optarg);
-+ if (strcmp (optarg, EPOCH_SHORT) == 0)
-+ expdays = -1;
-+ else
-+ expdays = strtoday (optarg);
-+
- else
- expdays = strtol (optarg, 0, 10);
- break;
+@@ -403,7 +403,10 @@
+ case 'E':
+ Eflg++;
+ if (!isnum (optarg))
+- expdays = strtoday (optarg);
++ if (strcmp (optarg, EPOCH_SHORT) == 0)
++ expdays = -1;
++ else
++ expdays = strtoday (optarg);
+ else
+ expdays = strtol (optarg, 0, 10);
+ break;