ulib/ldif: support de l'opération modrdn

This commit is contained in:
Jephté Clain 2016-08-25 15:35:47 +04:00
parent b710461786
commit 8a334183bb
1 changed files with 26 additions and 1 deletions

View File

@ -272,6 +272,27 @@ function tl_deleteentry() {
' '
} }
function tl_modrdn() {
local newrdn newsup keep
splitfsep "$1" , newrdn newsup
case "$2" in
k|keep|keepold|keepoldrdn) keep=1;;
esac
awkrun newrdn:str="$newrdn" newsup:str="$newsup" keep:int="$keep" '
/^dn:/ {
dn = $0
print dn
print "changetype: modrdn"
print "newrdn: " newrdn
if (keep) print "deleteoldrdn: 0"
else print "deleteoldrdn: 1"
if (newsup != "") print "newsuperior: " newsup
print ""
next
}
'
}
function tl_touchentry() { function tl_touchentry() {
awk ' awk '
/^dn:/ { /^dn:/ {
@ -1253,6 +1274,9 @@ D, moddelattr
Supprimer l'attribut Supprimer l'attribut
delentry delentry
Supprimer l'objet Supprimer l'objet
rename, modrdn NEWRDN[,NEWSUPERIOR] [keep[oldrdn]]
Déplacer/renommer l'objet. L'ancienne valeur est supprimée, à moins que
l'argument keep ne soit spécifié.
touchentry touchentry
Forcer la réplication de l'objet en simulant une modification" Forcer la réplication de l'objet en simulant une modification"
@ -1371,8 +1395,9 @@ function get_transform_cmd() {
d|md|moddel|moddelval) cmdparts=(tl_modifyattr delete);; d|md|moddel|moddelval) cmdparts=(tl_modifyattr delete);;
D|moddelattr) cmdparts=(tl_deleteattr);; D|moddelattr) cmdparts=(tl_deleteattr);;
delentry|moddelentry) cmdparts=(tl_deleteentry);; delentry|moddelentry) cmdparts=(tl_deleteentry);;
rename|modrdn|modrename|modmodrdn) cmdparts=(tl_modrdn "$@");;
touch|touchentry|modtouchentry) cmdparts=(tl_touchentry);; touch|touchentry|modtouchentry) cmdparts=(tl_touchentry);;
litteral) cmdpars=("$@");; litteral) cmdparts=("$@");;
*) *)
eerror "$cmd: commande inconnue. elle sera ignorée" eerror "$cmd: commande inconnue. elle sera ignorée"
continue continue