I am playing now with idea of "back porting" many very useful fixes and additions made in OpenBSD calendar(1) to FreeBSD. The most useful to me are the fixes to handling of dates bound to weekdays. But I think that there is something in FreeBSD version that could be useful in OpenBSD as well: I am used now to specifying localized month and week day names in locale-specific calendar names (BTW, I've submitted a basic calendar for uk_UA.KOI8-U to FreeBSD, it's already in CURRENT source tree) e.g.:
sER 24 dENX nEZALEVNOST& uKRA'NI translated to Aug 23 Independence Day of Ukraine FreeBSD calendar(1) handles this just perfectly (provided that I put "LANG=uk_UA.KOI8-U" in the calendar file, but OpenBSD calendar(1) (on FreeBSD!) seems to mishandle non-ASCII symbols in date specification. I think the reason for that is that argument of type char is passed to isdigit()/isalpha()/etc calls, while the proper argument type seems to be unsigned char: http://www.openbsd.org/cgi-bin/man.cgi?query=isalpha&apropos=0&sektion=0&manpath=OpenBSD+Current&arch=i386&format=html http://www.opengroup.org/onlinepubs/009695399/functions/isalpha.html The change was made in FreeBSD quite a while ago: http://www.freebsd.org/cgi/cvsweb.cgi/src/usr.bin/calendar/io.c.diff?r1=1.2&r2=1.3&f=h I realize that this type of change will probably still not do any good for locales with multi-byte characters (like UTF8), but it should definitely improve things for one-byte characters locales like those based on KOI8. On the other hand, maybe OpenBSD is<type>() functions are different from FreeBSD and can handle char argument without problems ? -- Andriy Gapon