#!/usr/bin/perl -w # # Clean a patch file -- or directory of patch files -- of stealth whitespace. # WARNING: this can be a highly destructive operation. Use with caution. # use bytes; use File::Basename; # Default options $max_width = 79; # Clean up space-tab sequences, either by removing spaces or # replacing them with tabs. sub clean_space_tabs($) { no bytes; # Tab alignment depends on characters my($li) = @_; my($lo) = ''; my $pos = 0; my $nsp = 0; my($i, $c); for ($i = 0; $i < length($li); $i++) { $c = substr($li, $i, 1); if ($c eq "\t") { my $npos = ($pos+$nsp+8) & ~7; my $ntab = ($npos >> 3) - ($pos >> 3); $lo .= "\t" x $ntab; $pos = $npos; $nsp = 0; } elsif ($c eq "\n" || $c eq "\r") { $lo .= " " x $nsp; $pos += $nsp; $nsp = 0; $lo .= $c; $pos = 0; } elsif ($c eq " ") { $nsp++; } else { $lo .= " " x $nsp; $pos += $nsp; $nsp = 0; $lo .= $c; $pos++; } } $lo .= " " x $nsp; return $lo; } # Compute the visual width of a string sub strwidth($) { no bytes; # Tab alignment depends on characters my($li) = @_; my($c, $i); my $pos = 0; my $mlen = 0; for ($i = 0; $i < length($li); $i++) { $c = substr($li,$i,1); if ($c eq "\t") { $pos = ($pos+8) & ~7; } elsif ($c eq "\n") { $mlen = $pos if ($pos > $mlen); $pos = 0; } else { $pos++; } } $mlen = $pos if ($pos > $mlen); return $mlen; } $name = basename($0); @files = (); while (defined($a = shift(@ARGV))) { if ($a =~ /^-/) { if ($a eq '-width' || $a eq '-w') { $max_width = shift(@ARGV)+0; } else { print STDERR "Usage: $name [-width #] files...\n"; exit 1; } } else { push(@files, $a); } } foreach $f ( @files ) { print STDERR "$name: $f\n"; if (! -f $f) { print STDERR "$f: not a file\n"; next; } if (!open(FILE, '+<', $f)) { print STDERR "$name: Cannot open file: $f: $!\n"; next; } binmode FILE; # First, verify that it is not a binary file; consider any file # with a zero byte to be a binary file. Is there any better, or # additional, heuristic that should be applied? $is_binary = 0; while (read(FILE, $data, 65536) > 0) { if ($data =~ /\0/) { $is_binary = 1; last; } } if ($is_binary) { print STDERR "$name: $f: binary file\n"; next; } seek(FILE, 0, 0); $in_bytes = 0; $out_bytes = 0; $lineno = 0; @lines = (); $in_hunk = 0; $err = 0; while ( defined($line = ) ) { $lineno++; $in_bytes += length($line); if (!$in_hunk) { if ($line =~ /^\@\@\s+\-([0-9]+),([0-9]+)\s+\+([0-9]+),([0-9]+)\s\@\@/) { $minus_lines = $2; $plus_lines = $4; if ($minus_lines || $plus_lines) { $in_hunk = 1; @hunk_lines = ($line); } } else { push(@lines, $line); $out_bytes += length($line); } } else { # We're in a hunk if ($line =~ /^\+/) { $plus_lines--; $text = substr($line, 1); $text =~ s/[ \t\r]*$//; # Remove trailing spaces $text = clean_space_tabs($text); $l_width = strwidth($text); if ($max_width && $l_width > $max_width) { print STDERR "$f:$lineno: adds line exceeds $max_width ", "characters ($l_width)\n"; } push(@hunk_lines, '+'.$text); } elsif ($line =~ /^\-/) { $minus_lines--; push(@hunk_lines, $line); } elsif ($line =~ /^ /) { $plus_lines--; $minus_lines--; push(@hunk_lines, $line); } else { print STDERR "$name: $f: malformed patch\n"; $err = 1; last; } if ($plus_lines < 0 || $minus_lines < 0) { print STDERR "$name: $f: malformed patch\n"; $err = 1; last; } elsif ($plus_lines == 0 && $minus_lines == 0) { # End of a hunk. Process this hunk. my $i; my $l; my @h = (); my $adj = 0; my $done = 0; for ($i = scalar(@hunk_lines)-1; $i > 0; $i--) { $l = $hunk_lines[$i]; if (!$done && $l eq "+\n") { $adj++; # Skip this line } elsif ($l =~ /^[ +]/) { $done = 1; unshift(@h, $l); } else { unshift(@h, $l); } } $l = $hunk_lines[0]; # Hunk header undef @hunk_lines; # Free memory if ($adj) { die unless ($l =~ /^\@\@\s+\-([0-9]+),([0-9]+)\s+\+([0-9]+),([0-9]+)\s\@\@(.*)$/); my $mstart = $1; my $mlin = $2; my $pstart = $3; my $plin = $4; my $tail = $5; # doesn't include the final newline $l = sprintf("@@ -%d,%d +%d,%d @@%s\n", $mstart, $mlin, $pstart, $plin-$adj, $tail); } unshift(@h, $l); # Transfer to the output array foreach $l (@h) { $out_bytes += length($l); push(@lines, $l); } $in_hunk = 0; } } } if ($in_hunk) { print STDERR "$name: $f: malformed patch\n"; $err = 1; } if (!$err) { if ($in_bytes != $out_bytes) { # Only write to the file if changed seek(FILE, 0, 0); print FILE @lines; if ( !defined($where = tell(FILE)) || !truncate(FILE, $where) ) { die "$name: Failed to truncate modified file: $f: $!\n"; } } } close(FILE); } href='#n51'>51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137
/*
 * (C) Copyright 2008
 *  Ricado Ribalda-Universidad Autonoma de Madrid-ricardo.ribalda@uam.es
 *  This work has been supported by: QTechnology  http://qtec.com/
 *
 *  (C) Copyright 2008
 *  Georg Schardt <schardt@team-ctech.de>
 *
 *  This program is free software: you can redistribute it and/or modify
 *  it under the terms of the GNU General Public License as published by
 *  the Free Software Foundation, either version 2 of the License, or
 *  (at your option) any later version.
 *
 *  This program is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *  GNU General Public License for more details.
 *  You should have received a copy of the GNU General Public License
 *  along with this program.  If not, see <http://www.gnu.org/licenses/>.
*/

#ifndef __CONFIG_XLX_H
#define __CONFIG_XLX_H
/*
#define DEBUG
#define ET_DEBUG
*/

/*Mem Map*/
#define CONFIG_SYS_SDRAM_BASE		0x0
#define CONFIG_SYS_MONITOR_BASE	CONFIG_SYS_TEXT_BASE
#define CONFIG_SYS_MONITOR_LEN		(192 * 1024)
#define CONFIG_SYS_MALLOC_LEN		(CONFIG_ENV_SIZE + 128 * 1024)

/*Cmd*/
#include <config_cmd_default.h>
#define CONFIG_CMD_ASKENV
#define CONFIG_CMD_CACHE
#define CONFIG_CMD_DIAG
#define CONFIG_CMD_ELF
#define CONFIG_CMD_IRQ
#define CONFIG_CMD_REGINFO
#undef CONFIG_CMD_JFFS2
#undef CONFIG_CMD_MTDPARTS
#undef CONFIG_CMD_SPI
#undef CONFIG_CMD_I2C
#undef CONFIG_CMD_DTT
#undef CONFIG_CMD_NET