-echo "BEGIN:VCARD\r" >"$tempfile"
-echo "VERSION:4.0\r" >>"$tempfile"
-echo "N:${_POST[0N]};${_POST[1N]};${_POST[2N]};${_POST[3N]};${_POST[4N]}\r" >>"$tempfile"
-echo "UID:${_POST[UID]}\r" >>"$tempfile"
-for field in $VCF_FIELDS; do
- value="${_POST[$field]}"
- n=0
- while [ -n "$value" ]; do
- value="$(echo "$value" |sed -r ':a;N;$!ba;s:\n:\\\\n:g;s:\r:\\\\r:g')"
- echo "${field}:${value}\r"
- value="${_POST[$field$n]}"
- n=$(($n + 1))
- done
-done >>"$tempfile"
+[ "${_POST[hi_select]}" = "list" ] || _POST[hi_company]="${_POST[hi_other]}"
+[ -n "${_POST[hi_company]}${_POST[hi_number]}${_POST[hi_status]}" ] \
+&& _POST[X-HEALTH-INSURANCE]="$(vcf_escape "${_POST[hi_company]}" "${_POST[hi_number]}" "${_POST[hi_status]}")"
+
+sed -r 's;$;\r;' >"$tempfile" <<EOF
+BEGIN:VCARD
+VERSION:4.0
+N:$(vcf_escape "${_POST[0N]}" "${_POST[1N]}" "${_POST[2N]}" "${_POST[3N]}" "${_POST[4N]}")
+UID:${_POST[UID]}
+$(
+ for field in $VCF_FIELDS; do for key in $field $field{0..100}; do
+ [ -z "${_POST[$key]+x}" ] && break
+ [ -z "${_POST[$key]}" ] && continue
+ case "$key" in
+ (TEL[0-9]*)
+ printf '%s;TYPE=%s:%s\r\n' "${field}" "${_POST[phonetype${key#TEL}]}" "$(vcf_escape "${_POST[$key]}")"
+ ;;
+ (X-HEALTH-INSURANCE)
+ printf '%s:%s\r\n' "${field}" "${_POST[$key]}"
+ ;;
+ (*)
+ printf '%s:%s\r\n' "${field}" "$(vcf_escape "${_POST[$key]}")"
+ ;;
+ esac
+ done; done
+ [ "${_POST[action]}" = addfield ] && printf '%s:\r\n' "${_POST[newfield]}"
+)
+END:VCARD
+EOF