irename the project ics2txt - ics2txt - convert icalendar .ics file to plain text Err bitreich.org 70
hgit clone git://bitreich.org/ics2txt git://enlrupgkhuxnvlhsf6lc3fziv5h2hhfrinws65d7roiv6bfj7d652fid.onion/ics2txt URL:git://bitreich.org/ics2txt git://enlrupgkhuxnvlhsf6lc3fziv5h2hhfrinws65d7roiv6bfj7d652fid.onion/ics2txt bitreich.org 70
1Log /scm/ics2txt/log.gph bitreich.org 70
1Files /scm/ics2txt/files.gph bitreich.org 70
1Refs /scm/ics2txt/refs.gph bitreich.org 70
1Tags /scm/ics2txt/tag bitreich.org 70
1README /scm/ics2txt/file/README.md.gph bitreich.org 70
i--- Err bitreich.org 70
1commit 481f690766d5999510f088b675ee9038f2007754 /scm/ics2txt/commit/481f690766d5999510f088b675ee9038f2007754.gph bitreich.org 70
1parent d587bdf097f3d058457675df00434427fb664976 /scm/ics2txt/commit/d587bdf097f3d058457675df00434427fb664976.gph bitreich.org 70
hAuthor: Josuah Demangeon <mail@josuah.net> URL:mailto:mail@josuah.net bitreich.org 70
iDate: Sat, 5 May 2018 22:22:31 +0200 Err bitreich.org 70
i Err bitreich.org 70
irename the project ics2txt Err bitreich.org 70
i Err bitreich.org 70
i'agenda' was too generic (name clash?), and it is not only a one-way Err bitreich.org 70
iconversion tool so ics2txt explains everything in a breeze. Err bitreich.org 70
i Err bitreich.org 70
iDiffstat: Err bitreich.org 70
i M Makefile | 4 ++-- Err bitreich.org 70
i D agenda | 183 ------------------------------- Err bitreich.org 70
i D agenda.1 | 81 ------------------------------ Err bitreich.org 70
i A ics2txt | 183 +++++++++++++++++++++++++++++++ Err bitreich.org 70
i A ics2txt.1 | 81 ++++++++++++++++++++++++++++++ Err bitreich.org 70
i Err bitreich.org 70
i5 files changed, 266 insertions(+), 266 deletions(-) Err bitreich.org 70
i--- Err bitreich.org 70
1diff --git a/Makefile b/Makefile /scm/ics2txt/file/Makefile.gph bitreich.org 70
i@@ -1,5 +1,5 @@ Err bitreich.org 70
i-BIN = agenda Err bitreich.org 70
i-MAN1 = agenda.1 Err bitreich.org 70
i+BIN = ics2txt Err bitreich.org 70
i+MAN1 = ics2txt.1 Err bitreich.org 70
i Err bitreich.org 70
i all: Err bitreich.org 70
i Err bitreich.org 70
1diff --git a/agenda b/agenda /scm/ics2txt/file/agenda.gph bitreich.org 70
i@@ -1,183 +0,0 @@ Err bitreich.org 70
i-#!/usr/bin/awk -f Err bitreich.org 70
i- Err bitreich.org 70
i-# handle ical agenda and display them in plain text Err bitreich.org 70
i- Err bitreich.org 70
i-function leap(yrs) Err bitreich.org 70
i-{ Err bitreich.org 70
i- return (yrs % 4 == 0) && (yrs % 100 != 0) || (yrs % 400 == 0); Err bitreich.org 70
i-} Err bitreich.org 70
i- Err bitreich.org 70
i-function days_per_month(mth, yrs) Err bitreich.org 70
i-{ Err bitreich.org 70
i- if (mth == 2) Err bitreich.org 70
i- return 28 + leap(yrs); Err bitreich.org 70
i- else Err bitreich.org 70
i- return 30 + (mth - (mth > 7)) % 2; Err bitreich.org 70
i-} Err bitreich.org 70
i- Err bitreich.org 70
i-function to_sec(yrs, mth, day, hrs, min, sec) Err bitreich.org 70
i-{ Err bitreich.org 70
i- while (--mth >= 1) Err bitreich.org 70
i- day += days_per_month(mth, yrs); Err bitreich.org 70
i- while (--yrs >= 1970) Err bitreich.org 70
i- day += 365 + leap(yrs); Err bitreich.org 70
i- return (((((day - 1) * 24) + hrs) * 60) + min) * 60 + sec; Err bitreich.org 70
i-} Err bitreich.org 70
i- Err bitreich.org 70
i-function to_date(fmt, sec) Err bitreich.org 70
i-{ Err bitreich.org 70
i- for (yrs = 1970; sec >= (s = 3600 * 24 * (365 + leap(yrs))); yrs++) Err bitreich.org 70
i- sec -= s; Err bitreich.org 70
i- for (mth = 1; sec >= (s = 3600 * 24 * days_per_month(mth, yrs)); mth++) Err bitreich.org 70
i- sec -= s; Err bitreich.org 70
i- for (day = 1; sec >= (s = 3600 * 24); day++) Err bitreich.org 70
i- sec -= s; Err bitreich.org 70
i- for (hrs = 0; sec >= 3600; hrs++) Err bitreich.org 70
i- sec -= 3600; Err bitreich.org 70
i- for (min = 0; sec >= 60; min++) Err bitreich.org 70
i- sec -= 60; Err bitreich.org 70
i- return sprintf(fmt, yrs, mth, day, hrs, min, sec); Err bitreich.org 70
i-} Err bitreich.org 70
i- Err bitreich.org 70
i-function date_ical(str, off) { Err bitreich.org 70
i- yrs = substr(str, 1, 4); Err bitreich.org 70
i- mth = substr(str, 5, 2); Err bitreich.org 70
i- day = substr(str, 7, 2); Err bitreich.org 70
i- hrs = substr(str, 10, 2); Err bitreich.org 70
i- min = substr(str, 12, 2); Err bitreich.org 70
i- return to_sec(yrs, mth, day, hrs, min, 0) - off; Err bitreich.org 70
i-} Err bitreich.org 70
i- Err bitreich.org 70
i-function date_iso8601(date, off) Err bitreich.org 70
i-{ Err bitreich.org 70
i- yrs = substr(date, 1, 4); Err bitreich.org 70
i- mth = substr(date, 6, 2); Err bitreich.org 70
i- day = substr(date, 9, 2); Err bitreich.org 70
i- hrs = substr(date, 12, 2); Err bitreich.org 70
i- min = substr(date, 15, 2); Err bitreich.org 70
i- return to_sec(yrs, mth, day, hrs, min, 0) - off; Err bitreich.org 70
i-} Err bitreich.org 70
i- Err bitreich.org 70
i-function swap(array, a, b) Err bitreich.org 70
i-{ Err bitreich.org 70
i- tmp = array[a]; Err bitreich.org 70
i- array[a] = array[b]; Err bitreich.org 70
i- array[b] = tmp; Err bitreich.org 70
i-} Err bitreich.org 70
i- Err bitreich.org 70
i-function sort(array, beg, end) Err bitreich.org 70
i-{ Err bitreich.org 70
i- if (beg >= end) # end recursion Err bitreich.org 70
i- return; Err bitreich.org 70
i- Err bitreich.org 70
i- a = beg + 1; # #1 is the pivot Err bitreich.org 70
i- b = end; Err bitreich.org 70
i- while (a < b) { Err bitreich.org 70
i- while (a < b && array[a] <= array[beg]) # beg: skip lesser Err bitreich.org 70
i- a++; Err bitreich.org 70
i- while (a < b && array[b] > array[beg]) # end: skip greater Err bitreich.org 70
i- b--; Err bitreich.org 70
i- swap(array, a, b); # found 2 misplaced Err bitreich.org 70
i- } Err bitreich.org 70
i- Err bitreich.org 70
i- if (array[beg] > array[a]) # put the pivot back Err bitreich.org 70
i- swap(array, beg, a); Err bitreich.org 70
i- Err bitreich.org 70
i- sort(array, beg, a - 1); # sort lower half Err bitreich.org 70
i- sort(array, a, end); # sort higher half Err bitreich.org 70
i-} Err bitreich.org 70
i- Err bitreich.org 70
i-function parse_ical(list, off) Err bitreich.org 70
i-{ Err bitreich.org 70
i- FS = "[:;]"; Err bitreich.org 70
i- Err bitreich.org 70
i- while (getline) { Err bitreich.org 70
i- gsub("\r", " "); gsub("\\\\[ntr]", " "); gsub("\\\\", ""); Err bitreich.org 70
i- gsub("^ *", ""); gsub(" *$", ""); Err bitreich.org 70
i- gsub(" *<[a-zA-Z0-9/]*>* *", ""); Err bitreich.org 70
i- Err bitreich.org 70
i- if (match($0, "^ ")) { Err bitreich.org 70
i- event[type] = event[type] substr($0, 2, length($0) - 1); Err bitreich.org 70
i- } else { Err bitreich.org 70
i- type = $1; Err bitreich.org 70
i- i = index($0, ":"); Err bitreich.org 70
i- event[type] = substr($0, i + 1, length($0) - i); Err bitreich.org 70
i- } Err bitreich.org 70
i- Err bitreich.org 70
i- if ($0 ~ /END:VEVENT/) Err bitreich.org 70
i- list[++nb] = sprintf("%d\t%d\t%s\t%s\t%s\t%s", Err bitreich.org 70
i- date_ical(event["DTSTART"], off), Err bitreich.org 70
i- date_ical(event["DTEND"], off), Err bitreich.org 70
i- event["CATEGORIES"], Err bitreich.org 70
i- event["SUMMARY"], Err bitreich.org 70
i- event["LOCATION"], Err bitreich.org 70
i- event["DESCRIPTION"]); Err bitreich.org 70
i- } Err bitreich.org 70
i- sort(list, 1, nb); Err bitreich.org 70
i- return nb; Err bitreich.org 70
i-} Err bitreich.org 70
i- Err bitreich.org 70
i-function txt_one(beg, end, cat, sum, loc, des, off) { Err bitreich.org 70
i- b = to_date("%04d/%02d/%02d %02d:%02d", beg + off); Err bitreich.org 70
i- e = to_date("%04d/%02d/%02d %02d:%02d", end + off); Err bitreich.org 70
i- b_mth = substr(b, 1, 7); Err bitreich.org 70
i- b_day = substr(b, 9, 2); Err bitreich.org 70
i- e_day = substr(e, 9, 2); Err bitreich.org 70
i- b_hrs = substr(b, 12); Err bitreich.org 70
i- e_hrs = substr(e, 12); Err bitreich.org 70
i- Err bitreich.org 70
i- printf("%s\n%2s %2s %s\n%2s %2s %s%s\n", Err bitreich.org 70
i- (b_mth != l_mth) ? ("\n[" b_mth "]\n") : (""), Err bitreich.org 70
i- (b_day != l_day) ? (b_day) : (""), b_hrs, sum, Err bitreich.org 70
i- (b_day != e_day) ? (e_day) : (""), e_hrs, Err bitreich.org 70
i- (cat) ? ("[" cat "] ") : (""), loc); Err bitreich.org 70
i- Err bitreich.org 70
i- while ((line = substr(des, 1, 66)) != "") { Err bitreich.org 70
i- if (length(line) == 66) Err bitreich.org 70
i- sub(" +[^ ]*$", "", line); Err bitreich.org 70
i- des = substr(des, length(line) + 2); Err bitreich.org 70
i- sub("^ *", "", line); Err bitreich.org 70
i- sub("^ *", "", des); Err bitreich.org 70
i- printf(" %s\n", line); Err bitreich.org 70
i- } Err bitreich.org 70
i- l_mth = b_mth; Err bitreich.org 70
i- l_day = b_day; Err bitreich.org 70
i-} Err bitreich.org 70
i- Err bitreich.org 70
i-function txt(off) Err bitreich.org 70
i-{ Err bitreich.org 70
i- nb = parse_ical(list, off); Err bitreich.org 70
i- for (i = 1; i <= nb; i++) { Err bitreich.org 70
i- split(list[i], arr, "\t"); Err bitreich.org 70
i- txt_one(arr[1], arr[2], arr[3], arr[4], arr[5], arr[6]); Err bitreich.org 70
i- } Err bitreich.org 70
i-} Err bitreich.org 70
i- Err bitreich.org 70
i-function tsv(off) Err bitreich.org 70
i-{ Err bitreich.org 70
i- nb = parse_ical(list, off); Err bitreich.org 70
i- for (i = 0; i < nb; i++) Err bitreich.org 70
i- print(list[i]); Err bitreich.org 70
i-} Err bitreich.org 70
i- Err bitreich.org 70
i-function usage() Err bitreich.org 70
i-{ Err bitreich.org 70
i- print("usage: agenda txt file.ics..."); Err bitreich.org 70
i- print(" agenda tsv file.ics..."); Err bitreich.org 70
i-} Err bitreich.org 70
i- Err bitreich.org 70
i-BEGIN { Err bitreich.org 70
i- "date +%z" | getline off; Err bitreich.org 70
i- close("date +%z"); Err bitreich.org 70
i- off = substr(off, 1, 3) * 3600; Err bitreich.org 70
i- Err bitreich.org 70
i- if (ARGV[1] == "txt") { Err bitreich.org 70
i- ARGV[1] = ARGV[--ARGC]; Err bitreich.org 70
i- txt(off); Err bitreich.org 70
i- } else if (ARGV[1] == "tsv") { Err bitreich.org 70
i- ARGV[1] = ARGV[--ARGC]; Err bitreich.org 70
i- tsv(off); Err bitreich.org 70
i- } else { Err bitreich.org 70
i- usage(); Err bitreich.org 70
i- } Err bitreich.org 70
i-} Err bitreich.org 70
1diff --git a/agenda.1 b/agenda.1 /scm/ics2txt/file/agenda.1.gph bitreich.org 70
i@@ -1,81 +0,0 @@ Err bitreich.org 70
i-.Dd $Mdocdate: February 23 2018$ Err bitreich.org 70
i-.Dt AGENDA 1 Err bitreich.org 70
i-.Os Err bitreich.org 70
i-. Err bitreich.org 70
i-. Err bitreich.org 70
i-.Sh NAME Err bitreich.org 70
i-. Err bitreich.org 70
i-.Nm agenda Err bitreich.org 70
i-.Nd plain text agenda with ical support Err bitreich.org 70
i-. Err bitreich.org 70
i-. Err bitreich.org 70
i-.Sh SYNOPSIS Err bitreich.org 70
i-. Err bitreich.org 70
i-.Nm Ic txt Oo +- Oc Ns Ar offset Op Ar ics file... Err bitreich.org 70
i-.Nm Ic tsv Oo +- Oc Ns Ar offset Op Ar ics file... Err bitreich.org 70
i-. Err bitreich.org 70
i-. Err bitreich.org 70
i-.Sh DESCRIPTION Err bitreich.org 70
i-. Err bitreich.org 70
i-.Nm Err bitreich.org 70
i-displays iCalendar Err bitreich.org 70
i-.Pq ical, Pa .ics Err bitreich.org 70
i-.Ar file Err bitreich.org 70
i-or stdin if not specified in the format described by the command: Err bitreich.org 70
i-. Err bitreich.org 70
i-.Bl -tag -width indent Err bitreich.org 70
i-. Err bitreich.org 70
i-.It Ic txt Err bitreich.org 70
i-Display the agenda(s) Err bitreich.org 70
i-.Ar file Err bitreich.org 70
i-as plain text sorted by date. Err bitreich.org 70
i-. Err bitreich.org 70
i-.It Ic tsv Err bitreich.org 70
i-Display the agenda(s) Err bitreich.org 70
i-.Ar file Err bitreich.org 70
i-as a tab-separated values Err bitreich.org 70
i-.Pq tsv Err bitreich.org 70
i-one entry per line, with the following fields in order: Err bitreich.org 70
i-. Err bitreich.org 70
i-.Bl -tag -width xDESCRIPTIONx -compact Err bitreich.org 70
i-. Err bitreich.org 70
i-.It Dq Li DTSTART Err bitreich.org 70
i-begin date as an UNIX timestamp Err bitreich.org 70
i-. Err bitreich.org 70
i-.It Dq Li DTEND Err bitreich.org 70
i-end date as an UNIX timestamp Err bitreich.org 70
i-. Err bitreich.org 70
i-.It Dq Li CATEGORY Err bitreich.org 70
i-category Err bitreich.org 70
i-. Err bitreich.org 70
i-.It Dq Li SUMMARY Err bitreich.org 70
i-symmary Err bitreich.org 70
i-. Err bitreich.org 70
i-.It Dq Li LOCATION Err bitreich.org 70
i-location Err bitreich.org 70
i-. Err bitreich.org 70
i-.It Dq Li DESCRIPTION Err bitreich.org 70
i-description Err bitreich.org 70
i-. Err bitreich.org 70
i-.El Err bitreich.org 70
i-. Err bitreich.org 70
i-. Err bitreich.org 70
i-.Sh ENVIRONMENT Err bitreich.org 70
i-. Err bitreich.org 70
i-.Bl -tag -width 6n Err bitreich.org 70
i-. Err bitreich.org 70
i-.It Ev TZ Err bitreich.org 70
i-Timezone to use for printing the dates. Err bitreich.org 70
i-. Err bitreich.org 70
i-.El Err bitreich.org 70
i-. Err bitreich.org 70
i-. Err bitreich.org 70
i-.Sh SEE ALSO Err bitreich.org 70
i-. Err bitreich.org 70
i-.Xr calendar 1 , Err bitreich.org 70
i-.Xr date 1 , Err bitreich.org 70
i-. Err bitreich.org 70
i-. Err bitreich.org 70
i-.Sh AUTHORS Err bitreich.org 70
i-. Err bitreich.org 70
i-.An Josuah Demangeon Aq Mt mail@josuah.net Err bitreich.org 70
1diff --git a/ics2txt b/ics2txt /scm/ics2txt/file/ics2txt.gph bitreich.org 70
i@@ -0,0 +1,183 @@ Err bitreich.org 70
i+#!/usr/bin/awk -f Err bitreich.org 70
i+ Err bitreich.org 70
i+# handle ical agenda and display them in plain text Err bitreich.org 70
i+ Err bitreich.org 70
i+function leap(yrs) Err bitreich.org 70
i+{ Err bitreich.org 70
i+ return (yrs % 4 == 0) && (yrs % 100 != 0) || (yrs % 400 == 0); Err bitreich.org 70
i+} Err bitreich.org 70
i+ Err bitreich.org 70
i+function days_per_month(mth, yrs) Err bitreich.org 70
i+{ Err bitreich.org 70
i+ if (mth == 2) Err bitreich.org 70
i+ return 28 + leap(yrs); Err bitreich.org 70
i+ else Err bitreich.org 70
i+ return 30 + (mth - (mth > 7)) % 2; Err bitreich.org 70
i+} Err bitreich.org 70
i+ Err bitreich.org 70
i+function to_sec(yrs, mth, day, hrs, min, sec) Err bitreich.org 70
i+{ Err bitreich.org 70
i+ while (--mth >= 1) Err bitreich.org 70
i+ day += days_per_month(mth, yrs); Err bitreich.org 70
i+ while (--yrs >= 1970) Err bitreich.org 70
i+ day += 365 + leap(yrs); Err bitreich.org 70
i+ return (((((day - 1) * 24) + hrs) * 60) + min) * 60 + sec; Err bitreich.org 70
i+} Err bitreich.org 70
i+ Err bitreich.org 70
i+function to_date(fmt, sec) Err bitreich.org 70
i+{ Err bitreich.org 70
i+ for (yrs = 1970; sec >= (s = 3600 * 24 * (365 + leap(yrs))); yrs++) Err bitreich.org 70
i+ sec -= s; Err bitreich.org 70
i+ for (mth = 1; sec >= (s = 3600 * 24 * days_per_month(mth, yrs)); mth++) Err bitreich.org 70
i+ sec -= s; Err bitreich.org 70
i+ for (day = 1; sec >= (s = 3600 * 24); day++) Err bitreich.org 70
i+ sec -= s; Err bitreich.org 70
i+ for (hrs = 0; sec >= 3600; hrs++) Err bitreich.org 70
i+ sec -= 3600; Err bitreich.org 70
i+ for (min = 0; sec >= 60; min++) Err bitreich.org 70
i+ sec -= 60; Err bitreich.org 70
i+ return sprintf(fmt, yrs, mth, day, hrs, min, sec); Err bitreich.org 70
i+} Err bitreich.org 70
i+ Err bitreich.org 70
i+function date_ical(str, off) { Err bitreich.org 70
i+ yrs = substr(str, 1, 4); Err bitreich.org 70
i+ mth = substr(str, 5, 2); Err bitreich.org 70
i+ day = substr(str, 7, 2); Err bitreich.org 70
i+ hrs = substr(str, 10, 2); Err bitreich.org 70
i+ min = substr(str, 12, 2); Err bitreich.org 70
i+ return to_sec(yrs, mth, day, hrs, min, 0) - off; Err bitreich.org 70
i+} Err bitreich.org 70
i+ Err bitreich.org 70
i+function date_iso8601(date, off) Err bitreich.org 70
i+{ Err bitreich.org 70
i+ yrs = substr(date, 1, 4); Err bitreich.org 70
i+ mth = substr(date, 6, 2); Err bitreich.org 70
i+ day = substr(date, 9, 2); Err bitreich.org 70
i+ hrs = substr(date, 12, 2); Err bitreich.org 70
i+ min = substr(date, 15, 2); Err bitreich.org 70
i+ return to_sec(yrs, mth, day, hrs, min, 0) - off; Err bitreich.org 70
i+} Err bitreich.org 70
i+ Err bitreich.org 70
i+function swap(array, a, b) Err bitreich.org 70
i+{ Err bitreich.org 70
i+ tmp = array[a]; Err bitreich.org 70
i+ array[a] = array[b]; Err bitreich.org 70
i+ array[b] = tmp; Err bitreich.org 70
i+} Err bitreich.org 70
i+ Err bitreich.org 70
i+function sort(array, beg, end) Err bitreich.org 70
i+{ Err bitreich.org 70
i+ if (beg >= end) # end recursion Err bitreich.org 70
i+ return; Err bitreich.org 70
i+ Err bitreich.org 70
i+ a = beg + 1; # #1 is the pivot Err bitreich.org 70
i+ b = end; Err bitreich.org 70
i+ while (a < b) { Err bitreich.org 70
i+ while (a < b && array[a] <= array[beg]) # beg: skip lesser Err bitreich.org 70
i+ a++; Err bitreich.org 70
i+ while (a < b && array[b] > array[beg]) # end: skip greater Err bitreich.org 70
i+ b--; Err bitreich.org 70
i+ swap(array, a, b); # found 2 misplaced Err bitreich.org 70
i+ } Err bitreich.org 70
i+ Err bitreich.org 70
i+ if (array[beg] > array[a]) # put the pivot back Err bitreich.org 70
i+ swap(array, beg, a); Err bitreich.org 70
i+ Err bitreich.org 70
i+ sort(array, beg, a - 1); # sort lower half Err bitreich.org 70
i+ sort(array, a, end); # sort higher half Err bitreich.org 70
i+} Err bitreich.org 70
i+ Err bitreich.org 70
i+function parse_ical(list, off) Err bitreich.org 70
i+{ Err bitreich.org 70
i+ FS = "[:;]"; Err bitreich.org 70
i+ Err bitreich.org 70
i+ while (getline) { Err bitreich.org 70
i+ gsub("\r", " "); gsub("\\\\[ntr]", " "); gsub("\\\\", ""); Err bitreich.org 70
i+ gsub("^ *", ""); gsub(" *$", ""); Err bitreich.org 70
i+ gsub(" *<[a-zA-Z0-9/]*>* *", ""); Err bitreich.org 70
i+ Err bitreich.org 70
i+ if (match($0, "^ ")) { Err bitreich.org 70
i+ event[type] = event[type] substr($0, 2, length($0) - 1); Err bitreich.org 70
i+ } else { Err bitreich.org 70
i+ type = $1; Err bitreich.org 70
i+ i = index($0, ":"); Err bitreich.org 70
i+ event[type] = substr($0, i + 1, length($0) - i); Err bitreich.org 70
i+ } Err bitreich.org 70
i+ Err bitreich.org 70
i+ if ($0 ~ /END:VEVENT/) Err bitreich.org 70
i+ list[++nb] = sprintf("%d\t%d\t%s\t%s\t%s\t%s", Err bitreich.org 70
i+ date_ical(event["DTSTART"], off), Err bitreich.org 70
i+ date_ical(event["DTEND"], off), Err bitreich.org 70
i+ event["CATEGORIES"], Err bitreich.org 70
i+ event["SUMMARY"], Err bitreich.org 70
i+ event["LOCATION"], Err bitreich.org 70
i+ event["DESCRIPTION"]); Err bitreich.org 70
i+ } Err bitreich.org 70
i+ sort(list, 1, nb); Err bitreich.org 70
i+ return nb; Err bitreich.org 70
i+} Err bitreich.org 70
i+ Err bitreich.org 70
i+function txt_one(beg, end, cat, sum, loc, des, off) { Err bitreich.org 70
i+ b = to_date("%04d/%02d/%02d %02d:%02d", beg + off); Err bitreich.org 70
i+ e = to_date("%04d/%02d/%02d %02d:%02d", end + off); Err bitreich.org 70
i+ b_mth = substr(b, 1, 7); Err bitreich.org 70
i+ b_day = substr(b, 9, 2); Err bitreich.org 70
i+ e_day = substr(e, 9, 2); Err bitreich.org 70
i+ b_hrs = substr(b, 12); Err bitreich.org 70
i+ e_hrs = substr(e, 12); Err bitreich.org 70
i+ Err bitreich.org 70
i+ printf("%s\n%2s %2s %s\n%2s %2s %s%s\n", Err bitreich.org 70
i+ (b_mth != l_mth) ? ("\n[" b_mth "]\n") : (""), Err bitreich.org 70
i+ (b_day != l_day) ? (b_day) : (""), b_hrs, sum, Err bitreich.org 70
i+ (b_day != e_day) ? (e_day) : (""), e_hrs, Err bitreich.org 70
i+ (cat) ? ("[" cat "] ") : (""), loc); Err bitreich.org 70
i+ Err bitreich.org 70
i+ while ((line = substr(des, 1, 66)) != "") { Err bitreich.org 70
i+ if (length(line) == 66) Err bitreich.org 70
i+ sub(" +[^ ]*$", "", line); Err bitreich.org 70
i+ des = substr(des, length(line) + 2); Err bitreich.org 70
i+ sub("^ *", "", line); Err bitreich.org 70
i+ sub("^ *", "", des); Err bitreich.org 70
i+ printf(" %s\n", line); Err bitreich.org 70
i+ } Err bitreich.org 70
i+ l_mth = b_mth; Err bitreich.org 70
i+ l_day = b_day; Err bitreich.org 70
i+} Err bitreich.org 70
i+ Err bitreich.org 70
i+function txt(off) Err bitreich.org 70
i+{ Err bitreich.org 70
i+ nb = parse_ical(list, off); Err bitreich.org 70
i+ for (i = 1; i <= nb; i++) { Err bitreich.org 70
i+ split(list[i], arr, "\t"); Err bitreich.org 70
i+ txt_one(arr[1], arr[2], arr[3], arr[4], arr[5], arr[6]); Err bitreich.org 70
i+ } Err bitreich.org 70
i+} Err bitreich.org 70
i+ Err bitreich.org 70
i+function tsv(off) Err bitreich.org 70
i+{ Err bitreich.org 70
i+ nb = parse_ical(list, off); Err bitreich.org 70
i+ for (i = 0; i < nb; i++) Err bitreich.org 70
i+ print(list[i]); Err bitreich.org 70
i+} Err bitreich.org 70
i+ Err bitreich.org 70
i+function usage() Err bitreich.org 70
i+{ Err bitreich.org 70
i+ print("usage: ics2txt txt file.ics..."); Err bitreich.org 70
i+ print(" ics2txt tsv file.ics..."); Err bitreich.org 70
i+} Err bitreich.org 70
i+ Err bitreich.org 70
i+BEGIN { Err bitreich.org 70
i+ "date +%z" | getline off; Err bitreich.org 70
i+ close("date +%z"); Err bitreich.org 70
i+ off = substr(off, 1, 3) * 3600; Err bitreich.org 70
i+ Err bitreich.org 70
i+ if (ARGV[1] == "txt") { Err bitreich.org 70
i+ ARGV[1] = ARGV[--ARGC]; Err bitreich.org 70
i+ txt(off); Err bitreich.org 70
i+ } else if (ARGV[1] == "tsv") { Err bitreich.org 70
i+ ARGV[1] = ARGV[--ARGC]; Err bitreich.org 70
i+ tsv(off); Err bitreich.org 70
i+ } else { Err bitreich.org 70
i+ usage(); Err bitreich.org 70
i+ } Err bitreich.org 70
i+} Err bitreich.org 70
1diff --git a/ics2txt.1 b/ics2txt.1 /scm/ics2txt/file/ics2txt.1.gph bitreich.org 70
i@@ -0,0 +1,81 @@ Err bitreich.org 70
i+.Dd $Mdocdate: February 23 2018$ Err bitreich.org 70
i+.Dt AGENDA 1 Err bitreich.org 70
i+.Os Err bitreich.org 70
i+. Err bitreich.org 70
i+. Err bitreich.org 70
i+.Sh NAME Err bitreich.org 70
i+. Err bitreich.org 70
i+.Nm ics2txt Err bitreich.org 70
i+.Nd convert ics file to plain text or TSV Err bitreich.org 70
i+. Err bitreich.org 70
i+. Err bitreich.org 70
i+.Sh SYNOPSIS Err bitreich.org 70
i+. Err bitreich.org 70
i+.Nm Ic txt Oo +- Oc Ns Ar offset Op Ar ics file... Err bitreich.org 70
i+.Nm Ic tsv Oo +- Oc Ns Ar offset Op Ar ics file... Err bitreich.org 70
i+. Err bitreich.org 70
i+. Err bitreich.org 70
i+.Sh DESCRIPTION Err bitreich.org 70
i+. Err bitreich.org 70
i+.Nm Err bitreich.org 70
i+displays iCalendar Err bitreich.org 70
i+.Pq ical, Pa .ics Err bitreich.org 70
i+.Ar file Err bitreich.org 70
i+or stdin if not specified in the format described by the command: Err bitreich.org 70
i+. Err bitreich.org 70
i+.Bl -tag -width indent Err bitreich.org 70
i+. Err bitreich.org 70
i+.It Ic txt Err bitreich.org 70
i+Display the ics2txt(s) Err bitreich.org 70
i+.Ar file Err bitreich.org 70
i+as plain text sorted by date. Err bitreich.org 70
i+. Err bitreich.org 70
i+.It Ic tsv Err bitreich.org 70
i+Display the ics2txt(s) Err bitreich.org 70
i+.Ar file Err bitreich.org 70
i+as a tab-separated values Err bitreich.org 70
i+.Pq tsv Err bitreich.org 70
i+one entry per line, with the following fields in order: Err bitreich.org 70
i+. Err bitreich.org 70
i+.Bl -tag -width xDESCRIPTIONx -compact Err bitreich.org 70
i+. Err bitreich.org 70
i+.It Dq Li DTSTART Err bitreich.org 70
i+begin date as an UNIX timestamp Err bitreich.org 70
i+. Err bitreich.org 70
i+.It Dq Li DTEND Err bitreich.org 70
i+end date as an UNIX timestamp Err bitreich.org 70
i+. Err bitreich.org 70
i+.It Dq Li CATEGORY Err bitreich.org 70
i+category Err bitreich.org 70
i+. Err bitreich.org 70
i+.It Dq Li SUMMARY Err bitreich.org 70
i+symmary Err bitreich.org 70
i+. Err bitreich.org 70
i+.It Dq Li LOCATION Err bitreich.org 70
i+location Err bitreich.org 70
i+. Err bitreich.org 70
i+.It Dq Li DESCRIPTION Err bitreich.org 70
i+description Err bitreich.org 70
i+. Err bitreich.org 70
i+.El Err bitreich.org 70
i+. Err bitreich.org 70
i+. Err bitreich.org 70
i+.Sh ENVIRONMENT Err bitreich.org 70
i+. Err bitreich.org 70
i+.Bl -tag -width 6n Err bitreich.org 70
i+. Err bitreich.org 70
i+.It Ev TZ Err bitreich.org 70
i+Timezone to use for printing the dates. Err bitreich.org 70
i+. Err bitreich.org 70
i+.El Err bitreich.org 70
i+. Err bitreich.org 70
i+. Err bitreich.org 70
i+.Sh SEE ALSO Err bitreich.org 70
i+. Err bitreich.org 70
i+.Xr calendar 1 , Err bitreich.org 70
i+.Xr date 1 , Err bitreich.org 70
i+. Err bitreich.org 70
i+. Err bitreich.org 70
i+.Sh AUTHORS Err bitreich.org 70
i+. Err bitreich.org 70
i+.An Josuah Demangeon Aq Mt mail@josuah.net Err bitreich.org 70
.
Response:
text/plain