#!/usr/bin/php -q
<?
  # nsreconfig.php, version 0.7
  # (c) 2002 Jan ONDREJ (SAL) <ondrejj@salstar.sk>
  # Licensed under GNU GPL

  # You can use standard netsaint commands as:
  #   command[...]=...
  # Also you can use varaibles:
  #   var="$1;..."
  # Add to variable:
  #   var+string
  #   - this is replaced by:
  #     var="$var,string" or var="string"
  # Any variable can be user as command:
  #   var param1;param2;...
  # And repetition operator:
  #   @param1;param2;... cmd1,cmd2,...
  #   - this is replaced by:
  #     cmd1 param1;param2;...
  #     cmd2 param1;param2;...
  #     ...
  #   - paramters can be separated by " ", ",", ";"
  # Include file:
  #   <filename

  function chk($s) {
    global $cnf,$fhost,$cmdt,$cmds,$fx;
    if (ereg('^[<>](.*)$',"$s",$c)) {
      $cnfi=$cnf;
      dofile($c[1]);
      $cnf=$cnfi;
    } elseif (ereg('^[ ]*([a-zA-Z0-9_]+)=\"?([^"]*)\"?$',"$s",$c)) {
      $cmdt[$c[1]]="$c[2]";
      $cmds="$cmds|$c[1]";
    } elseif (ereg("^[ ]*([a-zA-Z0-9_]+)\+(.*)$","$s",$c)) {
      if ($cmdt[$c[1]]) {
        $cmdt[$c[1]]=$cmdt[$c[1]].",".$c[2];
      } else {
        $cmdt[$c[1]]=$c[2];
      }
    } elseif (ereg("^[ ]*($cmds)[ \t]*[( ](.*))?$","$s",$c)) {
      $mcmd=$cmdt[$c[1]];
      $margs=split(";","$c[2]");
      for ($i=1;$i<10;$i++)
        $mcmd=ereg_replace("\\$$i",$margs[$i-1],"$mcmd");
      reset($cmdt);
      while (list($key,$value)=each($cmdt))
        $mcmd=ereg_replace("\\$${key}([^a-zA-Z0-9_]|$)","$value\\1","$mcmd");
      #echo "$mcmd\n";
      fputs($fhost,"$mcmd\n");
    } elseif (ereg("^[ ]*@([-a-zA-Z0-9_;]*) (.*)$","$s",$c)) {
      $ca=split("[ ,;]","$c[2]");
      while (list($key,$value)=each($ca)) {
        chk("$value $c[1]");
      }
    } elseif (ereg("^[ ]*[a-zA-Z0-9_]*\[","$s")) {
      #print "$s\n";
      fputs($fhost,"$s\n");
    } elseif (ereg("^define [a-zA-Z0-9_]+[ \t]*\{","$s")) {
      #print "$s\n";
      fputs($fhost,"$s\n");
    } elseif ($s!="") {
      print "# Illegal command: '$s'\n";
    }
  }

  function dofile($f) {
    global $cnf,$cmdt,$cmds,$fhost;
    $cnf=fopen("$f","r");
    while (!feof($cnf)) {
      $s="";
      while (1) {
        $s="$s".ereg_replace("#.*$","",fgets($cnf,9999));
        if (feof($cnf)) break;
        if (((substr_count("$s",'"')%2)==0)
          and (substr_count("$s",'{')==substr_count("$s",'}')))
            break;
      }
      chk(trim($s));
    }
    fclose($cnf);
  }

  $fhost=fopen("$argv[2]","w");
  $cmdt["echo"]="$1";
  $cmds="echo";
  $cmdt["_"]="\n";
  dofile("$argv[1]");
  fclose($fhost);
?>
