Intégration de la branche ldapt
This commit is contained in:
commit
d756a6c6d2
353
lib/ulib/ldif
353
lib/ulib/ldif
|
@ -13,7 +13,7 @@ function def_match_attr() {
|
||||||
return attr \":\"
|
return attr \":\"
|
||||||
}
|
}
|
||||||
function norm_attr(attr) {
|
function norm_attr(attr) {
|
||||||
return tolower(attr)
|
return tolower(attr)
|
||||||
}
|
}
|
||||||
function match_attr(attr) {
|
function match_attr(attr) {
|
||||||
attr = tolower(attr)
|
attr = tolower(attr)
|
||||||
|
@ -88,7 +88,7 @@ BEGIN {
|
||||||
}
|
}
|
||||||
|
|
||||||
END {
|
END {
|
||||||
if (inline) print line
|
if (inline) print line
|
||||||
}
|
}
|
||||||
'
|
'
|
||||||
}
|
}
|
||||||
|
@ -170,23 +170,23 @@ END { dump_ldif() }
|
||||||
function tl_addattr() {
|
function tl_addattr() {
|
||||||
awk '
|
awk '
|
||||||
/^dn:/ {
|
/^dn:/ {
|
||||||
lastattr = ""
|
lastattr = ""
|
||||||
dn = $0
|
dn = $0
|
||||||
next
|
next
|
||||||
}
|
}
|
||||||
|
|
||||||
{
|
{
|
||||||
attr = $1
|
attr = $1
|
||||||
if (attr != "") {
|
if (attr != "") {
|
||||||
if (dn != "") {
|
if (dn != "") {
|
||||||
print dn
|
print dn
|
||||||
print "changetype: add"
|
print "changetype: add"
|
||||||
dn = ""
|
dn = ""
|
||||||
}
|
|
||||||
sub(/:+$/, "", attr)
|
|
||||||
}
|
}
|
||||||
print
|
sub(/:+$/, "", attr)
|
||||||
lastattr = attr
|
}
|
||||||
|
print
|
||||||
|
lastattr = attr
|
||||||
}
|
}
|
||||||
'
|
'
|
||||||
}
|
}
|
||||||
|
@ -195,33 +195,33 @@ function tl_modifyattr() {
|
||||||
local modtype="$1"
|
local modtype="$1"
|
||||||
awkrun modtype="$modtype" '
|
awkrun modtype="$modtype" '
|
||||||
/^dn:/ {
|
/^dn:/ {
|
||||||
lastattr = ""
|
lastattr = ""
|
||||||
dn = $0
|
dn = $0
|
||||||
next
|
next
|
||||||
}
|
}
|
||||||
|
|
||||||
{
|
{
|
||||||
attr = $1
|
attr = $1
|
||||||
if (attr == "") {
|
if (attr == "") {
|
||||||
if (lastattr != "") {
|
if (lastattr != "") {
|
||||||
print "-"
|
print "-"
|
||||||
}
|
|
||||||
} else {
|
|
||||||
if (dn != "") {
|
|
||||||
print dn
|
|
||||||
print "changetype: modify"
|
|
||||||
dn = ""
|
|
||||||
}
|
|
||||||
sub(/:+$/, "", attr)
|
|
||||||
if (lastattr != attr) {
|
|
||||||
if (lastattr != "") {
|
|
||||||
print "-"
|
|
||||||
}
|
|
||||||
print modtype ": " attr
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
print
|
} else {
|
||||||
lastattr = attr
|
if (dn != "") {
|
||||||
|
print dn
|
||||||
|
print "changetype: modify"
|
||||||
|
dn = ""
|
||||||
|
}
|
||||||
|
sub(/:+$/, "", attr)
|
||||||
|
if (lastattr != attr) {
|
||||||
|
if (lastattr != "") {
|
||||||
|
print "-"
|
||||||
|
}
|
||||||
|
print modtype ": " attr
|
||||||
|
}
|
||||||
|
}
|
||||||
|
print
|
||||||
|
lastattr = attr
|
||||||
}
|
}
|
||||||
'
|
'
|
||||||
}
|
}
|
||||||
|
@ -229,33 +229,33 @@ function tl_modifyattr() {
|
||||||
function tl_deleteattr() {
|
function tl_deleteattr() {
|
||||||
awk '
|
awk '
|
||||||
/^dn:/ {
|
/^dn:/ {
|
||||||
lastattr = ""
|
lastattr = ""
|
||||||
dn = $0
|
dn = $0
|
||||||
next
|
next
|
||||||
}
|
}
|
||||||
|
|
||||||
{
|
{
|
||||||
attr = $1
|
attr = $1
|
||||||
if (attr == "") {
|
if (attr == "") {
|
||||||
if (lastattr != "") {
|
if (lastattr != "") {
|
||||||
print "-"
|
print "-"
|
||||||
print
|
print
|
||||||
}
|
|
||||||
} else {
|
|
||||||
if (dn != "") {
|
|
||||||
print dn
|
|
||||||
print "changetype: modify"
|
|
||||||
dn = ""
|
|
||||||
}
|
|
||||||
sub(/:+$/, "", attr)
|
|
||||||
if (lastattr != attr) {
|
|
||||||
if (lastattr != "") {
|
|
||||||
print "-"
|
|
||||||
}
|
|
||||||
print "delete: " attr
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
lastattr = attr
|
} else {
|
||||||
|
if (dn != "") {
|
||||||
|
print dn
|
||||||
|
print "changetype: modify"
|
||||||
|
dn = ""
|
||||||
|
}
|
||||||
|
sub(/:+$/, "", attr)
|
||||||
|
if (lastattr != attr) {
|
||||||
|
if (lastattr != "") {
|
||||||
|
print "-"
|
||||||
|
}
|
||||||
|
print "delete: " attr
|
||||||
|
}
|
||||||
|
}
|
||||||
|
lastattr = attr
|
||||||
}
|
}
|
||||||
'
|
'
|
||||||
}
|
}
|
||||||
|
@ -263,11 +263,11 @@ function tl_deleteattr() {
|
||||||
function tl_deleteentry() {
|
function tl_deleteentry() {
|
||||||
awk '
|
awk '
|
||||||
/^dn:/ {
|
/^dn:/ {
|
||||||
dn = $0
|
dn = $0
|
||||||
print dn
|
print dn
|
||||||
print "changetype: delete"
|
print "changetype: delete"
|
||||||
print ""
|
print ""
|
||||||
next
|
next
|
||||||
}
|
}
|
||||||
'
|
'
|
||||||
}
|
}
|
||||||
|
@ -275,11 +275,11 @@ function tl_deleteentry() {
|
||||||
function tl_touchentry() {
|
function tl_touchentry() {
|
||||||
awk '
|
awk '
|
||||||
/^dn:/ {
|
/^dn:/ {
|
||||||
dn = $0
|
dn = $0
|
||||||
print dn
|
print dn
|
||||||
print "changetype: modify"
|
print "changetype: modify"
|
||||||
print ""
|
print ""
|
||||||
next
|
next
|
||||||
}
|
}
|
||||||
'
|
'
|
||||||
}
|
}
|
||||||
|
@ -288,7 +288,7 @@ function tl_keepattr() {
|
||||||
local match_attr="$1"
|
local match_attr="$1"
|
||||||
awk "$match_attr"'
|
awk "$match_attr"'
|
||||||
$0 == "" || match_attr($1) {
|
$0 == "" || match_attr($1) {
|
||||||
print
|
print
|
||||||
}
|
}
|
||||||
'
|
'
|
||||||
}
|
}
|
||||||
|
@ -447,11 +447,11 @@ add && match_attr($1) {
|
||||||
print_values()
|
print_values()
|
||||||
}
|
}
|
||||||
add && $0 == "" {
|
add && $0 == "" {
|
||||||
print_values()
|
print_values()
|
||||||
}
|
}
|
||||||
{ print }
|
{ print }
|
||||||
END {
|
END {
|
||||||
if (add) print_values()
|
if (add) print_values()
|
||||||
}
|
}
|
||||||
'
|
'
|
||||||
awk "$script"
|
awk "$script"
|
||||||
|
@ -496,7 +496,7 @@ add && $0 == "" {
|
||||||
}
|
}
|
||||||
{ print }
|
{ print }
|
||||||
END {
|
END {
|
||||||
if (add && !found) print_values()
|
if (add && !found) print_values()
|
||||||
}
|
}
|
||||||
'
|
'
|
||||||
awk "$script"
|
awk "$script"
|
||||||
|
@ -505,41 +505,6 @@ END {
|
||||||
function tl_ensureval() {
|
function tl_ensureval() {
|
||||||
local attr="$1"; shift
|
local attr="$1"; shift
|
||||||
local script="$(def_match_attr "$attr")
|
local script="$(def_match_attr "$attr")
|
||||||
function resetp() {
|
|
||||||
ensure = 0
|
|
||||||
found = 0
|
|
||||||
}
|
|
||||||
function get_attrvalue(line) {
|
|
||||||
sub(/^[^:]+::?[ ]+/, \"\", line)
|
|
||||||
return line
|
|
||||||
}
|
|
||||||
function add_to_found_values(value) {
|
|
||||||
found_values[found_count] = value
|
|
||||||
found_count++
|
|
||||||
}
|
|
||||||
function in_found_values(value, i) {
|
|
||||||
for (i = 0; i < found_count; i++) {
|
|
||||||
if (found_values[i] == value) {
|
|
||||||
return 1
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return 0
|
|
||||||
}
|
|
||||||
function print_ensure_values() {
|
|
||||||
for (i = 0; i < ensure_count; i++) {
|
|
||||||
print attr \" \" ensure_values[i]
|
|
||||||
}
|
|
||||||
resetp()
|
|
||||||
}
|
|
||||||
function print_missing_values( value) {
|
|
||||||
for (i = 0; i < ensure_count; i++) {
|
|
||||||
value = ensure_values[i]
|
|
||||||
if (!in_found_values(value)) {
|
|
||||||
print attr \" \" value
|
|
||||||
}
|
|
||||||
}
|
|
||||||
resetp()
|
|
||||||
}
|
|
||||||
BEGIN {
|
BEGIN {
|
||||||
resetp()
|
resetp()
|
||||||
attr = fix_attr($(quoted_awk "$attr"))
|
attr = fix_attr($(quoted_awk "$attr"))
|
||||||
|
@ -556,6 +521,55 @@ BEGIN {
|
||||||
found_values[0] = 0
|
found_values[0] = 0
|
||||||
delete found_values
|
delete found_values
|
||||||
}"'
|
}"'
|
||||||
|
function resetp() {
|
||||||
|
ensure = 0
|
||||||
|
found = 0
|
||||||
|
}
|
||||||
|
function get_attrvalue(line) {
|
||||||
|
sub(/^[^:]+::?[ ]+/, "", line)
|
||||||
|
return line
|
||||||
|
}
|
||||||
|
function add_to_found_values(value) {
|
||||||
|
found_values[found_count] = value
|
||||||
|
found_count++
|
||||||
|
}
|
||||||
|
function in_found_values(value, i, found_value) {
|
||||||
|
if (value ~ /^{}/) {
|
||||||
|
sub(/^{}/, "", value)
|
||||||
|
for (i = 0; i < found_count; i++) {
|
||||||
|
found_value = found_values[i]
|
||||||
|
sub(/^{[0-9]+}/, "", found_value)
|
||||||
|
if (found_value == value) {
|
||||||
|
return 1
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
for (i = 0; i < found_count; i++) {
|
||||||
|
if (found_values[i] == value) {
|
||||||
|
return 1
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
function print_ensure_values() {
|
||||||
|
for (i = 0; i < ensure_count; i++) {
|
||||||
|
value = ensure_values[i]
|
||||||
|
sub(/^{}/, "", value)
|
||||||
|
print attr " " value
|
||||||
|
}
|
||||||
|
resetp()
|
||||||
|
}
|
||||||
|
function print_missing_values( value) {
|
||||||
|
for (i = 0; i < ensure_count; i++) {
|
||||||
|
value = ensure_values[i]
|
||||||
|
if (!in_found_values(value)) {
|
||||||
|
sub(/^{}/, "", value)
|
||||||
|
print attr " " value
|
||||||
|
}
|
||||||
|
}
|
||||||
|
resetp()
|
||||||
|
}
|
||||||
/^dn:/ {
|
/^dn:/ {
|
||||||
ensure = 1
|
ensure = 1
|
||||||
}
|
}
|
||||||
|
@ -584,28 +598,28 @@ function tl_decode() {
|
||||||
local match_attr="$1"
|
local match_attr="$1"
|
||||||
awkrun -f "$match_attr"'
|
awkrun -f "$match_attr"'
|
||||||
function split_base64(text, result) {
|
function split_base64(text, result) {
|
||||||
result = ""
|
result = ""
|
||||||
while (text != "") {
|
while (text != "") {
|
||||||
if (result != "") result = result "\n"
|
if (result != "") result = result "\n"
|
||||||
result = result substr(text, 1, 64)
|
result = result substr(text, 1, 64)
|
||||||
text = substr(text, 65)
|
text = substr(text, 65)
|
||||||
}
|
}
|
||||||
return result
|
return result
|
||||||
}
|
}
|
||||||
|
|
||||||
/^[^:]+:: / && match_attr($1) {
|
/^[^:]+:: / && match_attr($1) {
|
||||||
name = $0; sub(/::.*$/, "", name)
|
name = $0; sub(/::.*$/, "", name)
|
||||||
value = $0; sub(/^[^:]+:: /, "", value)
|
value = $0; sub(/^[^:]+:: /, "", value)
|
||||||
|
|
||||||
decoded_value = b64decode(value)
|
decoded_value = b64decode(value)
|
||||||
#cmd = "echo '\''" split_base64(value) "'\'' | openssl base64 -d"
|
#cmd = "echo '\''" split_base64(value) "'\'' | openssl base64 -d"
|
||||||
#decoded_value = ""
|
#decoded_value = ""
|
||||||
#while ((cmd | getline line) > 0) {
|
#while ((cmd | getline line) > 0) {
|
||||||
# decoded_value = decoded_value line
|
# decoded_value = decoded_value line
|
||||||
#}
|
#}
|
||||||
#close(cmd)
|
#close(cmd)
|
||||||
print name ": " decoded_value
|
print name ": " decoded_value
|
||||||
next
|
next
|
||||||
}
|
}
|
||||||
{ print }
|
{ print }
|
||||||
'
|
'
|
||||||
|
@ -615,23 +629,23 @@ function tl_encode() {
|
||||||
local match_attr="$1"
|
local match_attr="$1"
|
||||||
awkrun "$match_attr"'
|
awkrun "$match_attr"'
|
||||||
function quote(text) {
|
function quote(text) {
|
||||||
# remplacer les quotes par le caractere echappement approprie
|
# remplacer les quotes par le caractere echappement approprie
|
||||||
gsub('"/'/, \"'\\\\''\""', text)
|
gsub('"/'/, \"'\\\\''\""', text)
|
||||||
return text
|
return text
|
||||||
}
|
}
|
||||||
|
|
||||||
/^[^:]+: / && match_attr($1) {
|
/^[^:]+: / && match_attr($1) {
|
||||||
name = $0; sub(/:.*$/, "", name)
|
name = $0; sub(/:.*$/, "", name)
|
||||||
value = $0; sub(/^[^:]+: /, "", value)
|
value = $0; sub(/^[^:]+: /, "", value)
|
||||||
|
|
||||||
cmd = "echo '\''" quote(value) "'\'' | openssl base64"
|
cmd = "echo '\''" quote(value) "'\'' | openssl base64"
|
||||||
coded_value = ""
|
coded_value = ""
|
||||||
while ((cmd | getline line) > 0) {
|
while ((cmd | getline line) > 0) {
|
||||||
coded_value = coded_value line
|
coded_value = coded_value line
|
||||||
}
|
}
|
||||||
close(cmd)
|
close(cmd)
|
||||||
print name ":: " coded_value
|
print name ":: " coded_value
|
||||||
next
|
next
|
||||||
}
|
}
|
||||||
{ print }
|
{ print }
|
||||||
'
|
'
|
||||||
|
@ -1019,22 +1033,25 @@ dec, decode [ATTRS...]
|
||||||
s'ils sont encodés en base64)
|
s'ils sont encodés en base64)
|
||||||
enc, encode [ATTRS...]
|
enc, encode [ATTRS...]
|
||||||
Encoder en base64 les valeurs des attributs mentionnés.
|
Encoder en base64 les valeurs des attributs mentionnés.
|
||||||
k, keepattr ATTRS...
|
xe, xempty, excludeempty
|
||||||
Garder uniquement les lignes des attributs mentionnés. Ensuite, supprimer
|
Supprimer les objets sans attributs, qui ont uniquement une ligne dn:
|
||||||
les objets ayant uniquement la ligne dn: (en d'autres termes, keepattr sans
|
k, keepattr [--no-xempty] ATTRS...
|
||||||
argument supprime *tout* le flux)
|
Garder uniquement les attributs mentionnés, puis supprimer les objets sans
|
||||||
kv, keepval ATTR PATTERNS...
|
attributs avec xempty, sauf si l'option --no-xempty est spécifiée (en
|
||||||
|
d'autres termes, keepattr sans argument supprime *tout* le flux)
|
||||||
|
kv, keepval [--no-xempty] ATTR PATTERNS...
|
||||||
Pour l'attribut attr, garder uniquement les lignes pour lesquelles les
|
Pour l'attribut attr, garder uniquement les lignes pour lesquelles les
|
||||||
valeurs correspondent aux expressions régulières. Les autres attributs ne
|
valeurs correspondent aux expressions régulières. Les autres attributs ne
|
||||||
sont pas modifiés. Ensuite, supprimer les objets ayant uniquement la ligne
|
sont pas modifiés. Ensuite, supprimer les objets sans attributs avec xempty,
|
||||||
dn:
|
sauf si l'option --no-xempty est spécifiée
|
||||||
x, excludeattr ATTRS...
|
x, excludeattr [--no-xempty] ATTRS...
|
||||||
Supprimer les lignes des attributs mentionnés. Ensuite, supprimer les objets
|
Supprimer les lignes des attributs mentionnés. Ensuite, supprimer les objets
|
||||||
ayant uniquement la ligne dn:
|
sans attributs avec xempty, sauf si l'option --no-xempty est spécifiée
|
||||||
xv, excludeval ATTR PATTERNS...
|
xv, excludeval [--no-xempty] ATTR PATTERNS...
|
||||||
Pour l'attribut attr, supprimer les lignes pour lesquelles les valeurs
|
Pour l'attribut attr, supprimer les lignes pour lesquelles les valeurs
|
||||||
correspondent aux expressions régulières. Les autres attributs ne sont pas
|
correspondent aux expressions régulières. Les autres attributs ne sont pas
|
||||||
modifiés. Ensuite, supprimer les objets ayant uniquement la ligne dn:
|
modifiés. Ensuite, supprimer les objets sans attributs avec xempty, sauf si
|
||||||
|
l'option --no-xempty est spécifiée.
|
||||||
kve, keepvalentry ATTR PATTERNS...
|
kve, keepvalentry ATTR PATTERNS...
|
||||||
Pour l'attribut attr, vérifier si *au moins une* valeur correspond à l'une
|
Pour l'attribut attr, vérifier si *au moins une* valeur correspond à l'une
|
||||||
des expressions régulières. Si c'est le cas, garder toute l'entrée, sinon
|
des expressions régulières. Si c'est le cas, garder toute l'entrée, sinon
|
||||||
|
@ -1056,6 +1073,12 @@ ev, ensureval ATTR VALUES...
|
||||||
déjà. Par exemple, pour s'assurer que l'attribut ATTR a les valeurs V0 et
|
déjà. Par exemple, pour s'assurer que l'attribut ATTR a les valeurs V0 et
|
||||||
V1, on ferait:
|
V1, on ferait:
|
||||||
ensureval ATTR V0 V1 // modaddval
|
ensureval ATTR V0 V1 // modaddval
|
||||||
|
Certains attributs sont ordonnés. Leurs valeurs sont étiquettées avec leur
|
||||||
|
index, e.g {2}value. Si l'on ne veut pas faire de correspondance exacte,
|
||||||
|
c'est à dire tester uniquement la présence d'une valeur indépendamment de
|
||||||
|
son index, il faut utiliser la syntaxe {}value, e.g:
|
||||||
|
ensureval ATTR {}value // modaddval
|
||||||
|
S'il faut ajouter les valeurs, elle sont mentionnées sans le préfixe {}
|
||||||
sed ARGS
|
sed ARGS
|
||||||
awk ARGS
|
awk ARGS
|
||||||
grep ARGS
|
grep ARGS
|
||||||
|
@ -1281,23 +1304,24 @@ function get_transform_cmd() {
|
||||||
;;
|
;;
|
||||||
dec|decode) cmdparts=(tl_decode "$(def_match_attr "$@")");;
|
dec|decode) cmdparts=(tl_decode "$(def_match_attr "$@")");;
|
||||||
enc|encode) cmdparts=(tl_encode "$(def_match_attr "$@")");;
|
enc|encode) cmdparts=(tl_encode "$(def_match_attr "$@")");;
|
||||||
|
xe|xempty|excludeempty) cmdparts=(ensure_complete_objects);;
|
||||||
k|keep|keepattr)
|
k|keep|keepattr)
|
||||||
|
[ "$1" == --no-xempty ] && shift || xempty=1
|
||||||
cmdparts=(tl_keepattr "$(def_match_attr dn "$@")")
|
cmdparts=(tl_keepattr "$(def_match_attr dn "$@")")
|
||||||
xempty=1
|
|
||||||
;;
|
;;
|
||||||
K|kv|keepval)
|
K|kv|keepval)
|
||||||
|
[ "$1" == --no-xempty ] && shift || xempty=1
|
||||||
local match_attr="$(def_match_attr "$1")"; shift
|
local match_attr="$(def_match_attr "$1")"; shift
|
||||||
cmdparts=(tl_keepval "$match_attr" "$(def_match_value "$@")")
|
cmdparts=(tl_keepval "$match_attr" "$(def_match_value "$@")")
|
||||||
xempty=1
|
|
||||||
;;
|
;;
|
||||||
x|exclude|excludeattr)
|
x|exclude|excludeattr)
|
||||||
|
[ "$1" == --no-xempty ] && shift || xempty=1
|
||||||
cmdparts=(tl_excludeattr "$(def_match_attr "$@")")
|
cmdparts=(tl_excludeattr "$(def_match_attr "$@")")
|
||||||
xempty=1
|
|
||||||
;;
|
;;
|
||||||
dv|delval|X|xv|excludeval)
|
dv|delval|X|xv|excludeval)
|
||||||
|
[ "$1" == --no-xempty ] && shift || xempty=1
|
||||||
local match_attr="$(def_match_attr "$1")"; shift
|
local match_attr="$(def_match_attr "$1")"; shift
|
||||||
cmdparts=(tl_excludeval "$match_attr" "$(def_match_value "$@")")
|
cmdparts=(tl_excludeval "$match_attr" "$(def_match_value "$@")")
|
||||||
xempty=1
|
|
||||||
;;
|
;;
|
||||||
xve|excludevalentry)
|
xve|excludevalentry)
|
||||||
local match_attr="$(def_match_attr "$1")"; shift
|
local match_attr="$(def_match_attr "$1")"; shift
|
||||||
|
@ -1312,21 +1336,10 @@ function get_transform_cmd() {
|
||||||
sv|setval|rv|replval)
|
sv|setval|rv|replval)
|
||||||
local match_attr="$(def_match_attr "$1")"; shift
|
local match_attr="$(def_match_attr "$1")"; shift
|
||||||
cmdparts=(tl_replval "$match_attr" "$@")
|
cmdparts=(tl_replval "$match_attr" "$@")
|
||||||
xempty=1
|
|
||||||
;;
|
;;
|
||||||
av|addval)
|
av|addval) cmdparts=(tl_addval "$@");;
|
||||||
cmdparts=(tl_addval "$@")
|
fv|defval) cmdparts=(tl_defval "$@");;
|
||||||
xempty=1
|
ev|ensureval) cmdparts=(tl_ensureval "$@");;
|
||||||
;;
|
|
||||||
fv|defval)
|
|
||||||
cmdparts=(tl_defval "$@")
|
|
||||||
xempty=1
|
|
||||||
;;
|
|
||||||
ev|ensureval)
|
|
||||||
cmdparts=(tl_ensureval "$@")
|
|
||||||
xempty=1
|
|
||||||
;;
|
|
||||||
xe|xempty|excludeempty) cmdparts=(ensure_complete_objects);;
|
|
||||||
sed|awk|grep|sort) cmdparts=(LANG=C "$cmd" "$@");;
|
sed|awk|grep|sort) cmdparts=(LANG=C "$cmd" "$@");;
|
||||||
csed|cawk|cgrep|csort) cmdparts=(LANG=C "${cmd#c}" "$@");;
|
csed|cawk|cgrep|csort) cmdparts=(LANG=C "${cmd#c}" "$@");;
|
||||||
lsed|lawk|lgrep|lsort) cmdparts=("${cmd#l}" "$@");;
|
lsed|lawk|lgrep|lsort) cmdparts=("${cmd#l}" "$@");;
|
||||||
|
|
Loading…
Reference in New Issue