--- 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" /* local function prototypes */ static void usage (void); @@ -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)")); - 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")); } else { expires = expdays * SCALE; @@ -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;