diff options
author | Christian Neukirchen <chneukirchen@gmail.com> | 2016-01-15 21:56:41 +0100 |
---|---|---|
committer | Christian Neukirchen <chneukirchen@gmail.com> | 2016-01-15 21:56:41 +0100 |
commit | 193f150ac3a87fad164b3911bb69280b0728f6f1 (patch) | |
tree | 822f28f8950430e2f43d76439e6bee8e6dde71ac /src/usr.bin | |
parent | 3c57c4d0031b7206ced8f313e3efa02dbcf88f78 (diff) | |
download | outils-193f150ac3a87fad164b3911bb69280b0728f6f1.tar.gz outils-193f150ac3a87fad164b3911bb69280b0728f6f1.tar.xz outils-193f150ac3a87fad164b3911bb69280b0728f6f1.zip |
cvs update
Diffstat (limited to 'src/usr.bin')
-rw-r--r-- | src/usr.bin/calendar/calendars/calendar.uk | 44 | ||||
-rw-r--r-- | src/usr.bin/rs/utf8.c | 61 |
2 files changed, 105 insertions, 0 deletions
diff --git a/src/usr.bin/calendar/calendars/calendar.uk b/src/usr.bin/calendar/calendars/calendar.uk new file mode 100644 index 0000000..4a36295 --- /dev/null +++ b/src/usr.bin/calendar/calendars/calendar.uk @@ -0,0 +1,44 @@ +/* + * United Kingdom (UK) calendar + * + * $OpenBSD: calendar.uk,v 1.1 2016/01/14 20:08:01 jmc Exp $ + */ + +#ifndef _calendar_uk_ +#define _calendar_uk_ + +01/01 New Year's Day +01/02 Bank holiday in Scotland +01/25 Burns' Night in Scotland +02/14 Saint Valentine's Day +03/01 Saint David's Day in Wales +03/17 Saint Patrick's Day (also a bank holiday across Ireland) +03/20* Vernal Equinox +03/SunLast Daylight Saving Time begins; clocks move forward (last Sunday of March) +04/01 April Fools' Day +04/23 Saint George's Day in England +Easter-21 Mothering Sunday (Sunday 3 weeks before Easter Sunday) +Easter-2 Good Friday (bank holiday) +Easter+1 Easter Monday (bank holiday - except Scotland) +05/MonFirst Early May bank holiday +05/MonThird* Victoria Day in Scotland (Monday on or immediately before 24th May) +05/MonLast Spring Bank Holiday +06/SunThird Father's Day (3rd Sunday of June) +06/21* Summer Solstice +07/11 Eleventh Night in Northern Ireland +07/12 Battle of the Boyne/Orangemen's Day/The Twelfth - a bank holiday in Northern Ireland +08/MonFirst Summer bank holiday in Scotland +08/MonLast Summer bank holiday in England, Wales and Northern Ireland +09/22* Autumnal Equinox +10/SunLast Daylight Saving Time ends; clocks move back (last Sunday in October) +10/31 Halloween +11/05 Guy Fawkes Night +11/11 Remembrance Day +11/SunSecond Remembrance Sunday +12/21* Winter Solstice +12/24 Christmas Eve +12/25 Christmas Day +12/26 Boxing Day +12/31 Hogmanay/New Year's Eve + +#endif /* !_calendar_uk_ */ diff --git a/src/usr.bin/rs/utf8.c b/src/usr.bin/rs/utf8.c new file mode 100644 index 0000000..c779d74 --- /dev/null +++ b/src/usr.bin/rs/utf8.c @@ -0,0 +1,61 @@ +/* + * Copyright (c) 2015 Ingo Schwarze <schwarze@openbsd.org> + * + * Permission to use, copy, modify, and distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ + +#include <err.h> +#include <stdlib.h> +#include <string.h> +#include <wchar.h> + +int +mbsavis(char** outp, const char *mbs) +{ + const char *src; /* Iterate mbs. */ + char *dst; /* Iterate *outp. */ + wchar_t wc; + int total_width; /* Display width of the whole string. */ + int width; /* Display width of a single Unicode char. */ + int len; /* Length in bytes of UTF-8 encoded string. */ + + len = strlen(mbs); + if ((*outp = malloc(len + 1)) == NULL) + err(1, NULL); + + if (MB_CUR_MAX == 1) { + memcpy(*outp, mbs, len + 1); + return len; + } + + src = mbs; + dst = *outp; + total_width = 0; + while (*src != '\0') { + if ((len = mbtowc(&wc, src, MB_CUR_MAX)) == -1) { + total_width++; + *dst++ = '?'; + src++; + } else if ((width = wcwidth(wc)) == -1) { + total_width++; + *dst++ = '?'; + src += len; + } else { + total_width += width; + while (len-- > 0) + *dst++ = *src++; + } + } + *dst = '\0'; + return total_width; +} |