initial commit of file from CVS for smeserver-phpsysinfo on Sat Sep 7 20:53:46 AEST 2024

This commit is contained in:
Trevor Batley
2024-09-07 20:53:46 +10:00
parent 8f9c36d1f5
commit 9552652292
693 changed files with 86806 additions and 2 deletions

View File

@@ -0,0 +1,32 @@
#!/bin/sh -x
if [ $# -ne 1 ]
then
echo "Usage : ./tools/MakeRelease <version>"
exit
fi
sed -i "s/PSI_VERSION = '.*'/PSI_VERSION = '$1'/g" includes/class.CommonFunctions.inc.php
ARCHIVE_NAME="phpsysinfo-$1.tar.gz"
#copy to temp dir
rm -rf /tmp/phpsysinfo
mkdir /tmp/phpsysinfo
cp -R . /tmp/phpsysinfo
cd /tmp/phpsysinfo
# remove the svn directories
find . -type d -name .svn -exec rm -fr {} \;
#or find . -iname ".svn" -print0 | xargs -0 rm -r
#remove some dirs
rm -rf tools sample
#remove phpsysinfo.ini
rm -rf phpsysinfo.ini .cvsignore .project
#create archive
cd ..
tar -czf $ARCHIVE_NAME phpsysinfo
md5sum $ARCHIVE_NAME

View File

@@ -0,0 +1,4 @@
check.sh - Script for checking *.php files and reformat them
MakeRelease.sh - Cleanup the code a bit for a release
phpsysinfo.ini - Configuration file for generating documentation with phpDocumentor
lint.bat - run php lint on every php file to check for syntax (windows util)

View File

@@ -0,0 +1,43 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<profiles version="1">
<profile kind="" name="phpSysInfo" version="1">
<setting id="com.aptana.ide.editors.codeassist.formatter.insert_new_line_before_if_statement" value="insert"/>
<setting id="com.aptana.ide.editors.codeassist.formatter.indent_statements_compare_to_block" value="true"/>
<setting id="com.aptana.ide.editors.codeassist.formatter.preserve_extra_carriage_returns2" value=""/>
<setting id="com.aptana.ide.editors.codeassist.formatter.indent_statements_compare_to_body" value="true"/>
<setting id="com.aptana.ide.editors.codeassist.formatter.insert_new_line_in_empty_type_declaration" value="a,span,i,b,em,strong,h1,h2,h3,h4,h5,h6,title,option"/>
<setting id="com.aptana.ide.editors.codeassist.formatter.insert_space_between_empty_parens_in_enum_constant" value=""/>
<setting id="com.aptana.ide.editors.codeassist.formatter.insert_new_line_before_finally_in_try_statement" value="insert"/>
<setting id="com.aptana.ide.editors.codeassist.formatter.keep_empty_array_initializer_on_one_line" value="true"/>
<setting id="com.aptana.ide.editors.codeassist.formatter.insert_space_between_empty_parens_in_annotation_type_member_declaration" value="false"/>
<setting id="com.aptana.ide.editors.codeassist.formatter.preserve_extra_carriage_returns" value="true"/>
<setting id="com.aptana.ide.editors.codeassist.formatter.insert_new_line_in_empty_enum_declaration" value="doctype,br,link,meta"/>
<setting id="com.aptana.ide.editors.codeassist.formatter.compact_else_if" value="false"/>
<setting id="com.aptana.ide.editors.codeassist.formatter.brace_position_for_method_declaration" value="end_of_line"/>
<setting id="com.aptana.ide.editors.codeassist.formatter.preserveWhitespaceinCDATA" value="true"/>
<setting id="com.aptana.ide.editors.codeassist.formatter.format_guardian_clause_on_one_line" value="false"/>
<setting id="com.aptana.ide.editors.codeassist.formatter.insert_new_line_before_catch_in_try_statement" value="insert"/>
<setting id="com.aptana.ide.editors.codeassist.formatter.tabulation.size" value="4"/>
<setting id="com.aptana.ide.editors.codeassist.formatter.insert_space_after_and_in_type_parameter" value=""/>
<setting id="com.aptana.ide.editors.codeassist.formatter.brace_position_for_switch" value="end_of_line"/>
<setting id="com.aptana.ide.editors.codeassist.formatter.keep_else_statement_on_same_line" value="false"/>
<setting id="com.aptana.ide.editors.codeassist.formatter.insert_new_line_before_while_in_do_statement" value="insert"/>
<setting id="com.aptana.ide.editors.codeassist.formatter.indent_switchstatements_compare_to_cases" value="true"/>
<setting id="com.aptana.ide.editors.codeassist.formatter.blank_lines_before_method" value="1"/>
<setting id="com.aptana.ide.editors.codeassist.formatter.insert_new_line_before_return_statement" value="insert"/>
<setting id="com.aptana.ide.editors.codeassist.formatter.tabulation.char" value=" "/>
<setting id="com.aptana.ide.editors.codeassist.formatter.indent_breaks_compare_to_cases" value="true"/>
<setting id="com.aptana.ide.editors.codeassist.formatter.brace_position_for_array_initializer" value="end_of_line"/>
<setting id="com.aptana.ide.editors.codeassist.formatter.brace_position_for_block" value="end_of_line"/>
<setting id="com.aptana.ide.editors.codeassist.formatter.blank_lines_before_imports" value="5"/>
<setting id="com.aptana.ide.editors.codeassist.formatter.insert_space_after_closing_brace_in_block" value="true"/>
<setting id="com.aptana.ide.editors.codeassist.formatter.brace_position_for_block_in_case" value="end_of_line"/>
<setting id="com.aptana.ide.editors.codeassist.formatter.keep_imple_if_on_one_line" value="false"/>
<setting id="com.aptana.ide.editors.codeassist.formatter.insert_new_line_before_else_in_if_statement" value="insert"/>
<setting id="com.aptana.ide.editors.codeassist.formatter.keep_then_statement_on_same_line" value="false"/>
<setting id="com.aptana.ide.editors.codeassist.formatter.indent_switchstatements_compare_to_switch" value="false"/>
<setting id="com.aptana.ide.editors.codeassist.formatter.number_of_blank_lines_at_beginning_of_method_body" value="0"/>
<setting id="com.aptana.ide.editors.codeassist.formatter.alignment_for_multiple_fields" value="1"/>
<setting id="com.aptana.ide.editors.codeassist.formatter.wraptags2" value=""/>
</profile>
</profiles>

View File

@@ -0,0 +1,90 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<profiles version="1">
<profile kind="" name="phpSysInfo" version="1">
<setting id="com.aptana.ide.editors.codeassist.formatter.insert_new_line_before_if_statement" value="insert"/>
<setting id="com.aptana.ide.editors.codeassist.formatter.number_of_empty_lines_to_preserve" value="2"/>
<setting id="com.aptana.ide.editors.codeassist.formatter.indent_body_declarations_compare_to_type_header" value="true"/>
<setting id="com.aptana.ide.editors.codeassist.formatter.indent_statements_compare_to_body" value="true"/>
<setting id="com.aptana.ide.editors.codeassist.formatter.insert_space_between_empty_parens_in_enum_constant" value=""/>
<setting id="com.aptana.ide.editors.codeassist.formatter.insert_new_line_in_empty_method_body" value="insert"/>
<setting id="com.aptana.ide.editors.codeassist.formatter.keep_empty_array_initializer_on_one_line" value="true"/>
<setting id="com.aptana.ide.editors.codeassist.formatter.brace_position_for_type_declaration" value="next_line"/>
<setting id="com.aptana.ide.editors.codeassist.formatter.preserve_extra_carriage_returns" value="true"/>
<setting id="com.aptana.ide.editors.codeassist.formatter.lineSplit" value="80"/>
<setting id="com.aptana.ide.editors.codeassist.formatter.put_empty_statement_on_new_line" value="true"/>
<setting id="com.aptana.ide.editors.codeassist.formatter.insert_space_before_opening_brace_in_switch" value="insert"/>
<setting id="com.aptana.ide.editors.codeassist.formatter.brace_position_for_method_declaration" value="next_line"/>
<setting id="FORMATTER_BLANK_LINES_BEFORE_CLASSDECL" value="0"/>
<setting id="FORMATTER_INSERT_SPACE_BEFORE_OBJECT_OPERATOR" value="not-insert"/>
<setting id="com.aptana.ide.editors.codeassist.formatter.preserveWhitespaceinCDATA" value="true"/>
<setting id="com.aptana.ide.editors.codeassist.formatter.insert_space_before_opening_brace_in_method_declaration" value="insert"/>
<setting id="com.aptana.ide.editors.codeassist.formatter.format_guardian_clause_on_one_line" value="false"/>
<setting id="com.aptana.ide.editors.codeassist.formatter.insert_new_line_before_catch_in_try_statement" value="not-insert"/>
<setting id="com.aptana.ide.editors.codeassist.formatter.blank_lines_before_field" value="0"/>
<setting id="FORMATTER_INSERT_SPACE_AFTER_CLOSING_PAREN_IN_TYPE_CAST" value="insert"/>
<setting id="FORMATTER_INDENT_INLINE_PHP_BLOCK" value="false"/>
<setting id="com.aptana.ide.editors.codeassist.formatter.insert_space_after_semicolon_in_for" value="insert"/>
<setting id="com.aptana.ide.editors.codeassist.formatter.insert_space_after_binary_operator" value="insert"/>
<setting id="com.aptana.ide.editors.codeassist.formatter.insert_space_before_colon_in_conditional" value="insert"/>
<setting id="com.aptana.ide.editors.codeassist.formatter.keep_else_statement_on_same_line" value="false"/>
<setting id="com.aptana.ide.editors.codeassist.formatter.insert_new_line_before_while_in_do_statement" value="not-insert"/>
<setting id="com.aptana.ide.editors.codeassist.formatter.indent_switchstatements_compare_to_cases" value="true"/>
<setting id="com.aptana.ide.editors.codeassist.formatter.insert_new_line_before_return_statement" value="insert"/>
<setting id="FORMATTER_BLANK_LINES_BEFORE_CONSTANT" value="0"/>
<setting id="com.aptana.ide.editors.codeassist.formatter.indent_breaks_compare_to_cases" value="true"/>
<setting id="com.aptana.ide.editors.codeassist.formatter.brace_position_for_array_initializer" value="end_of_line"/>
<setting id="com.aptana.ide.editors.codeassist.formatter.blank_lines_before_imports" value="5"/>
<setting id="com.aptana.ide.editors.codeassist.formatter.insert_space_after_closing_brace_in_block" value="insert"/>
<setting id="com.aptana.ide.editors.codeassist.formatter.insert_space_after_comma_in_multiple_field_declarations" value="insert"/>
<setting id="com.aptana.ide.editors.codeassist.formatter.insert_space_before_assignment_operator" value="insert"/>
<setting id="com.aptana.ide.editors.codeassist.formatter.insert_space_before_colon_in_for" value="insert"/>
<setting id="com.aptana.ide.editors.codeassist.formatter.insert_space_after_comma_in_superinterfaces" value="insert"/>
<setting id="FORMATTER_INSERT_SPACE_BEFORE_CONCAT" value="not-insert"/>
<setting id="com.aptana.ide.editors.codeassist.formatter.number_of_blank_lines_at_beginning_of_method_body" value="0"/>
<setting id="com.aptana.ide.editors.codeassist.formatter.alignment_for_multiple_fields" value="1"/>
<setting id="com.aptana.ide.editors.codeassist.formatter.insert_space_before_question_in_conditional" value="insert"/>
<setting id="com.aptana.ide.editors.codeassist.formatter.continuation_indentation" value="1"/>
<setting id="com.aptana.ide.editors.codeassist.formatter.indent_statements_compare_to_block" value="true"/>
<setting id="com.aptana.ide.editors.codeassist.formatter.preserve_extra_carriage_returns2" value=""/>
<setting id="com.aptana.ide.editors.codeassist.formatter.insert_space_before_binary_operator" value="insert"/>
<setting id="com.aptana.ide.editors.codeassist.formatter.insert_space_before_opening_paren_in_switch" value="insert"/>
<setting id="com.aptana.ide.editors.codeassist.formatter.insert_new_line_in_empty_type_declaration" value="a,span,i,b,em,strong,h1,h2,h3,h4,h5,h6,title,option"/>
<setting id="com.aptana.ide.editors.codeassist.formatter.insert_space_after_question_in_conditional" value="insert"/>
<setting id="com.aptana.ide.editors.codeassist.formatter.insert_new_line_before_finally_in_try_statement" value="not-insert"/>
<setting id="com.aptana.ide.editors.codeassist.formatter.insert_space_before_opening_brace_in_type_declaration" value="insert"/>
<setting id="com.aptana.ide.editors.codeassist.formatter.continuation_indentation_for_array_initializer" value="2"/>
<setting id="FORMATTER_INSERT_SPACE_AFTER_CONCAT" value="not-insert"/>
<setting id="com.aptana.ide.editors.codeassist.formatter.insert_space_before_opening_brace_in_block" value="insert"/>
<setting id="com.aptana.ide.editors.codeassist.formatter.insert_space_between_empty_parens_in_annotation_type_member_declaration" value="false"/>
<setting id="com.aptana.ide.editors.codeassist.formatter.insert_space_after_comma_in_for_increments" value="insert"/>
<setting id="com.aptana.ide.editors.codeassist.formatter.insert_new_line_in_empty_enum_declaration" value="doctype,br,link,meta"/>
<setting id="com.aptana.ide.editors.codeassist.formatter.compact_else_if" value="true"/>
<setting id="FORMATTER_INSERT_SPACE_AFTER_COMMA_IN_MULTIPLE_CONSTANT_DECLARATIONS" value="insert"/>
<setting id="com.aptana.ide.editors.codeassist.formatter.insert_space_after_comma_in_for_inits" value="insert"/>
<setting id="com.aptana.ide.editors.codeassist.formatter.insert_space_after_comma_in_method_invocation_arguments" value="insert"/>
<setting id="com.aptana.ide.editors.codeassist.formatter.insert_new_line_in_empty_block" value="insert"/>
<setting id="com.aptana.ide.editors.codeassist.formatter.tabulation.size" value="4"/>
<setting id="com.aptana.ide.editors.codeassist.formatter.insert_space_after_and_in_type_parameter" value=""/>
<setting id="com.aptana.ide.editors.codeassist.formatter.insert_space_after_colon_in_conditional" value="insert"/>
<setting id="FORMATTER_INSERT_SPACE_AFTER_OBJECT_OPERATOR" value="not-insert"/>
<setting id="FORMATTER_INSERT_NEW_LINE_IN_EMPTY_CLASS_BODY" value="insert"/>
<setting id="com.aptana.ide.editors.codeassist.formatter.insert_space_after_colon_in_for" value="insert"/>
<setting id="com.aptana.ide.editors.codeassist.formatter.brace_position_for_switch" value="end_of_line"/>
<setting id="com.aptana.ide.editors.codeassist.formatter.blank_lines_before_method" value="0"/>
<setting id="com.aptana.ide.editors.codeassist.formatter.insert_space_after_comma_in_array_initializer" value="insert"/>
<setting id="com.aptana.ide.editors.codeassist.formatter.tabulation.char" value=" "/>
<setting id="com.aptana.ide.editors.codeassist.formatter.brace_position_for_block" value="end_of_line"/>
<setting id="com.aptana.ide.editors.codeassist.formatter.insert_space_after_comma_in_method_declaration_throws" value="insert"/>
<setting id="com.aptana.ide.editors.codeassist.formatter.brace_position_for_block_in_case" value="end_of_line"/>
<setting id="com.aptana.ide.editors.codeassist.formatter.keep_imple_if_on_one_line" value="false"/>
<setting id="com.aptana.ide.editors.codeassist.formatter.insert_space_before_opening_paren_in_for" value="insert"/>
<setting id="com.aptana.ide.editors.codeassist.formatter.insert_space_before_opening_paren_in_while" value="insert"/>
<setting id="com.aptana.ide.editors.codeassist.formatter.insert_new_line_before_else_in_if_statement" value="not-insert"/>
<setting id="com.aptana.ide.editors.codeassist.formatter.keep_then_statement_on_same_line" value="false"/>
<setting id="com.aptana.ide.editors.codeassist.formatter.insert_space_after_comma_in_method_declaration_parameters" value="insert"/>
<setting id="com.aptana.ide.editors.codeassist.formatter.indent_switchstatements_compare_to_switch" value="false"/>
<setting id="com.aptana.ide.editors.codeassist.formatter.wraptags2" value=""/>
<setting id="com.aptana.ide.editors.codeassist.formatter.insert_space_after_assignment_operator" value="insert"/>
<setting id="com.aptana.ide.editors.codeassist.formatter.insert_space_before_opening_paren_in_if" value="insert"/>
</profile>
</profiles>

View File

@@ -0,0 +1,15 @@
#!/bin/bash
FILES=`find ../ \( \( -iwholename '*tool*' -o -iwholename '*lang*' \) -prune -o -iname '*.php' \) -a -type f`
for entry in ${FILES}; do
php -l ${entry}
if [ $? -ne 0 ]
then
exit;
fi
done
for entry in ${FILES}; do
echo "running phpcs --standard=PEAR on ${entry}"
phpcs --standard=PEAR ${entry}
done

View File

@@ -0,0 +1,208 @@
<?php
echo "<!DOCTYPE html>";
echo "<meta charset=\"UTF-8\">";
echo "<title> </title>";
echo "<body>";
if (PHP_OS != 'Linux') {
echo "Test works only on Linux";
echo "</body>";
die();
}
define('APP_ROOT', dirname(__FILE__).'/..');
require_once APP_ROOT.'/includes/interface/class.PSI_Interface_OS.inc.php';
require_once APP_ROOT.'/includes/os/class.OS.inc.php';
require_once APP_ROOT.'/includes/to/class.System.inc.php';
require_once APP_ROOT.'/includes/os/class.Linux.inc.php';
define('PSI_USE_VHOST', false);
define('PSI_DEBUG', false);
define('PSI_LOAD_BAR', false);
$log_file = "";
$lsb = true; //enable detection lsb_release -a
$lsbfile = true; //enable detection /etc/lsb-release
class Error
{
public static function singleton()
{
}
}
class Parser
{
public static function lspci()
{
return array();
}
public static function df()
{
return array();
}
}
class CommonFunctions
{
private static function _parse_log_file($string)
{
global $log_file;
if (file_exists($log_file)) {
$contents = @file_get_contents($log_file);
if ($contents && preg_match("/^\-\-\-\-\-\-\-\-\-\-".preg_quote($string, '/')."\-\-\-\-\-\-\-\-\-\-\n/m", $contents, $matches, PREG_OFFSET_CAPTURE)) {
$findIndex = $matches[0][1];
if (preg_match("/\n/m", $contents, $matches, PREG_OFFSET_CAPTURE, $findIndex)) {
$startIndex = $matches[0][1]+1;
if (preg_match("/^\-\-\-\-\-\-\-\-\-\-/m", $contents, $matches, PREG_OFFSET_CAPTURE, $startIndex)) {
$stopIndex = $matches[0][1];
return substr($contents, $startIndex, $stopIndex-$startIndex);
} else {
return substr($contents, $startIndex);
}
}
}
}
return false;
}
public static function rfts($strFileName, &$strRet, $intLines = 0, $intBytes = 4096, $booErrorRep = true)
{
global $lsb;
global $lsbfile;
if ($lsb || $lsbfile || ($strFileName != "/etc/lsb-release")) {
$strRet=self::_parse_log_file($strFileName);
if ($strRet && ($intLines == 1) && (strpos($strRet, "\n") !== false)) {
$strRet=trim(substr($strRet, 0, strpos($strRet, "\n")));
}
return $strRet;
} else {
return false;
}
}
public static function executeProgram($strProgramname, $strArgs, &$strBuffer, $booErrorRep = true)
{
global $lsb;
$strBuffer = '';
if ($strProgramname=='lsb_release') {
return $lsb && ($strBuffer = self::_parse_log_file('lsb_release -a'));
} else {
return $strBuffer = self::_parse_log_file($strProgramname);
}
}
public static function fileexists($strFileName)
{
global $log_file;
global $lsb;
global $lsbfile;
if (file_exists($log_file)
&& ($lsb || $lsbfile || ($strFileName != "/etc/lsb-release"))
&& ($contents = @file_get_contents($log_file))
&& preg_match("/^\-\-\-\-\-\-\-\-\-\-".preg_quote($strFileName, '/')."\-\-\-\-\-\-\-\-\-\-\n/m", $contents)) {
return true;
}
return false;
}
public static function gdc()
{
return array();
}
}
$system = new Linux();
if ($handle = opendir(APP_ROOT.'/sample/distrotest')) {
echo "<table cellpadding=\"2\" border=\"1\" CELLSPACING=\"0\"";
echo "<tr>";
echo "<td>Distrotest sample</td>";
echo "<td>Distro Name</td>";
echo "<td>Distro Icon</td>";
echo "<td>Distro Name (no lsb_release)</td>";
echo "<td>Distro Icon (no lsb_release)</td>";
echo "<td>Distro Name (no lsb_release and no /etc/lsb-release)</td>";
echo "<td>Distro Icon (no lsb_release and no /etc/lsb-release)</td>";
echo "</tr>";
while (false !== ($entry = readdir($handle))) {
if (($entry!=".")&&($entry!="..")) {
if ($shandle = opendir(APP_ROOT."/sample/distrotest/$entry")) {
while (false !== ($sentry = readdir($shandle))) {
if (($sentry!=".")&&($sentry!="..")) {
$log_file=APP_ROOT.'/sample/distrotest/'.$entry.'/'.$sentry;
echo "<tr>";
echo "<td>".$entry.'/'.$sentry."</td>";
$lsb = true;
$lsbfile = true;
$sys=$system->getSys();
$distro=$sys->getDistribution();
$icon=$sys->getDistributionIcon();
if ($icon == '') $icon="unknown.png";
if ($icon != $entry.'.png')
echo "<td style='color:red'>";
else
echo "<td>";
echo $distro."</td>";
if ($icon != $entry.'.png')
echo "<td style='color:red'>";
else
echo "<td>";
echo "<img src=\"../gfx/images/".$icon."\" height=\"16\" width=\"16\">";
echo $icon."</td>";
$sys->setDistribution("");
$sys->setDistributionIcon("");
$lsb = false;
$lsbfile = true;
$sys=$system->getSys();
$distro=$sys->getDistribution();
$icon=$sys->getDistributionIcon();
if ($icon == '') $icon="unknown.png";
if ($icon != $entry.'.png')
echo "<td style='color:red'>";
else
echo "<td>";
echo $distro."</td>";
if ($icon != $entry.'.png')
echo "<td style='color:red'>";
else
echo "<td>";
echo "<img src=\"../gfx/images/".$icon."\" height=\"16\" width=\"16\">";
echo $icon."</td>";
$sys->setDistribution("");
$sys->setDistributionIcon("");
$lsb = false;
$lsbfile = false;
$sys=$system->getSys();
$distro=$sys->getDistribution();
$icon=$sys->getDistributionIcon();
if ($icon == '') $icon="unknown.png";
if ($icon != $entry.'.png')
echo "<td style='color:red'>";
else
echo "<td>";
echo $distro."</td>";
if ($icon != $entry.'.png')
echo "<td style='color:red'>";
else
echo "<td>";
echo "<img src=\"../gfx/images/".$icon."\" height=\"16\" width=\"16\">";
echo $icon."</td>";
$sys->setDistribution("");
$sys->setDistributionIcon("");
echo "</tr>";
}
}
closedir($shandle);
}
}
}
echo "</table>";
closedir($handle);
}
echo "</body>";

View File

@@ -0,0 +1,44 @@
<?php
header("Content-Type: text/plain");
$filemaskarray=array("/etc/*-release",
"/etc/*_release",
"/etc/*-version",
"/etc/*_version",
"/etc/version",
"/etc/release",
"/etc/DISTRO_SPECS",
"/etc/eisfair-system",
"/usr/share/doc/tc/release.txt",
"/etc/synoinfo.conf",
"/etc/salix-update-notifier.conf",
"/etc/solydxk/info",
"/etc/vortexbox/vortexbox-version",
"/etc/GoboLinuxVersion",
"/etc/VERSION");
$fp = popen("lsb_release -a 2>/dev/null", "r");
if (is_resource($fp)) {
$contents="";
$start=true;
while (!feof($fp)) {
$contents=fgets($fp, 4096);
if ($start && (strlen($contents)>0)) {
echo "----------lsb_release -a----------\n";
$start=false;
}
echo $contents;
}
if ((strlen($contents)>0)&&(substr($contents, -1)!="\n")) {
echo "\n";
}
pclose($fp);
}
foreach ($filemaskarray as $filemask) {
foreach (glob($filemask) as $filename) {
echo "----------".$filename."----------\n";
echo $contents=file_get_contents($filename);
if ((strlen($contents)>0)&&(substr($contents, -1)!="\n")) {
echo "\n";
}
}
}

View File

@@ -0,0 +1,10 @@
@echo off
echo.
echo Starting SVN Stat + PHP Lint
echo ============================
svn stat |findstr /I /R "\.php$ \.phtml$" >lint.txt
for /F "tokens=2 delims= " %%i in (lint.txt) do q:\php53\php.exe -l %%i |findstr /I /B /V "No syntax errors"
del lint.txt
echo.
echo ============================
echo Finished SVN Stat + PHP Lint