X-Git-Url: https://git.plutz.net/?a=blobdiff_plain;f=pdiread.sh;h=cbbc4e57b232a7473296eedb53eb73aa67c88dd7;hb=e090b8bd26739537e895d60b931f82b64d8db6c4;hp=e01c71c42229790ae65b34f15fd8416a1bf38415;hpb=da89c059ba413f8dbc01409aa883dfc1b4be1f9e;p=lobster diff --git a/pdiread.sh b/pdiread.sh index e01c71c..cbbc4e5 100755 --- a/pdiread.sh +++ b/pdiread.sh @@ -38,11 +38,6 @@ pdi_load() { # === strip trailing CR (but keep CRs in property value) === # s;\r$;;; # already done in in previous filter - # unscramble aggregated fields - :disag - s;^([^:]+:)((.*[^\])?(\\\\)*),;\1\2\n\1;; - t disag; - # === Normalise various known vendor properties === s;^X-MS-CARDPICTURE(\;|:);PHOTO\1;; s;^X-GENDER(\;|:);GENDER\1;; @@ -75,6 +70,11 @@ pdi_load() { # === Insert empty attribute fields where no attributes are present === s;^([^;:]+):;\1\;:;; + + # unscramble aggregated fields + :disag + s;^([^:]+:)((.*[^\])?(\\\\)*),;\1\2\n\1;; + t disag; ' } @@ -91,6 +91,7 @@ pdi_count(){ pdi_attrib(){ local card=":$1" name="$2" cnt="${3:-1}" while [ $cnt -gt 0 ]; do + [ "${card#*${BR}${name};}" = "$card" ] && return 1 card="${card#*${BR}${name};}" cnt=$((cnt - 1)) done @@ -100,6 +101,7 @@ pdi_attrib(){ pdi_value(){ local card="${BR}$1" name="$2" cnt="${3:-1}" while [ $cnt -gt 0 ]; do + [ "${card#*${BR}${name};*:}" = "$card" ] && return 1 card="${card#*${BR}${name};*:}" cnt=$((cnt - 1)) done