--- /dev/null
+#! /bin/sh
+
+#
+# Find the nth wday in a given month
+#
+# Parameters: month year n wday
+#
+mon_day()
+{
+ case $4 in
+ mon) wday="1-2";;
+ fri) wday="13-14";;
+ sun) wday="19-20";;
+ esac
+
+ nth=$3
+
+ n=1
+ for mon in $(cal -m $1 $2 | tail -n +3 | cut -c$wday)
+ do
+ if [ $n -eq $nth ]
+ then
+ echo $mon
+ return
+ else
+ n=$[n+1]
+ fi
+ done
+}
+
+# LUG-WHV: In einer geraden Kalenderwoche Dienstag um 19:30 Uhr
+# delta=+16; for i in `seq 1 27`; do
+# date=`date -d now+${delta}days +%Y-%m-%d`; delta=$[delta + 14];
+# printf "%s|19:30|WHV|Linux User Group Wilhelmshaven|W\'haven|http://www.lug-whv.de/\n" $date
+# done
+dates_lugwhv()
+{
+ day=$[ $(date +%j) - 1]
+
+ for i in $(seq 1 20)
+ do
+ if [ "$(date -d now-${day}days+${i}days +%V-%u)" = "02-2" ]
+ then
+ delta=$i
+ fi
+ done
+
+ for i in $(seq 1 27)
+ do
+ date=`date -d now-${day}days+${delta}days +%Y-%m-%d`
+ delta=$[delta + 14];
+ printf "%s|19:30|WHV|Linux User Group Wilhelmshaven|W\'haven|http://www.lug-whv.de/\n" $date
+ done
+}
+
+#
+# BUG OL: jeder 3. Montag eines Monats
+#
+dates_bugol()
+{
+ y=$(date +%Y)
+ for m in $(seq 1 12)
+ do
+ printf '%04d-%02d-%02d|19:00|OL|BSD User Group|Havana|http://www.bugol.de/\n' \
+ $y $m $(mon_day $m $y 3 mon)
+ done
+}
+
+#
+# LUG-HB: Treffen: Jeden 3. Sonntag im Monat
+#
+dates_lughb()
+{
+ y=$(date +%Y)
+ for m in $(seq 1 12)
+ do
+ printf '%04d-%02d-%02d|19:00|HB|Linux User Group Bremen|Bremen|http://lug-bremen.info/\n' \
+ $y $m $(mon_day $m $y 3 sun)
+ done
+}
+
+#
+# CCO: jeder 1. und 3. Freitag im Vereinsheim
+#
+dates_cco()
+{
+ y=$(date +%Y)
+ for m in $(seq 1 12)
+ do
+ printf '%04d-%02d-%02d|19:30|FRI|Linux Gruppe Ostfriesland|Hesel|http://linux.cco-ev.de/\n' \
+ $y $m $(mon_day $m $y 1 fri)
+ printf '%04d-%02d-%02d|19:30|FRI|Linux Gruppe Ostfriesland|Hesel|http://linux.cco-ev.de/\n' \
+ $y $m $(mon_day $m $y 3 fri)
+ done
+}
+
+if [ $# -lt 1 ]
+then
+ type=lugo
+else
+ type=$1
+fi
+
+case $type in
+bugol) dates_bugol;;
+lughb) dates_lughb;;
+lugwhv) dates_lugwhv;;
+cco) dates_cco;;
+help) echo "bugol, lughb, cco";;
+esac