This change would be more useful in the C library, but I don’t have commit
access there.
APPROVE COMMIT
NOTE: This patch has been committed.
# HG changeset patch
# User Aidan Kehoe <kehoea(a)parhasard.net>
# Date 1283425206 -3600
# Node ID 1537701f08a15ed8fc904f04a5a3fdf3e5ec0bed
# Parent b6a398dbb40329f1f111c181692ab1be47c133cf
Support Roman month numbers, #'format-time-string
src/ChangeLog addition:
2010-09-02 Aidan Kehoe <kehoea(a)parhasard.net>
* strftime.c (roman_upper, roman_lower, strftime):
Implement Roman month numbers, as used in central and eastern
Europe.
* editfns.c (Fformat_time_string):
Document two new escapes, to allow uppercase and lowercase Roman
month numbers. Remove documentation of a bug that we didn't
actually have.
* text.h (Qtime_function_encoding): We know the text encoding
coming from strftime(), because we always use the one in
strftime.c. Don't use Qnative.
man/ChangeLog addition:
2010-09-02 Aidan Kehoe <kehoea(a)parhasard.net>
* lispref/os.texi (Time Conversion):
Document the new #'format-time-string flags for Roman month
numbers.
diff -r b6a398dbb403 -r 1537701f08a1 man/ChangeLog
--- a/man/ChangeLog Wed Sep 01 12:51:32 2010 +0100
+++ b/man/ChangeLog Thu Sep 02 12:00:06 2010 +0100
@@ -1,3 +1,9 @@
+2010-09-02 Aidan Kehoe <kehoea(a)parhasard.net>
+
+ * lispref/os.texi (Time Conversion):
+ Document the new #'format-time-string flags for Roman month
+ numbers.
+
2010-08-30 Aidan Kehoe <kehoea(a)parhasard.net>
* lispref/eval.texi (Evaluation, Multiple values):
diff -r b6a398dbb403 -r 1537701f08a1 man/lispref/os.texi
--- a/man/lispref/os.texi Wed Sep 01 12:51:32 2010 +0100
+++ b/man/lispref/os.texi Thu Sep 02 12:00:06 2010 +0100
@@ -1026,6 +1026,10 @@
This stands for the year with century.
@item %Z
This stands for the time zone abbreviation.
+@item %\xe6 (the ISO-8859-1 lowercase ae character)
+This stands for the month as a lowercase Roman number (i-xii)
+@item %\xc6 (the ISO-8859-1 uppercase AE character)
+This stands for the month as an uppercase Roman number (I-XII)
@end table
@end defun
diff -r b6a398dbb403 -r 1537701f08a1 src/ChangeLog
--- a/src/ChangeLog Wed Sep 01 12:51:32 2010 +0100
+++ b/src/ChangeLog Thu Sep 02 12:00:06 2010 +0100
@@ -1,3 +1,16 @@
+2010-09-02 Aidan Kehoe <kehoea(a)parhasard.net>
+
+ * strftime.c (roman_upper, roman_lower, strftime):
+ Implement Roman month numbers, as used in central and eastern
+ Europe.
+ * editfns.c (Fformat_time_string):
+ Document two new escapes, to allow uppercase and lowercase Roman
+ month numbers. Remove documentation of a bug that we didn't
+ actually have.
+ * text.h (Qtime_function_encoding): We know the text encoding
+ coming from strftime(), because we always use the one in
+ strftime.c. Don't use Qnative.
+
2010-09-01 Aidan Kehoe <kehoea(a)parhasard.net>
* fns.c (list_merge, list_array_merge_into_list)
diff -r b6a398dbb403 -r 1537701f08a1 src/editfns.c
--- a/src/editfns.c Wed Sep 01 12:51:32 2010 +0100
+++ b/src/editfns.c Thu Sep 02 12:00:06 2010 +0100
@@ -1044,11 +1044,10 @@
%Y is replaced by the year with century.
%z is replaced by the time zone as a numeric offset (e.g +0530, -0800 etc.)
%Z is replaced by the time zone abbreviation.
+%\xe6 is replaced by the month as a lowercase Roman number (i-xii)
+%\xc6 is replaced by the month as an uppercase Roman number (I-XII)
The number of options reflects the `strftime' function.
-
-BUG: If the charset used by the current locale is not ISO 8859-1, the
-characters appearing in the day and month names may be incorrect.
*/
(format_string, time_))
{
diff -r b6a398dbb403 -r 1537701f08a1 src/strftime.c
--- a/src/strftime.c Wed Sep 01 12:51:32 2010 +0100
+++ b/src/strftime.c Thu Sep 02 12:00:06 2010 +0100
@@ -132,6 +132,16 @@
"July", "August", "September", "October",
"November", "December"
};
+static char const * const roman_upper[] =
+{
+ "I", "II", "III", "IV", "V",
"VI", "VII", "VIII", "IX", "X",
"XI", "XII"
+};
+
+static char const * const roman_lower[] =
+{
+ "i", "ii", "iii", "iv", "v",
"vi", "vii", "viii", "ix", "x",
"xi", "xii"
+};
+
/* Add character C to STRING and increment LENGTH,
unless LENGTH would exceed MAX. */
@@ -601,6 +611,16 @@
add_num3 (&string[length],
(1900 + tm->tm_year) % 1000, max - length, zero);
break;
+ case '\xe6':
+ length +=
+ add_str (&string[length], roman_lower[tm->tm_mon],
+ max - length);
+ break;
+ case '\xC6':
+ length +=
+ add_str (&string[length], roman_upper[tm->tm_mon],
+ max - length);
+ break;
}
}
}
diff -r b6a398dbb403 -r 1537701f08a1 src/text.h
--- a/src/text.h Wed Sep 01 12:51:32 2010 +0100
+++ b/src/text.h Thu Sep 02 12:00:06 2010 +0100
@@ -3095,7 +3095,7 @@
#endif
#define Qunix_host_name_encoding Qnative
#define Qunix_service_name_encoding Qnative
-#define Qtime_function_encoding Qnative
+#define Qtime_function_encoding Qbinary
#define Qtime_zone_encoding Qtime_function_encoding
#define Qmswindows_host_name_encoding Qmswindows_multibyte
#define Qmswindows_service_name_encoding Qmswindows_multibyte
--
“Apart from the nine-banded armadillo, man is the only natural host of
Mycobacterium leprae, although it can be grown in the footpads of mice.”
-- Kumar & Clark, Clinical Medicine, summarising improbable leprosy research
_______________________________________________
XEmacs-Patches mailing list
XEmacs-Patches(a)xemacs.org
http://calypso.tux.org/mailman/listinfo/xemacs-patches