Compare commits

...

8 Commits

Author SHA1 Message Date
Dianne Skoll
fe3e2b9a20 Install include files with proper permissions. 2024-04-02 09:05:25 -04:00
Dianne Skoll
400a6b066f Add Portuguese holidays, courtesy of Joop Kiefte. 2024-04-02 09:01:45 -04:00
Dianne Skoll
76d181e7fc Update docs 2024-04-02 08:56:27 -04:00
Dianne Skoll
77373eed2d Fix tests on FreeBSD. We need to copy the results of getenv or when we change it, it will be overwritten. 2024-04-02 08:54:40 -04:00
Dianne Skoll
6b52be388f Update docs. 2024-04-02 08:23:21 -04:00
Dianne Skoll
0518a12a91 Don't fail make install if we can't jigger desktop icons. 2024-04-01 14:42:17 -04:00
Dianne Skoll
362a02c4b8 Don't include inotify-related code if we don't have inotify.
Fixes bug that broke compilation on FreeBSD.
2024-04-01 14:24:00 -04:00
Dianne Skoll
3e3a0cde47 Add "all" option to compare-language-mods.pl 2024-04-01 12:03:34 -04:00
9 changed files with 91 additions and 28 deletions

2
configure vendored
View File

@@ -4225,7 +4225,7 @@ then :
fi
VERSION=04.03.05
VERSION=04.03.06

View File

@@ -88,7 +88,7 @@ if test "$?" != 0 ; then
fi
AC_CHECK_FUNCS(setenv unsetenv glob mbstowcs setlocale initgroups inotify_init1)
VERSION=04.03.05
VERSION=04.03.06
AC_SUBST(VERSION)
AC_SUBST(PERL)
AC_SUBST(PERLARTIFACTS)

View File

@@ -1,5 +1,13 @@
CHANGES TO REMIND
* VERSION 4.3 Patch 6 - 2024-04-02
* BUG FIX: remind: Fix compile error on systems that don't support inotify(7).
* BUG FIX: remind: Fix test failures on FreeBSD. On FreeBSD, you have to copy
the result of getenv() or else a subsequent setenv() can change the stored
value.
* VERSION 4.3 Patch 5 - 2024-04-01
* IMPROVEMENT: remind: Use inotify to detect reminder file changes

17
include/holidays/pt.rem Normal file
View File

@@ -0,0 +1,17 @@
# Portuguese holidays
# Courtesy of Joop Kiefte
OMIT 1 Jan MSG Ano Novo
OMIT [easterdate()-47] MSG Carnaval
OMIT [easterdate()-2] MSG Sexta-feira Santa
OMIT [easterdate()] MSG Domingo de Páscoa
OMIT 25 Apr MSG Dia da Liberdade
OMIT 1 May MSG Dia do Trabalhador
OMIT [easterdate()+60] MSG Corpo de Deus
OMIT 10 Jun MSG Dia de Portugal, de Camões e das Comunidades Portuguesas
OMIT 15 Aug MSG Assunção de Nossa Senhora
OMIT 5 Oct MSG Implantação da República
OMIT 1 Nov MSG Dia de Todos os Santos
OMIT 1 Dec MSG Restauração da Independência
OMIT 8 Dec MSG Imaculada Conceição
OMIT 25 Dec MSG Natal

View File

@@ -63,14 +63,15 @@ install: all
done
-mkdir -p $(DESTDIR)$(datarootdir)/remind || true
cp -R ../include/* $(DESTDIR)$(datarootdir)/remind
chmod -R a+rX $(DESTDIR)$(datarootdir)/remind
-mkdir -p $(DESTDIR)$(prefix)/share/pixmaps
-mkdir -p $(DESTDIR)$(prefix)/share/applications
$(INSTALL_DATA) $(srcdir)/../resources/tkremind.png $(DESTDIR)$(prefix)/share/pixmaps
$(INSTALL_PROGRAM) $(srcdir)/../resources/tkremind.desktop $(DESTDIR)$(prefix)/share/applications
-if test "$(DESTDIR)" = ""; then \
update-desktop-database < /dev/null > /dev/null 2>&1 ; \
xdg-icon-resource install --novendor --size 64 $(DESTDIR)$(prefix)/share/pixmaps/tkremind.png < /dev/null > /dev/null 2>&1; \
xdg-desktop-menu install --novendor $(DESTDIR)$(prefix)/share/applications/tkremind.desktop < /dev/null > /dev/null 2>&1 ; \
xdg-icon-resource install --novendor --size 64 $(DESTDIR)$(prefix)/share/pixmaps/tkremind.png < /dev/null > /dev/null 2>&1 || true; \
xdg-desktop-menu install --novendor $(DESTDIR)$(prefix)/share/applications/tkremind.desktop < /dev/null > /dev/null 2>&1 || true; \
fi
install-stripped: install

View File

@@ -24,27 +24,46 @@ if (!$ARGV[0]) {
}
my $lang = $ARGV[0];
if (!exists($language_map->{$lang})) {
print STDERR "$lang is not a valid language.\n";
exit(1);
}
my $flag = $language_map->{$lang};
print STDERR "Testing for: $lang - $flag.\n";
my_sys("make clean > /dev/null 2>&1") && die("make clean failed");
my_sys("make -j18 all LANGDEF=-DLANG=$flag > /dev/null 2>&1") && die("make all failed");
my_sys("./remind -q -r ../tests/tstlang.rem 2022-03-23 11:44 > test-$lang-compiled.out 2>&1");
my_sys("make clean > /dev/null 2>&1") && die("make clean failed");
my_sys("make -j18 all > /dev/null 2>&1") && die("make all failed");
my_sys("./remind -q -r -ii=\\\"../include/lang/$lang.rem\\\" ../tests/tstlang.rem 2022-03-23 11:44 > test-$lang-runtime.out 2>&1");
my $rc = my_sys("cmp test-$lang-compiled.out test-$lang-runtime.out > /dev/null 2>&1");
if ($rc == 0) {
print STDERR "Congrats! Compiled and runtime language output matches for $lang.\n";
my $rc = 0;
if ($lang eq 'all') {
foreach my $l (sort(keys(%$language_map))) {
if (check($l)) {
$rc = 1;
}
}
} else {
print STDERR "Whoops. Compiled and runtime language output differs for $lang.\n"
$rc = check($lang);
}
exit($rc);
sub check
{
my ($lang) = @_;
if (!exists($language_map->{$lang})) {
print STDERR "$lang is not a valid language.\n";
return 1;
}
my $flag = $language_map->{$lang};
print STDERR "Testing for: $lang - $flag.\n";
my_sys("make clean > /dev/null 2>&1") && die("make clean failed");
my_sys("make -j18 all LANGDEF=-DLANG=$flag > /dev/null 2>&1") && die("make all failed");
my_sys("./remind -q -r ../tests/tstlang.rem 2022-03-23 11:44 > test-$lang-compiled.out 2>&1");
my_sys("make clean > /dev/null 2>&1") && die("make clean failed");
my_sys("make -j18 all > /dev/null 2>&1") && die("make all failed");
my_sys("./remind -q -r -ii=\\\"../include/lang/$lang.rem\\\" ../tests/tstlang.rem 2022-03-23 11:44 > test-$lang-runtime.out 2>&1");
my $rc = my_sys("cmp test-$lang-compiled.out test-$lang-runtime.out > /dev/null 2>&1");
if ($rc == 0) {
print STDERR "Congrats! Compiled and runtime language output matches for $lang.\n";
} else {
print STDERR "Whoops. Compiled and runtime language output differs for $lang.\n"
}
return $rc;
}
exit(0);
sub my_sys

View File

@@ -2575,6 +2575,10 @@ static int UTCToLocalHelper(int datetime, int *ret)
min = (datetime % MINUTES_PER_DAY) % 60;
old_tz = getenv("TZ");
if (old_tz) {
old_tz = StrDup(old_tz);
if (!old_tz) return E_NO_MEM;
}
tz_set_tz("UTC");
@@ -2588,6 +2592,9 @@ static int UTCToLocalHelper(int datetime, int *ret)
utc.tm_isdst = 0;
utc_t = mktime(&utc);
tz_set_tz(old_tz);
if (old_tz) {
free( (void *) old_tz);
}
if (utc_t == -1) {
return E_MKTIME_PROBLEM;
@@ -3222,6 +3229,10 @@ static int tz_convert(int year, int month, int day,
/* backup old TZ env var */
old_tz = getenv("TZ");
if (old_tz) {
old_tz = StrDup(old_tz);
if (!old_tz) return E_NO_MEM;
}
if (tgt_tz == NULL) {
tgt_tz = old_tz;
}
@@ -3229,6 +3240,8 @@ static int tz_convert(int year, int month, int day,
/* set source TZ */
r = tz_set_tz(src_tz);
if (r == -1) {
tz_set_tz(old_tz);
if (old_tz) free((void *) old_tz);
return -1;
}
@@ -3236,14 +3249,16 @@ static int tz_convert(int year, int month, int day,
t = mktime(tm);
if (t == (time_t) -1) {
tz_set_tz(old_tz);
tz_set_tz(old_tz);
if (old_tz) free((void *) old_tz);
return -1;
}
/* set target TZ */
r = tz_set_tz(tgt_tz);
if (r == -1) {
tz_set_tz(old_tz);
tz_set_tz(old_tz);
if (old_tz) free((void *) old_tz);
return -1;
}
@@ -3252,6 +3267,7 @@ static int tz_convert(int year, int month, int day,
/* restore old TZ */
tz_set_tz(old_tz);
if (old_tz) free((void *) old_tz);
/* return result */
if (res == NULL) {

View File

@@ -637,8 +637,10 @@ static void CheckInitialFile(void)
/* If date has rolled around, or file has changed, spawn a new version. */
time_t tim = FileModTime;
int y, m, d;
#ifdef USE_INOTIFY
char buf[sizeof(struct inotify_event) + NAME_MAX + 1];
int n;
#endif
#ifdef USE_INOTIFY
/* If there are any inotify events, reread */

View File

@@ -1060,7 +1060,7 @@ set a057 value("a05"+"6")
"a05" + "6" => "a056"
value("a056") => "SDFJHSDF KSJDFH KJSDFH KSJDFH"
set a058 version()
version() => "04.03.05"
version() => "04.03.06"
set a059 wkday(today())
today() => 1991-02-16
wkday(1991-02-16) => "Saturday"
@@ -2648,7 +2648,7 @@ a086 4
a109 2012-01-01
a128 2018-02-03@16:45
a039 "February"
a058 "04.03.05"
a058 "04.03.06"
a077 "1992 92\n"
a096 -4
a119 -1
@@ -11796,7 +11796,7 @@ Can't open file: include_dir/ww
Error reading include_dir/ww: Can't open file
SECURITY: Won't read world-writable file or directory!
Error reading include_dir/ww: No files matching *.rem
04.03.05
04.03.06
NOTE JSONQUEUE
[{"priority":2,"eventstart":"VOLATILE","time":"23:59","nexttime":"23:59","tdelta":0,"trep":0,"rundisabled":0,"ntrig":1,"filename":"../tests/queue2.rem","lineno":1,"type":"MSG_TYPE","body":"XXXX"},{"priority":999,"eventstart":"VOLATILE","time":"23:58","nexttime":"23:58","tdelta":0,"trep":0,"rundisabled":0,"ntrig":1,"filename":"../tests/queue1.rem","lineno":5,"type":"MSG_TYPE","body":"quux"},{"priority":42,"eventstart":"VOLATILE","time":"23:57","nexttime":"23:57","tdelta":0,"trep":0,"rundisabled":0,"ntrig":1,"filename":"../tests/queue1.rem","lineno":4,"type":"MSG_TYPE","body":"bar"},{"priority":5000,"eventstart":"VOLATILE","time":"23:56","nexttime":"23:56","tdelta":0,"trep":0,"rundisabled":0,"ntrig":1,"filename":"../tests/queue1.rem","lineno":3,"type":"MSG_TYPE","body":"foo"}]
NOTE ENDJSONQUEUE