• [^] # Re: Langage de configuration en C

    Posté par . En réponse à la dépêche Sendmail X : vers une réécriture majeure. Évalué à 9.

    Le problème, c'est que la configuration de Sendmail ne se limite pas à des simples définitions d'options ou de valeurs. Il faut également définir des règles de réécritures, avec branchement conditionel, tests et tout le toutim s'ils reconduisent l'équivalent de la mécanique actuelle. Et là, le XML, ben bof, parce qu'il faudrait quelque chose du genre XSLT, et ce n'est pas plus lisible que les règles Sendmail à mon sens. A ce sujet, les règles Sendmail paraissent complexes quand on connait pas la syntaxe, de même que Perl, ou plein d'autres langages, mais ça n'est pas si compliqué (c'est de la regex simplifiée).
    Il faut donc ici un vrai langage de configuration, ils ont choisi le C, il faut voir ce que cela donne.
    Petite disgression historique: Sendmail est apparu à une éopque où le format des adresses mail était tout sauf standardisé. Sendmail était alors une sorte de middleware qui tentait au maximum d'interpréter des adresses d'un monde pour les délivrer à l'autre monde. Mais comme ça bougeait beaucoup, ils ont décidé de "sortir" cette phase de parsing du code en lui-même et de le placer directement dans le fichier de config, avec un mode d'écriture qui devait être le plus efficace, donc le plus bref possible. C'est ainsi que sont nées ces portions de fichier de config a priori incompréhensibles pour le profane, mais qu'il est en général tout à fait inutile de vouloir modifier, même s'il existe des "hooks" pour introduire ses propres règles.
    Du coup, une config Sendmail, c'est un petit fichier de macro m4 qui mesure moins de 10 lignes pour la majeure partie des besoins.