]> git.plutz.net Git - lobster/blobdiff - cards/new_card.sh
quick fix: put temp file into lock, should switch to session_lock functions
[lobster] / cards / new_card.sh
index 1e37b7001af3c84a86d25409cdc8e81bc3e272ed..a8afc7a4f88b986321f993367ffbb04d53e31a63 100755 (executable)
@@ -23,14 +23,6 @@ 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 bmonth byear tel tcell junk1 email junk2 note <<-EOF
        $(POST seed |tr \\t \|)
        EOF
@@ -39,6 +31,14 @@ IFS='|' read -r date fn ln bmonth byear tel tcell junk1 email junk2 note <<-EOF
 [ ${#byear} = 2 ] && byear="20$byear"
 [ ${#bmonth} = 1 ] && bmonth="0$bmonth"
 
+mn=""
+case $fn in
+  *\ *)
+    mn="${fn#* }"
+    fn="${fn%% *}"
+    ;;
+esac
+
 mkdir -p "${_DATA}/lock/vcard/"
 lockdir="${_DATA}/lock/vcard/${card}/"
 lockfile=${lockdir}/${SESSION_ID}
@@ -47,15 +47,15 @@ if mkdir "$lockdir"; then
   cat >"$lockfile" <<-EOF
        BEGIN:VCARD
        VERSION:4.0
-       N:$(vcf_escape "$ln");$(vcf_escape "$fn");;;
-       FN:$(vcf_escape "$fn $ln")
-       BDAY:$(vcf_escape "${byear}-${bmonth}-01")
-       TEL:$(vcf_escape "$tel")
-       TEL;TYPE=CELL:$(vcf_escape "$tcell")
-       EMAIL:$(vcf_escape "$email")
-       X-ZACK-JOINDATE:$(vcf_escape "$date")
+       N:$(pdi_escape "$ln" "$fn" "$mn" "" "")
+       FN:$(pdi_escape "${fn}${mn:+ }${mn} ${ln}")
+       BDAY:$(parse_date "${byear}-${bmonth}-01")
+       TEL:$(pdi_escape "$tel")
+       TEL;TYPE=CELL:$(pdi_escape "$tcell")
+       EMAIL:$(pdi_escape "$email")
+       X-ZACK-JOINDATE:$(parse_date "$date")
        ADR:
-       NOTE:$(vcf_escape "$note")
+       NOTE:$(pdi_escape "$note")
        UID:${uid}
        END:VCARD
        EOF