From caa47fd12f93ebb6ae9edaecf886e2bd740dcd28 Mon Sep 17 00:00:00 2001 From: Jephte CLAIN Date: Mon, 18 Aug 2014 11:25:57 +0400 Subject: [PATCH] array_del supporte ignoreCase bug dans le filtrage des champs --- lib/ulib/awk | 13 ++++++++----- lib/ulib/base | 4 ++-- 2 files changed, 10 insertions(+), 7 deletions(-) diff --git a/lib/ulib/awk b/lib/ulib/awk index a40f9e4..9bf3489 100644 --- a/lib/ulib/awk +++ b/lib/ulib/awk @@ -96,10 +96,12 @@ array_deli(dest, i) Cette fonction assume que les indices du tableau commencent à 1 et n'ont pas de \"trous\". Si i==0, cette fonction est un NOP. -array_del(dest, value) +array_del(dest, value[, ignoreCase]) Supprimer *tous* les éléments du tableau dest dont la valeur est value. Les indexes des valeurs sont trouvées avec key_index(), puis les valeurs sont supprimées avec array_deli() + ignoreCase permet de spécifier que la recherche de la valeur se fait en + ignorant la casse. array_extend(dest, src) Ajouter les éléments de src dans dest, en commençant avec l'index @@ -407,8 +409,9 @@ function ogeth(field, nbfields, i) { if (field >= 1 && field <= nbfields) return field else return 0 } + field = tolower(field) for (i = 1; i <= nbfields; i++) { - if (tolower(ORIGHEADERS[i]) == tolower(field)) { + if (field == tolower(ORIGHEADERS[i])) { return i } } @@ -581,14 +584,14 @@ function build_skipfs(keepfields, skipfields, skipfs, addfs, keepfs, kee } split(skipfields, tmpfields, /,/) for (i in tmpfields) { - array_del(keepfs, tmpfields[i]) + array_del(keepfs, tmpfields[i], 1) } keepfs_count = length(keepfs) # puis construire la liste des champs à supprimer dans skipfs headers_count = length(HEADERS) for (i = 1; i <= headers_count; i++) { field = HEADERS[i] - if (!in_array(field, keepfs)) { + if (!in_array(field, keepfs, 1)) { fieldi = geth(field) if (i != 0) array_add(skipfs, fieldi) } @@ -597,7 +600,7 @@ function build_skipfs(keepfields, skipfields, skipfs, addfs, keepfs, kee # puis construire la liste des champs à ajouter dans addfs for (i = 1; i <= keepfs_count; i++) { field = keepfs[i] - if (!in_array(field, HEADERS)) { + if (!in_array(field, HEADERS, 1)) { array_add(addfs, field) } } diff --git a/lib/ulib/base b/lib/ulib/base index 3e303d2..842566e 100644 --- a/lib/ulib/base +++ b/lib/ulib/base @@ -2130,9 +2130,9 @@ function array_deli(dest, i, l) { } delete dest[l] } -function array_del(dest, value, i) { +function array_del(dest, value, ignoreCase, i) { do { - i = key_index(value, dest) + i = key_index(value, dest, ignoreCase) if (i != 0) array_deli(dest, i) } while (i != 0) }