Source code of /package/share/maintenance/global-syntax-check

Last modified: 2015-06-10 16:09:30

Download

#!/usr/bin/php
<?php

#
#  generic Whois - Maintenance Tools: Global Syntax Check
#
#  (c) 2012-2015 Daniel Marschall, ViaThinkSoft [www.viathinksoft.de]
#
#  Distribution, usage etc. pp. regulated by the current version of GPL.
#
#
#  Version 2015-05-07
#

error_reporting(E_ALL E_NOTICE E_STRICT E_DEPRECATED);

$silent = ($argc >= 2) && ($argv[1] == '--silent');

$files = array();

$rii = new RecursiveIteratorIterator(new RecursiveDirectoryIterator('/usr/share/gwhois'));
foreach (
$rii as $file) {
    
$filename $file->getPathname();
    if (
strpos($filename'/.') !== false) continue; # also hide ".dir" and ".file"
    
if (!file_exists($filename)) continue;
    
$files[] = $filename;
}

$files[] = '/usr/bin/gwhois';

$baddest 0;

foreach (
$files as $filename) {
    
$h fopen($filename'r');
    
$headline fgets($h);
    
fclose($h);

    
$scripttype 'n/a';

    if (
preg_match('#!(.+)\sU'$headline$m)) {
        
$interpreter $m[1];

        switch (
$interpreter) {
            case 
'/usr/bin/php':
                
$scripttype 'PHP';
                break;
            case 
'/usr/bin/perl':
                
$scripttype 'Perl';
                break;
        }
    } else if (
strpos($filename'.php') !== false) {
        
$scripttype 'PHP';
    } else if ((
strpos($filename'.pl') !== false) || (strpos($filename'.pm') !== false)) {
        
$scripttype 'Perl';
    }

    
$cmd '';
    switch (
$scripttype) {
        case 
'PHP':
            
$cmd 'php -l '.escapeshellarg($filename);
            break;
        case 
'Perl':
            
$cmd 'perl -Mstrict -Mdiagnostics -cw '.escapeshellarg($filename);
            break;
    }

    if (
$cmd) {
        
$out = array();
        
exec($cmd." 2>&1"$out$code);

        if (
$code $baddest$baddest $code;

        if (
$code != 0) {
            echo 
"($code$filename: ".trim(implode("\n    "$out))."\n";
        } else {
            if (!
$silent) echo "OK: $filename\n";
        }
    }
}

exit(
$baddest);