Regexp du soir, espoir

Tags: , , ,
No Comments »

Dans ma tentative de conquete du monde, je suis confronté à un problème auquel je n’avais pas immédiatement pensé. En effet, une foule d’outils partagent sans vergogne certains noms de fonction (usage(), help(), error()…) et de variables globales. Cet ennuyeux constat aboutit evidemment à des problèmes de linkage et faisait lamentablement foirer la compilation de mon BeastieBox cheri.

Une solution evidente était de renommer ces fonctions et leurs appels. mais…

imil@obana:~/src/beastiebox/beastiebin/sh$ grep 'error(' *.c|wc -l
      95

Flemme quoi.

Je me suis donc fendu de même pas 10 lignes de shell/perl qui serviront peut-être au voyageur perdu :

#!/bin/sh

usage()
{
        echo "usage: $0 <type> <function|variable> <prefix>"
        echo "type : <func|var>"
        exit 1
}

[ $# -lt 3 ] && usage

type=$1
item=$2
prefix=$3

preprx="^|\s+|=+\s*|\(.+?\)\s*|\(\s*"

for file in *.[ch]
do
        if [ "$type" != "var" ]; then
                perl -pi.bkp -e "s/(${preprx})${item}(\s*\()/\1${prefix}_${item}\2/g" $file
        else
                perl -pi.bkp -e "s/(${preprx}|[\+\-\*\/\>\< \%\^\|\!\&\~\[\.]+)${item}(\s*[^a-z0-9\-_\(])/\1${prefix}_${item}\2/gi" $file
        fi
done

L’outil s’utilise de cette façon :

$ commonfunc.sh func pouet prefixe

ou

$ commonfunc.sh var variable prefixe

Chaque appel et déclaration de la fonction pouet sera remplacé par prefixe_pouet. Même principe pour les variables. Un backup suffixé "bkp" sera créé pour chaque fichier modifié, permettant ainsi de réaliser un petit diff de verification.

WP Theme & Icons based on GlossyBlue by N.Design Studio
Banner from www.trynthlas.com
Entries RSS Comments RSS Log in
Performance Optimization WordPress Plugins by W3 EDGE