X-Git-Url: https://git.plutz.net/?p=confetti;a=blobdiff_plain;f=cards%2Fnew_card.sh;h=69f89c662f87dfa6fb3a35cc5a3520d0ac446f10;hp=edc7bc920edc9c087cb7c7c1dc8d8c9e6e22d7d0;hb=07454834f9d0291be5e652eef5f62c889331d695;hpb=11e258b8e6cf832c96b20648aa8c9ca0288c597f diff --git a/cards/new_card.sh b/cards/new_card.sh index edc7bc9..69f89c6 100755 --- a/cards/new_card.sh +++ b/cards/new_card.sh @@ -1,4 +1,4 @@ -#!/bin/zsh +#!/bin/sh # Copyright 2014, 2019 Paul Hänsch # @@ -23,6 +23,31 @@ order="$(REF o)" uid="$(timeid)$(randomid)" # 32 Octets UID, starting with timestamp card="${uid}.vcf" +vcf_escape(){ + for each in "$@"; do + printf %s\\n "$each" \ + | sed -E ':X;$!{N;bX}; s;\r\n;\n;g; s;([;,\\]);\\\1;g; s;\n;\\n;g;' + done \ + | sed -E ':X;$!{N;bX}; s;\n;\;;g' +} + +IFS='|' read -r date fn ln bday bmonth byear tel tcell junk1 email junk2 note <<-EOF + $(POST seed |tr \\t \|) + EOF + +[ ${#byear} = 1 ] && byear="200$byear" +[ ${#byear} = 2 ] && byear="20$byear" +[ ${#bmonth} = 1 ] && bmonth="0$bmonth" +[ ${#bday} = 1 ] && bday="0$bday" + +mn="" +case $fn in + *\ *) + mn="${fn#* }" + fn="${fn%% *}" + ;; +esac + mkdir -p "${_DATA}/lock/vcard/" lockdir="${_DATA}/lock/vcard/${card}/" lockfile=${lockdir}/${SESSION_ID} @@ -31,17 +56,20 @@ if mkdir "$lockdir"; then cat >"$lockfile" <<-EOF BEGIN:VCARD VERSION:4.0 - N:;;;; - BDAY: - TEL: - EMAIL: + N:$(vcf_escape "$ln" "$fn" "$mn" "" "") + FN:$(vcf_escape "${fn}${mn:+ }${mn} ${ln}") + BDAY:$(parse_date "${byear}-${bmonth}-${bday}") + TEL:$(vcf_escape "$tel") + TEL;TYPE=CELL:$(vcf_escape "$tcell") + EMAIL:$(vcf_escape "$email") + X-ZACK-JOINDATE:$(parse_date "$date") ADR: - NOTE: + NOTE:$(vcf_escape "$note") UID:${uid} END:VCARD EOF - REDIRECT "/cards/?o=${order}&f=${filter}&e=${card}" + REDIRECT "${_BASE}/cards/?o=${order}&f=${filter}&e=${card}" else SET_COOKIE session message="EDITLOCK" - REDIRECT "/cards/?o=${order}&f=${filter}" + REDIRECT "${_BASE}/cards/?o=${order}&f=${filter}" fi