Mailfs date problem



Hi,

Pavel Tsekov drew my attention to the fact that the fact that we now
only parse dates with 3 elements (either year or time, not both) broke
mailfs. I intend to fix this, but haven't had time to look into this
thoroughly.

The representation for files younger and older than 6 months use either
time or year in the third field. However, there's a bit of an issue as
to what constitutes to 6 months that I need to investigate before I can
commit a correct fix. GNU ls seems to change at 180 or 181 days in the
past (not sure why this is inconsistent) but I'm unsure what mc assumes
internally (this day 6 months ago?).

Anyway, if you are using mc from CVS and using mailfs you can
temporarily use the attached patch which parses the date values back to
3 fields (year, not time). This causes all times for emails younger than
6 months to be represented as 00:00 which is ugly but at least it gets
rid of the year in the mail name.

I hope to find some time to fix this issue correctly next week (or the
week after that ;) .

Leonard.

-- 
mount -t life -o ro /dev/dna /genetic/research

--- mailfs.in.000	2002-12-24 07:56:17.000000000 +0100
+++ mailfs.in	2006-05-14 00:03:22.000000000 +0200
@@ -21,7 +21,7 @@ if (eval "require Date::Manip") {
     $parse_date=
 	sub {
 	    local $_ =localtime(str2time($_[0],$TZ));
-	    s/^... (.+) (\d\d:\d\d):\d\d (\d\d\d\d)$/$1 $3 $2/;
+	    s/^... (.+) (\d\d:\d\d):\d\d (\d\d\d\d)$/$1 $2/;
 	    return $_;
 	}
 } else {			# use "light" version
@@ -29,7 +29,7 @@ if (eval "require Date::Manip") {
 	# assumes something like: Mon, 5 Jan 1998 16:08:19 +0200 (GMT+0200)
 	# if you have mails with another date format, add it here
 	if (/(\d\d?) ([A-Z][a-z][a-z]) (\d\d\d\d) (\d\d?:\d\d)/) {
-	    return "$2 $1 $3 $4";
+	    return "$2 $1 $3";
 	}
 	# Y2K bug.
 	# Date: Mon, 27 Mar 100 16:30:47 +0000 (GMT)
@@ -38,12 +38,12 @@ if (eval "require Date::Manip") {
 	    if ($correct_year < 1970) {
 		$correct_year += 100;
 	    }
-	    return "$2 $1 $correct_year $4";
+	    return "$2 $1 $correct_year";
 	}
 	# AOLMail(SM).
 	# Date: Sat Jul 01 10:06:06 2000
 	if (/([A-Z][a-z][a-z]) (\d\d?) (\d\d?:\d\d)(:\d\d)? (\d\d\d\d)/) {
-	    return "$1 $2 $5 $3";
+	    return "$1 $2 $5";
 	}
 	# Fallback
 	return localtime(time);


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]