summaryrefslogtreecommitdiffstats
path: root/etc/autofs/include_ldap
diff options
context:
space:
mode:
Diffstat (limited to 'etc/autofs/include_ldap')
-rw-r--r--etc/autofs/include_ldap43
1 files changed, 30 insertions, 13 deletions
diff --git a/etc/autofs/include_ldap b/etc/autofs/include_ldap
index 58970c0..4cf70bf 100644
--- a/etc/autofs/include_ldap
+++ b/etc/autofs/include_ldap
@@ -15,24 +15,41 @@ $1 == "'$ENTRY_ATTRIBUTE':" {
key = $2
}
-$1 == "'$VALUE_ATTRIBUTE':" && key {
- printf "%s%s", key, OFS
- key = ""
- for (i=2; i<NF; i++) {
- printf "%s%s", $(i), OFS
+$1 == "'$VALUE_ATTRIBUTE':" {
+ for (i = 2; i <= NF; i++) {
+ value[i] = $(i)
}
- printf "%s%s", $NF, ORS
+ nvalues = NF
+ b64 = 0
}
# Double colon after attribute name means the value is in Base64.
-$1 == "'$VALUE_ATTRIBUTE'::" && key {
+$1 == "'$VALUE_ATTRIBUTE'::" {
+ for (i = 2; i <= NF; i++) {
+ value[i] = $(i)
+ }
+ nvalues = NF
+ b64 = 1
+}
+
+# Empty line - end of record.
+NF == 0 && key != "" && nvalues > 0 {
printf "%s%s", key, OFS
- key = ""
- for (i=2; i<NF; i++) {
- printf "%s%s", $(i), OFS
+ for (i = 2; i < nvalues; i++) {
+ printf "%s%s", value[i], OFS
+ }
+ if (b64 == 1) {
+ printf "%s", value[nvalues] | "b64decode -rp"
+ close("b64decode -rp")
+ printf "%s", ORS
+ } else {
+ printf "%s%s", value[nvalues], ORS
}
- printf "%s", $NF | "b64decode -rp"
- close("b64decode -rp")
- printf "%s", ORS
+}
+
+NF == 0 {
+ key = ""
+ nvalues = 0
+ delete value
}
'
OpenPOWER on IntegriCloud