First commit

This commit is contained in:
pezcurrel 2024-10-31 22:39:44 +01:00
parent 7006c31b2b
commit c7ae27716d

43
lib/getconf.php Normal file
View file

@ -0,0 +1,43 @@
<?php
function getConf(&$conf,&$confFP) {
$errors=[];
$nconf=[];
$buff=@file($confFP,FILE_IGNORE_NEW_LINES|FILE_SKIP_EMPTY_LINES);
if ($buff===false) dieYoung("Error: could not read configuration file «$confFP}».\n",1);
$i=0;
foreach ($buff as $line) {
$i++;
if ($line[0]!=='#') {
if (preg_match('#^([^=]+)=(.+)$#',$line,$matches)===1) {
$matches[1]=trim($matches[1]);
$matches[2]=trim($matches[2]);
if (array_key_exists($matches[1],$conf))
$nconf[$matches[1]]=$matches[2];
else
$errors[]="line {$i}: «{$matches[1]}» is an unknown key";
} else {
$errors[]="could not interpret line {$i}{$line}»)";
}
}
}
//print_r($nconf);
foreach ($conf as $key=>$val) {
if ($conf[$key]['required'] && !array_key_exists($key,$nconf))
$errors[]="«{$key}» is not defined";
if (array_key_exists($key,$nconf))
$conf[$key]=$nconf[$key];
else
$conf[$key]=$conf[$key]['default'];
}
$errorsCount=count($errors);
if ($errorsCount>0) {
fwrite(STDERR,"Sorry, there are errors in configuration file «{$confFP}»:\n");
for ($i=1; $i<=$errorsCount; $i++)
fwrite(STDERR," {$i}. {$errors[$i-1]}\n");
fwrite(STDERR,"Use «-h» or «--help» to display help.\n");
exit(1);
}
}
?>