|
28 | 28 |
|
29 | 29 | if ( count( $argv ) < 2 )
|
30 | 30 | print_usage_exit( $argv[0] );
|
31 |
| - |
32 | 31 | array_shift( $argv );
|
| 32 | + |
| 33 | +$dos2unix = false; |
| 34 | +foreach( $argv as & $arg ) |
| 35 | +{ |
| 36 | + if ( $arg == "--dos2unix" ) |
| 37 | + { |
| 38 | + $dos2unix = true; |
| 39 | + $arg = null; |
| 40 | + } |
| 41 | +} |
| 42 | +$argv = array_filter( $argv ); |
| 43 | + |
33 | 44 | foreach( $argv as $arg )
|
34 | 45 | {
|
35 | 46 | if ( file_exists( $arg ) )
|
|
46 | 57 | function print_usage_exit( $cmd )
|
47 | 58 | {
|
48 | 59 | fwrite( STDERR , " Wrong paramater count. Usage:\n" );
|
49 |
| - fwrite( STDERR , " {$cmd} path:\n" ); |
| 60 | + fwrite( STDERR , " {$cmd} [--dos2unix] path\n" ); |
50 | 61 | exit;
|
51 | 62 | }
|
52 | 63 |
|
@@ -83,17 +94,21 @@ function testFile( string $filename , bool $fragment = false )
|
83 | 94 | if ( str_starts_with( $contents , b"\xEF\xBB\xBF" ) )
|
84 | 95 | {
|
85 | 96 | echo "Wrong XML file:\n";
|
| 97 | + echo " Issue: XML file with BOM. Several tools may misbehave.\n"; |
86 | 98 | echo " Path: $filename\n";
|
87 |
| - echo " Error: XML file with BOM. Several tools may misbehave.\n"; |
| 99 | + echo " Hint: You can try autofix this with 'doc-base/scripts/broken.php --dos2unix langdir'.\n"; |
88 | 100 | echo "\n";
|
| 101 | + autofix_dos2unix( $filename ); |
89 | 102 | }
|
90 | 103 |
|
91 | 104 | if ( PHP_EOL == "\n" && str_contains( $contents , "\r") )
|
92 | 105 | {
|
93 | 106 | echo "Wrong XML file:\n";
|
| 107 | + echo " Issue: XML file contains \\r. Several tools may misbehave.\n"; |
94 | 108 | echo " Path: $filename\n";
|
95 |
| - echo " Error: XML file contains \\r. Several tools may misbehave.\n"; |
| 109 | + echo " Hint: You can try autofix this with 'doc-base/scripts/broken.php --dos2unix langdir'.\n"; |
96 | 110 | echo "\n";
|
| 111 | + autofix_dos2unix( $filename ); |
97 | 112 | }
|
98 | 113 |
|
99 | 114 | static $prefix = "", $suffix = "", $extra = "";
|
@@ -128,10 +143,10 @@ function testFile( string $filename , bool $fragment = false )
|
128 | 143 | $lin = $error->line;
|
129 | 144 | $col = $error->column;
|
130 | 145 | echo "Broken XML file:\n";
|
| 146 | + echo " Issue: $message\n"; |
131 | 147 | echo " Path: $filename [$lin,$col]\n";
|
132 |
| - echo " Error: $message\n"; |
133 | 148 | if ( $hintFragDir )
|
134 |
| - echo " Hint: Dir is marked with .xmlfragmentdir on doc-en? If not, check entity references.\n"; |
| 149 | + echo " Hint: See source comments about '.xmlfragmentdir', or check entity references outside enclosing tags.\n"; |
135 | 150 | echo "\n";
|
136 | 151 | return;
|
137 | 152 | }
|
@@ -169,3 +184,13 @@ function testDir( string $dir )
|
169 | 184 | foreach( $subdirs as $dir )
|
170 | 185 | testDir( $dir );
|
171 | 186 | }
|
| 187 | + |
| 188 | +function autofix_dos2unix( string $filename ) |
| 189 | +{ |
| 190 | + if ( $GLOBALS['dos2unix'] ) |
| 191 | + { |
| 192 | + $cmd = "dos2unix -r " . escapeshellarg( $filename ); |
| 193 | + system( $cmd ); |
| 194 | + echo "\n"; |
| 195 | + } |
| 196 | +} |
0 commit comments