Merge lp:~showard314/arduino/packaging-proposed into lp:~arduino-ubuntu-team/arduino/packaging

Proposed by Scott Howard
Status: Needs review
Proposed branch: lp:~showard314/arduino/packaging-proposed
Merge into: lp:~arduino-ubuntu-team/arduino/packaging
Diff against target: 19048 lines (+7845/-10205)
159 files modified
.pc/.version (+1/-0)
.pc/applied-patches (+2/-0)
.pc/convert_to_debian_oro.patch/src/processing/app/preproc/PdePreprocessor.java (+351/-0)
.pc/wrapper_for_deb.patch/arduino (+22/-0)
arduino (+5/-0)
debian/README.source (+4/-5)
debian/arduino.1 (+30/-0)
debian/arduino.desktop (+8/-0)
debian/arduino.png.uuencode (+0/-86)
debian/arduino.xpm (+691/-0)
debian/changelog (+5/-5)
debian/control (+18/-19)
debian/copyright (+4/-2)
debian/docs (+0/-3)
debian/install (+4/-8)
debian/javadoc (+1/-0)
debian/jlibs (+1/-0)
debian/links (+2/-0)
debian/manpages (+1/-0)
debian/menu (+6/-0)
debian/patches/about-into-themedir.patch (+0/-14)
debian/patches/adopt-avrdude-arduino-programmer-type.patch (+0/-102)
debian/patches/avrdude-paths.patch (+0/-27)
debian/patches/convert_to_debian_oro.patch (+16/-0)
debian/patches/desktop-icon.patch (+0/-14)
debian/patches/fix-locale.patch (+0/-12)
debian/patches/fix-openfiledialog.patch (+0/-66)
debian/patches/fix-savefiledialog.patch (+0/-89)
debian/patches/launcher.patch (+0/-7)
debian/patches/linux.Platform.diff (+0/-134)
debian/patches/logo.patch (+0/-696)
debian/patches/series (+2/-11)
debian/patches/update-regex-library.patch (+0/-806)
debian/patches/wrapper_for_deb.patch (+32/-0)
debian/rules (+43/-83)
debian/source/format (+1/-0)
debian/watch (+4/-2)
examples/Digital/toneKeyboard/pitches.h (+95/-0)
examples/Digital/toneMelody/pitches.h (+95/-0)
examples/EEPROM/examples/eeprom_clear/eeprom_clear.pde (+0/-21)
examples/EEPROM/examples/eeprom_read/eeprom_read.pde (+0/-38)
examples/EEPROM/examples/eeprom_write/eeprom_write.pde (+0/-38)
examples/EEPROM/keywords.txt (+0/-18)
examples/Ethernet/examples/ChatServer/ChatServer.pde (+0/-34)
examples/Ethernet/examples/WebClient/WebClient.pde (+0/-41)
examples/Ethernet/examples/WebServer/WebServer.pde (+0/-61)
examples/Ethernet/keywords.txt (+0/-30)
examples/Firmata/LICENSE.txt (+0/-458)
examples/Firmata/TODO.txt (+0/-14)
examples/Firmata/examples/AllInputsFirmata/AllInputsFirmata.pde (+0/-71)
examples/Firmata/examples/AnalogFirmata/AnalogFirmata.pde (+0/-83)
examples/Firmata/examples/AnalogFirmata/Makefile (+0/-263)
examples/Firmata/examples/EchoString/EchoString.pde (+0/-40)
examples/Firmata/examples/EchoString/Makefile (+0/-263)
examples/Firmata/examples/I2CFirmata/I2CFirmata.pde (+0/-217)
examples/Firmata/examples/OldStandardFirmata/LICENSE.txt (+0/-458)
examples/Firmata/examples/OldStandardFirmata/OldStandardFirmata.pde (+0/-228)
examples/Firmata/examples/ServoFirmata/Makefile (+0/-263)
examples/Firmata/examples/ServoFirmata/ServoFirmata.pde (+0/-39)
examples/Firmata/examples/SimpleAnalogFirmata/Makefile (+0/-263)
examples/Firmata/examples/SimpleAnalogFirmata/SimpleAnalogFirmata.pde (+0/-32)
examples/Firmata/examples/SimpleDigitalFirmata/Makefile (+0/-263)
examples/Firmata/examples/SimpleDigitalFirmata/SimpleDigitalFirmata.pde (+0/-57)
examples/Firmata/examples/StandardFirmata/LICENSE.txt (+0/-458)
examples/Firmata/examples/StandardFirmata/Makefile (+0/-273)
examples/Firmata/examples/StandardFirmata/StandardFirmata.pde (+0/-302)
examples/Firmata/keywords.txt (+0/-62)
examples/LiquidCrystal/examples/Autoscroll/Autoscroll.pde (+0/-70)
examples/LiquidCrystal/examples/Blink/Blink.pde (+0/-58)
examples/LiquidCrystal/examples/Cursor/Cursor.pde (+0/-58)
examples/LiquidCrystal/examples/Display/Display.pde (+0/-58)
examples/LiquidCrystal/examples/HelloWorld/HelloWorld.pde (+0/-56)
examples/LiquidCrystal/examples/Scroll/Scroll.pde (+0/-83)
examples/LiquidCrystal/examples/SerialDisplay/SerialDisplay.pde (+0/-62)
examples/LiquidCrystal/examples/TextDirection/TextDirection.pde (+0/-84)
examples/LiquidCrystal/examples/setCursor/setCursor.pde (+0/-68)
examples/LiquidCrystal/keywords.txt (+0/-37)
examples/Matrix/examples/hello_matrix/hello_matrix.pde (+0/-42)
examples/Matrix/examples/sprite_animation/sprite_animation.pde (+0/-48)
examples/Matrix/keywords.txt (+0/-22)
examples/Servo/examples/Knob/Knob.pde (+0/-22)
examples/Servo/examples/Sweep/Sweep.pde (+0/-29)
examples/Servo/keywords.txt (+0/-24)
examples/SoftwareSerial/keywords.txt (+0/-18)
examples/Sprite/keywords.txt (+0/-534)
examples/Stepper/examples/MotorKnob/MotorKnob.pde (+0/-40)
examples/Stepper/keywords.txt (+0/-28)
examples/Wire/examples/SFRRanger_reader/SFRRanger_reader.pde (+0/-84)
examples/Wire/examples/digital_potentiometer/digital_potentiometer.pde (+0/-34)
examples/Wire/examples/master_reader/master_reader.pde (+0/-29)
examples/Wire/examples/master_writer/master_writer.pde (+0/-28)
examples/Wire/examples/slave_receiver/slave_receiver.pde (+0/-35)
examples/Wire/examples/slave_sender/slave_sender.pde (+0/-29)
examples/Wire/keywords.txt (+0/-31)
lib/keywords.txt (+173/-0)
lib/preferences.txt (+227/-0)
lib/theme/theme.txt (+101/-0)
libraries/EEPROM/examples/eeprom_clear/eeprom_clear.pde (+21/-0)
libraries/EEPROM/examples/eeprom_read/eeprom_read.pde (+38/-0)
libraries/EEPROM/examples/eeprom_write/eeprom_write.pde (+38/-0)
libraries/Ethernet/examples/ChatServer/ChatServer.pde (+34/-0)
libraries/Ethernet/examples/WebClient/WebClient.pde (+41/-0)
libraries/Ethernet/examples/WebServer/WebServer.pde (+61/-0)
libraries/Firmata/LICENSE.txt (+0/-458)
libraries/Firmata/examples/AllInputsFirmata/AllInputsFirmata.pde (+71/-0)
libraries/Firmata/examples/AnalogFirmata/AnalogFirmata.pde (+83/-0)
libraries/Firmata/examples/AnalogFirmata/Makefile (+263/-0)
libraries/Firmata/examples/EchoString/EchoString.pde (+40/-0)
libraries/Firmata/examples/EchoString/Makefile (+263/-0)
libraries/Firmata/examples/I2CFirmata/I2CFirmata.pde (+217/-0)
libraries/Firmata/examples/OldStandardFirmata/OldStandardFirmata.pde (+228/-0)
libraries/Firmata/examples/ServoFirmata/Makefile (+263/-0)
libraries/Firmata/examples/ServoFirmata/ServoFirmata.pde (+39/-0)
libraries/Firmata/examples/SimpleAnalogFirmata/Makefile (+263/-0)
libraries/Firmata/examples/SimpleAnalogFirmata/SimpleAnalogFirmata.pde (+32/-0)
libraries/Firmata/examples/SimpleDigitalFirmata/Makefile (+263/-0)
libraries/Firmata/examples/SimpleDigitalFirmata/SimpleDigitalFirmata.pde (+57/-0)
libraries/Firmata/examples/StandardFirmata/Makefile (+273/-0)
libraries/Firmata/examples/StandardFirmata/StandardFirmata.pde (+302/-0)
libraries/LiquidCrystal/examples/Autoscroll/Autoscroll.pde (+70/-0)
libraries/LiquidCrystal/examples/Blink/Blink.pde (+58/-0)
libraries/LiquidCrystal/examples/Cursor/Cursor.pde (+58/-0)
libraries/LiquidCrystal/examples/Display/Display.pde (+58/-0)
libraries/LiquidCrystal/examples/HelloWorld/HelloWorld.pde (+56/-0)
libraries/LiquidCrystal/examples/Scroll/Scroll.pde (+83/-0)
libraries/LiquidCrystal/examples/SerialDisplay/SerialDisplay.pde (+62/-0)
libraries/LiquidCrystal/examples/TextDirection/TextDirection.pde (+84/-0)
libraries/LiquidCrystal/examples/setCursor/setCursor.pde (+68/-0)
libraries/Matrix/examples/hello_matrix/hello_matrix.pde (+42/-0)
libraries/Matrix/examples/sprite_animation/sprite_animation.pde (+48/-0)
libraries/Servo/examples/Knob/Knob.pde (+22/-0)
libraries/Servo/examples/Sweep/Sweep.pde (+29/-0)
libraries/Stepper/examples/MotorKnob/MotorKnob.pde (+40/-0)
libraries/Wire/examples/SFRRanger_reader/SFRRanger_reader.pde (+84/-0)
libraries/Wire/examples/digital_potentiometer/digital_potentiometer.pde (+34/-0)
libraries/Wire/examples/master_reader/master_reader.pde (+29/-0)
libraries/Wire/examples/master_writer/master_writer.pde (+28/-0)
libraries/Wire/examples/slave_receiver/slave_receiver.pde (+35/-0)
libraries/Wire/examples/slave_sender/slave_sender.pde (+29/-0)
license.txt (+0/-753)
preproc.pl (+186/-0)
src/keywords.txt (+0/-173)
src/preferences.txt (+0/-227)
src/processing/app/macosx/Platform.java (+186/-0)
src/processing/app/macosx/ThinkDifferent.java (+127/-0)
src/processing/app/preproc/PdePreprocessor.java (+1/-1)
src/processing/app/windows/Advapi32.java (+335/-0)
src/processing/app/windows/Options.java (+27/-0)
src/processing/app/windows/Platform.java (+268/-0)
src/processing/app/windows/Registry.java (+456/-0)
src/processing/app/windows/WINBASE.java (+43/-0)
src/processing/app/windows/WINERROR.java (+22/-0)
src/processing/app/windows/WINNT.java (+73/-0)
src/processing/app/windows/WINREG.java (+21/-0)
src/theme/theme.txt (+0/-101)
todo.txt (+0/-202)
tools/Mangler/make.sh (+11/-0)
tools/Mangler/src/Mangler.java (+94/-0)
tools/howto.txt (+143/-0)
To merge this branch: bzr merge lp:~showard314/arduino/packaging-proposed
Reviewer Review Type Date Requested Status
Arduino on Ubuntu Packagers Pending
Review via email: mp+23179@code.launchpad.net
To post a comment you must log in.
Revision history for this message
Scott Howard (showard314) wrote :
Revision history for this message
Scott Howard (showard314) wrote :

If you try to build this, make sure you change the debian/changelog to "lucid" instead of "unstable"

Revision history for this message
Scott Howard (showard314) wrote :

You also need a new orig.tar.gz, use ./debian/rules get-orig-source

For Debian compliance I had to clean out some other files and set some permissions.

Unmerged revisions

3. By Scott Howard

Initial release. (Closes: #577249)

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== added directory '.pc'
2=== added file '.pc/.version'
3--- .pc/.version 1970-01-01 00:00:00 +0000
4+++ .pc/.version 2010-04-11 15:27:18 +0000
5@@ -0,0 +1,1 @@
6+2
7
8=== added file '.pc/applied-patches'
9--- .pc/applied-patches 1970-01-01 00:00:00 +0000
10+++ .pc/applied-patches 2010-04-11 15:27:18 +0000
11@@ -0,0 +1,2 @@
12+wrapper_for_deb.patch
13+convert_to_debian_oro.patch
14
15=== added directory '.pc/convert_to_debian_oro.patch'
16=== added directory '.pc/convert_to_debian_oro.patch/src'
17=== added directory '.pc/convert_to_debian_oro.patch/src/processing'
18=== added directory '.pc/convert_to_debian_oro.patch/src/processing/app'
19=== added directory '.pc/convert_to_debian_oro.patch/src/processing/app/preproc'
20=== added file '.pc/convert_to_debian_oro.patch/src/processing/app/preproc/PdePreprocessor.java'
21--- .pc/convert_to_debian_oro.patch/src/processing/app/preproc/PdePreprocessor.java 1970-01-01 00:00:00 +0000
22+++ .pc/convert_to_debian_oro.patch/src/processing/app/preproc/PdePreprocessor.java 2010-04-11 15:27:18 +0000
23@@ -0,0 +1,351 @@
24+/* -*- mode: jde; c-basic-offset: 2; indent-tabs-mode: nil -*- */
25+
26+/*
27+ PdePreprocessor - wrapper for default ANTLR-generated parser
28+ Part of the Wiring project - http://wiring.org.co
29+
30+ Copyright (c) 2004-05 Hernando Barragan
31+
32+ Processing version Copyright (c) 2004-05 Ben Fry and Casey Reas
33+ Copyright (c) 2001-04 Massachusetts Institute of Technology
34+
35+ ANTLR-generated parser and several supporting classes written
36+ by Dan Mosedale via funding from the Interaction Institute IVREA.
37+
38+ This program is free software; you can redistribute it and/or modify
39+ it under the terms of the GNU General Public License as published by
40+ the Free Software Foundation; either version 2 of the License, or
41+ (at your option) any later version.
42+
43+ This program is distributed in the hope that it will be useful,
44+ but WITHOUT ANY WARRANTY; without even the implied warranty of
45+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
46+ GNU General Public License for more details.
47+
48+ You should have received a copy of the GNU General Public License
49+ along with this program; if not, write to the Free Software Foundation,
50+ Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
51+*/
52+
53+package processing.app.preproc;
54+
55+import processing.app.*;
56+import processing.core.*;
57+
58+import java.io.*;
59+import java.util.*;
60+
61+import com.oroinc.text.regex.*;
62+
63+
64+/**
65+ * Class that orchestrates preprocessing p5 syntax into straight Java.
66+ */
67+public class PdePreprocessor {
68+ // stores number of built user-defined function prototypes
69+ public int prototypeCount = 0;
70+
71+ // stores number of included library headers written
72+ // we always write one header: WProgram.h
73+ public int headerCount = 1;
74+
75+ List prototypes;
76+
77+
78+
79+
80+ String[] defaultImports;
81+
82+ // these ones have the .* at the end, since a class name might be at the end
83+ // instead of .* which would make trouble other classes using this can lop
84+ // off the . and anything after it to produce a package name consistently.
85+ //public String extraImports[];
86+ ArrayList<String> programImports;
87+
88+ // imports just from the code folder, treated differently
89+ // than the others, since the imports are auto-generated.
90+ ArrayList<String> codeFolderImports;
91+
92+ String indent;
93+
94+ PrintStream stream;
95+ String program;
96+ String buildPath;
97+ String name;
98+
99+
100+ /**
101+ * Setup a new preprocessor.
102+ */
103+ public PdePreprocessor() { }
104+
105+ public int writePrefix(String program, String buildPath,
106+ String name, String codeFolderPackages[])
107+ throws FileNotFoundException {
108+ this.buildPath = buildPath;
109+ this.name = name;
110+
111+ int tabSize = Preferences.getInteger("editor.tabs.size");
112+ char[] indentChars = new char[tabSize];
113+ Arrays.fill(indentChars, ' ');
114+ indent = new String(indentChars);
115+
116+ // if the program ends with no CR or LF an OutOfMemoryError will happen.
117+ // not gonna track down the bug now, so here's a hack for it:
118+ // http://dev.processing.org/bugs/show_bug.cgi?id=5
119+ program += "\n";
120+
121+ // if the program ends with an unterminated multi-line comment,
122+ // an OutOfMemoryError or NullPointerException will happen.
123+ // again, not gonna bother tracking this down, but here's a hack.
124+ // http://dev.processing.org/bugs/show_bug.cgi?id=16
125+ Sketch.scrubComments(program);
126+ // this returns the scrubbed version, but more important for this
127+ // function, it'll check to see if there are errors with the comments.
128+
129+ if (Preferences.getBoolean("preproc.substitute_unicode")) {
130+ // check for non-ascii chars (these will be/must be in unicode format)
131+ char p[] = program.toCharArray();
132+ int unicodeCount = 0;
133+ for (int i = 0; i < p.length; i++) {
134+ if (p[i] > 127) unicodeCount++;
135+ }
136+ // if non-ascii chars are in there, convert to unicode escapes
137+ if (unicodeCount != 0) {
138+ // add unicodeCount * 5.. replacing each unicode char
139+ // with six digit uXXXX sequence (xxxx is in hex)
140+ // (except for nbsp chars which will be a replaced with a space)
141+ int index = 0;
142+ char p2[] = new char[p.length + unicodeCount*5];
143+ for (int i = 0; i < p.length; i++) {
144+ if (p[i] < 128) {
145+ p2[index++] = p[i];
146+
147+ } else if (p[i] == 160) { // unicode for non-breaking space
148+ p2[index++] = ' ';
149+
150+ } else {
151+ int c = p[i];
152+ p2[index++] = '\\';
153+ p2[index++] = 'u';
154+ char str[] = Integer.toHexString(c).toCharArray();
155+ // add leading zeros, so that the length is 4
156+ //for (int i = 0; i < 4 - str.length; i++) p2[index++] = '0';
157+ for (int m = 0; m < 4 - str.length; m++) p2[index++] = '0';
158+ System.arraycopy(str, 0, p2, index, str.length);
159+ index += str.length;
160+ }
161+ }
162+ program = new String(p2, 0, index);
163+ }
164+ }
165+
166+ // These may change in-between (if the prefs panel adds this option)
167+ // so grab them here on construction.
168+ String prefsLine = Preferences.get("preproc.imports");
169+ defaultImports = PApplet.splitTokens(prefsLine, ", ");
170+
171+ //String importRegexp = "(?:^|\\s|;)(import\\s+)(\\S+)(\\s*;)";
172+ String importRegexp = "^\\s*#include\\s+[<\"](\\S+)[\">]";
173+ programImports = new ArrayList<String>();
174+
175+ String[][] pieces = PApplet.matchAll(program, importRegexp);
176+
177+ if (pieces != null)
178+ for (int i = 0; i < pieces.length; i++)
179+ programImports.add(pieces[i][1]); // the package name
180+
181+ codeFolderImports = new ArrayList<String>();
182+// if (codeFolderPackages != null) {
183+// for (String item : codeFolderPackages) {
184+// codeFolderImports.add(item + ".*");
185+// }
186+// }
187+
188+ prototypes = new ArrayList();
189+
190+ try {
191+ prototypes = prototypes(program);
192+ } catch (MalformedPatternException e) {
193+ System.out.println("Internal error while pre-processing; " +
194+ "not generating function prototypes.\n\n" + e);
195+ }
196+
197+ // store # of prototypes so that line number reporting can be adjusted
198+ prototypeCount = prototypes.size();
199+
200+ // do this after the program gets re-combobulated
201+ this.program = program;
202+
203+ // output the code
204+ File streamFile = new File(buildPath, name + ".cpp");
205+ stream = new PrintStream(new FileOutputStream(streamFile));
206+
207+ return headerCount + prototypeCount;
208+ }
209+
210+ /**
211+ * preprocesses a pde file and write out a java file
212+ * @return the classname of the exported Java
213+ */
214+ //public String write(String program, String buildPath, String name,
215+ // String extraImports[]) throws java.lang.Exception {
216+ public String write() throws java.lang.Exception {
217+ writeProgram(stream, program, prototypes);
218+ writeFooter(stream);
219+ stream.close();
220+
221+ return name;
222+ }
223+
224+ // Write the pde program to the cpp file
225+ protected void writeProgram(PrintStream out, String program, List prototypes) {
226+ int prototypeInsertionPoint = firstStatement(program);
227+
228+ out.print(program.substring(0, prototypeInsertionPoint));
229+ out.print("#include \"WProgram.h\"\n");
230+
231+ // print user defined prototypes
232+ for (int i = 0; i < prototypes.size(); i++) {
233+ out.print(prototypes.get(i) + "\n");
234+ }
235+
236+ out.print(program.substring(prototypeInsertionPoint));
237+ }
238+
239+
240+ /**
241+ * Write any necessary closing text.
242+ *
243+ * @param out PrintStream to write it to.
244+ */
245+ protected void writeFooter(PrintStream out) throws java.lang.Exception {}
246+
247+
248+ public ArrayList<String> getExtraImports() {
249+ return programImports;
250+ }
251+
252+
253+
254+
255+
256+ /**
257+ * Returns the index of the first character that's not whitespace, a comment
258+ * or a pre-processor directive.
259+ */
260+ public int firstStatement(String in) {
261+ PatternMatcherInput input = new PatternMatcherInput(in);
262+ PatternCompiler compiler = new Perl5Compiler();
263+ PatternMatcher matcher = new Perl5Matcher();
264+ Pattern pattern = null;
265+
266+ try {
267+ pattern = compiler.compile(
268+ // XXX: doesn't properly handle special single-quoted characters
269+ // whitespace
270+ "\\s+" + "|" +
271+ // multi-line comment
272+ "(/\\*[^*]*(?:\\*(?!/)[^*]*)*\\*/)" + "|" +
273+ // single-line comment
274+ "(//.*?$)" + "|" +
275+ // pre-processor directive
276+ "(#(?:\\\\\\n|.)*)",
277+ Perl5Compiler.MULTILINE_MASK);
278+ } catch (MalformedPatternException e) {
279+ throw new RuntimeException("Internal error in firstStatement()", e);
280+ }
281+
282+ int i = 0;
283+ while (matcher.matchesPrefix(input, pattern)) {
284+ i = matcher.getMatch().endOffset(0);
285+ input.setCurrentOffset(i);
286+ }
287+
288+ return i;
289+ }
290+
291+ /**
292+ * Strips comments, pre-processor directives, single- and double-quoted
293+ * strings from a string.
294+ * @param in the String to strip
295+ * @return the stripped String
296+ */
297+ public String strip(String in) throws MalformedPatternException {
298+ PatternCompiler compiler = new Perl5Compiler();
299+ PatternMatcher matcher = new Perl5Matcher();
300+ Pattern pattern = compiler.compile(
301+ // XXX: doesn't properly handle special single-quoted characters
302+ // single-quoted character
303+ "('.')" + "|" +
304+ // double-quoted string
305+ "(\"(?:[^\"\\\\]|\\\\.)*\")" + "|" +
306+ // multi-line comment
307+ "(/\\*[^*]*(?:\\*(?!/)[^*]*)*\\*/)" + "|" +
308+ // single-line comment
309+ "(//.*?$)" + "|" +
310+ // pre-processor directive
311+ "(^\\s*#.*?$)",
312+ Perl5Compiler.MULTILINE_MASK);
313+
314+ while (matcher.contains(in, pattern)) {
315+ MatchResult result = matcher.getMatch();
316+ // XXX: should preserve newlines in the result so that line numbers of
317+ // the stripped string correspond to those in the original source.
318+ in = in.substring(0, result.beginOffset(0)) + " " + in.substring(result.endOffset(0));
319+ }
320+
321+ return in;
322+ }
323+
324+ /**
325+ * Removes the contents of all top-level curly brace pairs {}.
326+ * @param in the String to collapse
327+ * @return the collapsed String
328+ */
329+ private String collapseBraces(String in) {
330+ StringBuffer buffer = new StringBuffer();
331+ int nesting = 0;
332+ int start = 0;
333+
334+ // XXX: need to keep newlines inside braces so we can determine the line
335+ // number of a prototype
336+ for (int i = 0; i < in.length(); i++) {
337+ if (in.charAt(i) == '{') {
338+ if (nesting == 0) {
339+ buffer.append(in.substring(start, i + 1)); // include the '{'
340+ }
341+ nesting++;
342+ }
343+ if (in.charAt(i) == '}') {
344+ nesting--;
345+ if (nesting == 0) {
346+ start = i; // include the '}'
347+ }
348+ }
349+ }
350+
351+ buffer.append(in.substring(start));
352+
353+ return buffer.toString();
354+ }
355+
356+ public List prototypes(String in) throws MalformedPatternException {
357+ in = collapseBraces(strip(in));
358+
359+ PatternMatcherInput input = new PatternMatcherInput(in);
360+ PatternCompiler compiler = new Perl5Compiler();
361+ PatternMatcher matcher = new Perl5Matcher();
362+ // XXX: doesn't handle ... varargs
363+ // XXX: doesn't handle function pointers
364+ Pattern pattern = compiler.compile(
365+ "[\\w\\[\\]\\*]+\\s+[\\[\\]\\*\\w\\s]+\\([,\\[\\]\\*\\w\\s]*\\)(?=\\s*\\{)");
366+ List matches = new ArrayList();
367+
368+ while (matcher.contains(input, pattern)) {
369+ matches.add(matcher.getMatch().group(0) + ";");
370+ }
371+
372+ return matches;
373+ }
374+}
375
376=== added directory '.pc/wrapper_for_deb.patch'
377=== added file '.pc/wrapper_for_deb.patch/arduino'
378--- .pc/wrapper_for_deb.patch/arduino 1970-01-01 00:00:00 +0000
379+++ .pc/wrapper_for_deb.patch/arduino 2010-04-11 15:27:18 +0000
380@@ -0,0 +1,22 @@
381+#!/bin/sh
382+
383+APPDIR="$(dirname -- "${0}")"
384+
385+cd $APPDIR
386+
387+for LIB in \
388+ java/lib/rt.jar \
389+ java/lib/tools.jar \
390+ lib/*.jar \
391+ ;
392+do
393+ CLASSPATH="${CLASSPATH}:${APPDIR}/${LIB}"
394+done
395+export CLASSPATH
396+
397+LD_LIBRARY_PATH=`pwd`/lib:${LD_LIBRARY_PATH}
398+export LD_LIBRARY_PATH
399+
400+export PATH="${APPDIR}/java/bin:${PATH}"
401+
402+java -Dswing.defaultlaf=com.sun.java.swing.plaf.gtk.GTKLookAndFeel processing.app.Base
403
404=== added file 'arduino'
405--- arduino 1970-01-01 00:00:00 +0000
406+++ arduino 2010-04-11 15:27:18 +0000
407@@ -0,0 +1,5 @@
408+#!/bin/sh
409+
410+cd /usr/share/arduino
411+
412+java -Dswing.defaultlaf=com.sun.java.swing.plaf.gtk.GTKLookAndFeel -jar /usr/share/java/arduino.jar
413
414=== modified file 'debian/README.source'
415--- debian/README.source 2010-02-12 19:25:26 +0000
416+++ debian/README.source 2010-04-11 15:27:18 +0000
417@@ -1,5 +1,4 @@
418-This package uses quilt to manage all modifications to the upstream source.
419-Changes are stored in the source package as diffs in debian/patches and
420-applied during the build.
421-
422-See /usr/share/doc/quilt/README.source for a detailed explanation
423+This package gets its source from a combination of the upstream SVN and upstream
424+released tarball. Both are found at http://arduino.cc/en/Main/Software. This
425+package follows what would happen in the make.sh and dist.sh scripts in a debian
426+compliant way.
427
428=== added file 'debian/arduino.1'
429--- debian/arduino.1 1970-01-01 00:00:00 +0000
430+++ debian/arduino.1 2010-04-11 15:27:18 +0000
431@@ -0,0 +1,30 @@
432+.\" Hey, EMACS: -*- nroff -*-
433+.\" First parameter, NAME, should be all caps
434+.\" Second parameter, SECTION, should be 1-8, maybe w/ subsection
435+.\" other parameters are allowed: see man(7), man(1)
436+.TH ARDUINO 1 "April 10, 2010"
437+.\" Please adjust this date whenever revising the manpage.
438+.\"
439+.\" Some roff macros, for reference:
440+.\" .nh disable hyphenation
441+.\" .hy enable hyphenation
442+.\" .ad l left justify
443+.\" .ad b justify to both left and right margins
444+.\" .nf disable filling
445+.\" .fi enable filling
446+.\" .br insert line break
447+.\" .sp <n> insert n+1 empty lines
448+.\" for manpage-specific macros, see man(7)
449+.SH NAME
450+arduino \- an IDE and uploader for Arduino development boards.
451+.SH SYNOPSIS
452+.B arduino
453+.SH DESCRIPTION
454+This program takes no options and will load the IDE in an X11 window.
455+.SH SEE ALSO
456+.BR http://www.arduino.cc/
457+.SH AUTHOR
458+arduino was written by <developers@arduino.cc>.
459+.PP
460+This manual page was written by Scott Howard <showard314@gmail.com>,
461+for the Debian project (and may be used by others).
462
463=== added file 'debian/arduino.desktop'
464--- debian/arduino.desktop 1970-01-01 00:00:00 +0000
465+++ debian/arduino.desktop 2010-04-11 15:27:18 +0000
466@@ -0,0 +1,8 @@
467+[Desktop Entry]
468+Type=Application
469+Name=arduino
470+GenericName=Program Atmegas the easy way
471+Exec=arduino
472+Icon=arduino
473+Terminal=false
474+Categories=Engineering;Electronics;
475
476=== removed file 'debian/arduino.png.uuencode'
477--- debian/arduino.png.uuencode 2010-02-12 19:25:26 +0000
478+++ debian/arduino.png.uuencode 1970-01-01 00:00:00 +0000
479@@ -1,86 +0,0 @@
480-begin-base64 644 arduino.png
481-iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAAAXNSR0IArs4c
482-6QAAAAZiS0dEAP8A/wD/oL2nkwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0
483-SU1FB9oCCRAXGHJwNrMAAAAZdEVYdENvbW1lbnQAQ3JlYXRlZCB3aXRoIEdJ
484-TVBXgQ4XAAAOHUlEQVRo3tWaa4wd51nHf887M+fszbtre33bNBeTNL7UMU4D
485-CUqhUqOWWlUVUFRKhVpxiUtRAYkKFImkaSgR8AEJqQLRRDVSVZBQQFStACUp
486-uUBD0tLc3CTOpbbreBOv7V17be+e3T1n5n3fhw/vO3Nmzm5FQHzpSLNn5uyc
487-Oc/l//yf//POEVUVfoy3dL03b7j7ywdQvU3RMbyCDuwAquGwdh4PQMNL+CMD
488-/wdF47vS/0x1riASDuOrZO2OtIafePlPDh0ZtFXqGbjhngemQQ9LOzsoadr/
489-Yq+od+AVXHBCvYe4q2o81nheHgdPJM1QW4CCL3JQH+4rBhEh3biFYuEcre1X
490-Yy/OkYxuAAG7eJ5kwwTF+TNoIpjhsUeyjTsOvXT/nbOlzaYf9QemMfKfycTY
491-QTM8hCQJIlJFSTBk27eSbJoEryQTE2Q7dgQjPOCJRgMu7l4x7RFaO64mHZ8i
492-ndyCOK3+n41vJZvcgZg24gWTDCGkiGSIaYGXCBKDqOCXLh3M504+s//ew9Nr
493-ISR6ONkwek1Im5BdvQ2/uIw9ewF1HhHBjIygDtRaTKuFGRpGFHxeoF7JprZg
494-RjeAdcERVeylBbpvHA1Z0pCxdGIryfgmirkZ3Moire070aJA8wItcjTPQQTN
495-e2jeQ4xBWm1sZxVdvnRVfuGtw8BHqgzsu/vLB6SVHQRBXUw/JsDZerAO383p
496-HXsTO/M2FI5i5jT5sRP4zioUDqwFq4gT8AbUgBNwihYWCosWFnUOdS6871ww
497-vMjD3utWDvi8iy96aK8XrvcOzVdQm2MvnTl4w72HD/QzoHqbpGmFay0s+esn
498-UedJNk2SjI9TvPk2vrMMzlU1UTqr3qPek5+e6ddD7bWMvvqAtWL+LYq5mVAr
499-6kPkbVE544s8lHrew7RGyOdPYRdtQLMBdT38yuJtwJHSgbFQYR6cD4ZZD86h
500-vQJWemAtQ7v24BeX6J04HhwtHfYDRY32HSiLuu6EOsrvU1UoCtQ5fG6BBKyn
501-WJqntfkaeqdP0N52Pd3Z11B1ICEgvrc6Vs9AxRhE49VZcB43dx5nzyFJhr+8
502-FFJvbZ9xvCc1wkduvYGb9+xkqJVGJi0pt067yqnZOb7+b88wc2a+YiNvHWod
503-OI/JRikunSWb3EY+d4ps6ko0L0hHNlFcPoMKMbP1Io6QEBXUetQ5zNAwurIa
504-MOlC1PxSB0lawcEY3c3jIzx416fYc82Od9x8Dt3xQe750tf4xmPfAVWKi7O0
505-p3aSz50knZwm3bCNfH6GbPOV5GffJB3fRHFxDvUaW4WiqqZPo6oVdNQ5JElo
506-X3M1rekrQmSsBevQwqNWYxGGYvzT37qDvTunEZF3vLdbGX/2uV9l19XTqHf4
507-bofu3AnS8e3kC2+jeU42eSW9uZNkE9Pk82+hhWVo2y5ak+8KNim+1gdK3AfD
508-BKGYOY2u5pj2EK3tVwbvnfZrw3mund7Cz+6/Di0LFd7xcZokfOr2DwTse4fv
509-LpEvzJCNbaFYPIvrLtHaeBW9uRO0Nu8MjGU9aiN5xHtFCBEiDME741HjUBzp
510-xBQiKUl7JBiPhkypct0VUw1o/P2/PsUD//BohW3VegErWzaN849/eS9GQnPc
511-tfNdodYIzjl7EbzHDI0jKvTOvE628Qp83kVtwerbL8drXbMGVBXxDlRCdK1D
512-Eg/i0dxhF88HXk8CDQZZ4TGqsVuH7fjMLLNn56OU8H2ajE6cPTeHc54kC3HL
513-0gS8jbIpFLztXKA9tBG1Bb7ohoBKyDpS6ixXkUPFQoHTYyaMC4VKpNUYeUgA
514-FxnKBUdiAIDQD5xF1dWc0H5GoizRmrDzzlXGx7sgrdHguHPgLIhBve2Lwdpx
515-n0ZtcECdQ6zHG4fBV6wkmCBg1IK1oZF52zAGdXhXNKJPpFNVj2JqyjMGztuG
516-klVVuvPHogMFZmgiBCUGK3jt18uAi/aFDIiLCq0sWnyAmCHe0IL3DQiVGaCC
517-Tk25qqKJD7IrfkbRWANNOe4656t7ds+9AdrPtigheM0MEPUGAWtlIRONt0Ug
518-LFO28iJmwDch4X3AtO8XceNVBiCk4TPJyBQ+X8Lb1docUfrlK/0kIsFpdYMD
519-jYJ1JGOTpGObyc/MRNhY1Oah8xKiTxIzoKGY6xAKX2YjZdaNL2sgGWhpiqRt
520-THsUSRLc5U4jGyJCOrwZ9Za8e5ls4ip8sYrtnK1mobSeSnvxPG5hATEpai2q
521-eRBZrgg1oBIlja0U4iCEvPdBOdbos6yD8kvrn3G9DpIu4vNOIBJAqnIG25mv
522-st27OBMluRvoA6qh26rgix4mGwJJUJUQfWfxCKIgsV60NLIBiVB4peHh/b4i
523-FdGB68O9isXZaI/WRs4wXhaduf7Igqu+pwEhkUhnHtTleBEMBtUEtRZvbcCf
524-SghmifNBCJUKNbJPWQsluyCDACIWpzZnY5PQ2vRufL6EXTzduL4KFI1GRl/f
525-2BzBoGQoNmDaFaiEsQ6VOAuEDNThENmgVsRao1ENE2IDQv2ClPpo7z1adEP9
526-ldGOGZJYa2toVIyQjG+lOHcKby1GLErRn6BEQzdWE2nUr2GhijHqUdd+FsIK
527-xyALxWtNRjq8Cbsyj3cFvQvHa6sXJYRidQxCCJRkbAK1BWZkEre8hIrFE1Wo
528-t4gksYj7Gai4vtZgtBpoaixUpllkDQuVEEpHplBvMUMTuOXzDVDVi1oGHDDl
529-Zfn8DD5fpVg4E+YDF42vpLPFe9eAD1ELlXvF0T7OsOVSTOlY2Yzi9VXWVLHL
530-86i3uOX5oHXUkbTGopUpko1W4lDX1oDiuh38ygrqlHTTdvL5HyKjLURM31hM
531-LGTXiG6ZhRv37ebjv/Dh2mJXczIzxmCMabBQVfDOYZfnmvVkMkQMgokI8JGN
532-daAGIIozJZu8ivzCKbIN0/iiR7F0lnTDjuo427AjRDPOt3UI3fHRD3HHRz/0
533-v1oarBdkf/wML0XnbJUpKZZrrg3UgMYIJEOTaN4jaW3ArV5GXUEytBG3ehlv
534-c9KRzeSXZmodWAdY6P+w1RxQYPOmSX7vs5/mPbt3cfT1N/jSX3+FhYVLFf61
535-Fv01Wigd20Jx4TQmHUFMhut2QByStFC/gu8t4bqLTZlQg1DoFe/8WFF8nVHS
536-lK//3WF2X38dxhh+7tabef+tt/Dzt3+CoihqfUDXLu6q92ivi2mNgS3oXTpD
537-tmF7aOdLs6Sj2+ieP1YVXdnO6xD654cf55n/eq4yri8jwrkxhvs/fxdJYmoQ
538-0qoPvP/Wm9m7+3oe+qdv8uzzR/jD3/9d9u6+nvf9zE/x5LefHmyBNQdEqyG9
539-nHdRj7ddEEMyPEX3wolKHgfj+yxUbt999gX+5m8fqmWoHFSCE0mS8MW7/4A0
540-TSo7pDbMDLVbiAjOOV78/su8+dbbTE1tZqjd7gu89WoApRolS4rUqMGlbCfR
541-aPUeSYfwveU1EKpUaOwFqlo1o77WqWet1ieAp57+LucvLPDhD36AT3zsFzHG
542-cP7CAk9/53sNfVSu4DdWp8NI6Sq111918xVsVD3J8CbS4S0kw5vXQKicl716
543-vPoq8lSizq/DQlrtlxeX+Ngn7+TED99kZWWV7z33Ih//5J1cXrocDe8PSWtX
544-pyuDwzJHdS5R4MYG5XtLoILrLa6BkNZgI6XapLmcMiinpREAeOmlo3z6tz/H
545-7l3v5o0fHOf06dl1xdyaTlx2ypCJOBJSW8+MnO/zZYql0/hiuYpEP4oR8cqa
546-JZV65NZfLwrX/85nfoMXnnmch772FZ5/+jE++5u/3lS5jb5Rr4E4u9YLMLR+
547-01/2qA3ror4R3X7rbSrQfsdVMIa1gtpXl1z7Ezv5o8/fxWNP/gfPvXCEn77p
548-Ru675y4e/dbjHD9xcp3vKTMgDDwD64+B9b00KB3ZVvFBXQsN3lwiRMrHXaWx
549-jeu1v+/ftxdjDI8/+W3+/C/+iif//SmSJGHfe/ZUOrDqzDJYA7XxTxtjYF0C
550-l6sMRaMj9rlcw8SmzRVpEQZm55pkKI9FOHYsUPVNNx7gV365w3tv/ElUtRH9
551-gZKpNbJ1Il5OYb7okLTHsd2LYfVsZR7w9Ho58+cvVDdbXe32nz3WO75Gx7xy
552-/sICWZYBcPHS5cYa0StHX+PBw1/lM4d+jV+643YAHjz8VY6++mrjiaas+5i1
553-HPkihSat8YB/20Vtj2R4Ey5fjCsUwbiHv/U4Dz/6WFj4jTUhtUesimLSNsa0
554-cL1F1DlueO/7GkUoAwf3fOF+vvHNf2Hv3t28+tobPPf8i6DSHCVUm2ujMtTu
555-EJdJbPci2dgO1BXki7Nko9uQpEXROUM2Nk1+6WQ/vNpvUBonpn7njRI6aSMm
556-Q5IMtb2B2bE/rNR58tnnX+C5518I94wqrkJaPDHtdqcq4mRy8xNmYoLi0ila
557-G6YplmZRV5CNbcd1F1DbpTWxE5O041wQ9nRkK9loeLCRZKOkw1uRpN3QQr53
558-Gd9bRF1vkMybgP7RZNZnzlgz6eatpFPTT1QOvHLfoSOtndc9oi6nWDpD0hoP
559-lGpXEJMiJiW/eILewrFaUVNbw9HB9hqdLJdOeggSn+Bq3AcoaJ1d0Or68hz1
560-DO058MjR++480pASw7v3H8quvW7Gri4gYnDdBSQdRpJh7PI50pGtYWG3pmls
561-5yxFZzY+K+5gl8+idmVgAXeA5ZR1ekQT2yX9ap0E4s2G9900M7r/lkPr/9Tg
562-jw9Pr77+/cO94z84KHmK6y4iaRuRBJ8vo/hQjHW12egRA7mnWdCD657/0yY1
563-SsumtjO058ZHRvffcuiVL/R/aiDr/Vpl3xcPH7AL87dprzvWhKmu7aS6nknK
564-/8dWGmbarU46dcUTJWx+5I89fhy3/wa6WiIDIeDekgAAAABJRU5ErkJggg==
565-====
566
567=== added file 'debian/arduino.xpm'
568--- debian/arduino.xpm 1970-01-01 00:00:00 +0000
569+++ debian/arduino.xpm 2010-04-11 15:27:18 +0000
570@@ -0,0 +1,691 @@
571+/* XPM */
572+static char * arduino_xpm[] = {
573+"32 32 656 2",
574+" c None",
575+". c #2D7E99",
576+"+ c #2D819C",
577+"@ c #2D809B",
578+"# c #2D7D99",
579+"$ c #2C7B96",
580+"% c #2C7895",
581+"& c #2C7693",
582+"* c #2B7491",
583+"= c #2B728F",
584+"- c #2B708D",
585+"; c #2A6E8C",
586+"> c #2A6C8A",
587+", c #2A6A88",
588+"' c #2A6B8A",
589+") c #2A6987",
590+"! c #296886",
591+"~ c #296482",
592+"{ c #286381",
593+"] c #296583",
594+"^ c #2B6D8C",
595+"/ c #2B6F8F",
596+"( c #2B6E8E",
597+"_ c #2B6F8E",
598+": c #2B708C",
599+"< c #28657E",
600+"[ c #27667D",
601+"} c #2D829D",
602+"| c #2F8AA3",
603+"1 c #3093AA",
604+"2 c #2E849F",
605+"3 c #2E809C",
606+"4 c #3193AD",
607+"5 c #2F87A3",
608+"6 c #2F83A0",
609+"7 c #308BA8",
610+"8 c #2B708F",
611+"9 c #2B6D8D",
612+"0 c #2D7697",
613+"a c #2C7294",
614+"b c #2C6F91",
615+"c c #2C7194",
616+"d c #2D7195",
617+"e c #2B698B",
618+"f c #295F80",
619+"g c #2A6588",
620+"h c #2C6D93",
621+"i c #2C6C92",
622+"j c #2D7096",
623+"k c #2D6F94",
624+"l c #2D7093",
625+"m c #2C6F8F",
626+"n c #275D76",
627+"o c #275F76",
628+"p c #266073",
629+"q c #2F89A3",
630+"r c #34A5B9",
631+"s c #2D7A98",
632+"t c #2E819E",
633+"u c #2D7695",
634+"v c #2E7797",
635+"w c #2B6889",
636+"x c #2B6A8B",
637+"y c #3185AB",
638+"z c #3181A9",
639+"A c #3181AB",
640+"B c #2C698E",
641+"C c #285A7B",
642+"D c #275879",
643+"E c #2A6389",
644+"F c #2E709B",
645+"G c #265473",
646+"H c #2B658A",
647+"I c #2C688D",
648+"J c #2B668B",
649+"K c #2B6789",
650+"L c #2A6584",
651+"M c #275D75",
652+"N c #28637B",
653+"O c #245868",
654+"P c #256070",
655+"Q c #2D809C",
656+"R c #2E86A0",
657+"S c #2E829D",
658+"T c #2D7E9A",
659+"U c #2F87A4",
660+"V c #3292AE",
661+"W c #2E7A9A",
662+"X c #2D7192",
663+"Y c #2B6486",
664+"Z c #2A6184",
665+"` c #295F81",
666+" . c #285C7E",
667+".. c #285A7C",
668+"+. c #28587A",
669+"@. c #275678",
670+"#. c #275475",
671+"$. c #265273",
672+"%. c #265170",
673+"&. c #254F6D",
674+"*. c #254D6B",
675+"=. c #295D82",
676+"-. c #2A6085",
677+";. c #295E81",
678+">. c #285D7E",
679+",. c #285C7A",
680+"'. c #275D79",
681+"). c #234F62",
682+"!. c #235161",
683+"~. c #245A6A",
684+"{. c #2D7D9A",
685+"]. c #2C7896",
686+"^. c #2D7594",
687+"/. c #2D7696",
688+"(. c #3184A7",
689+"_. c #307CA0",
690+":. c #2A6284",
691+"<. c #2A5E81",
692+"[. c #2B5D80",
693+"}. c #678AA3",
694+"|. c #85A0B4",
695+"1. c #86A0B4",
696+"2. c #859EB2",
697+"3. c #859DB0",
698+"4. c #859CAE",
699+"5. c #8098AA",
700+"6. c #476881",
701+"7. c #244A67",
702+"8. c #244865",
703+"9. c #28577D",
704+"0. c #295980",
705+"a. c #285A7F",
706+"b. c #28597C",
707+"c. c #28597B",
708+"d. c #296184",
709+"e. c #24516A",
710+"f. c #224B5D",
711+"g. c #235467",
712+"h. c #2C7B97",
713+"i. c #2D7996",
714+"j. c #318AA8",
715+"k. c #2C6E8F",
716+"l. c #2F779C",
717+"m. c #2E739A",
718+"n. c #295C80",
719+"o. c #2D5C80",
720+"p. c #C4D1DB",
721+"q. c #FFFFFF",
722+"r. c #FCFCFD",
723+"s. c #788D9F",
724+"t. c #234561",
725+"u. c #254D6F",
726+"v. c #275277",
727+"w. c #285880",
728+"x. c #275378",
729+"y. c #275579",
730+"z. c #254F6E",
731+"A. c #224760",
732+"B. c #244D66",
733+"C. c #235065",
734+"D. c #2C7894",
735+"E. c #2D7896",
736+"F. c #328DAD",
737+"G. c #2E7598",
738+"H. c #2D6E93",
739+"I. c #2E7199",
740+"J. c #2E6D97",
741+"K. c #28577C",
742+"L. c #7995AC",
743+"M. c #F5F6F7",
744+"N. c #2C4A65",
745+"O. c #21405B",
746+"P. c #244A6B",
747+"Q. c #254D71",
748+"R. c #27537A",
749+"S. c #254E71",
750+"T. c #265175",
751+"U. c #234967",
752+"V. c #224C62",
753+"W. c #2C7492",
754+"X. c #2D7494",
755+"Y. c #307FA2",
756+"Z. c #317DA4",
757+"`. c #3077A1",
758+" + c #2E6B95",
759+".+ c #2D6894",
760+"++ c #275478",
761+"@+ c #9FB2C2",
762+"#+ c #F8F9FA",
763+"$+ c #3C5B79",
764+"%+ c #355572",
765+"&+ c #345370",
766+"*+ c #34526D",
767+"=+ c #33506B",
768+"-+ c #7F91A1",
769+";+ c #4B6277",
770+">+ c #203C56",
771+",+ c #203C55",
772+"'+ c #254B6F",
773+")+ c #244A6D",
774+"!+ c #24496A",
775+"~+ c #1F3B52",
776+"{+ c #1F3B51",
777+"]+ c #21495F",
778+"^+ c #2B718E",
779+"/+ c #2C6E90",
780+"(+ c #2F7A9F",
781+"_+ c #3076A0",
782+":+ c #2D6A94",
783+"<+ c #2D6692",
784+"[+ c #2C6490",
785+"}+ c #264F72",
786+"|+ c #A0B0C0",
787+"1+ c #F4F6F7",
788+"2+ c #234463",
789+"3+ c #224260",
790+"4+ c #21405D",
791+"5+ c #213E5A",
792+"6+ c #203D58",
793+"7+ c #697C8E",
794+"8+ c #4C6175",
795+"9+ c #1E3851",
796+"0+ c #1E3850",
797+"a+ c #224364",
798+"b+ c #254D75",
799+"c+ c #234465",
800+"d+ c #1E364D",
801+"e+ c #20455C",
802+"f+ c #2A6D8B",
803+"g+ c #2A6989",
804+"h+ c #2B698C",
805+"i+ c #2E749C",
806+"j+ c #2E709D",
807+"k+ c #2C6591",
808+"l+ c #2B618D",
809+"m+ c #2B5E8A",
810+"n+ c #25496C",
811+"o+ c #9FAEBD",
812+"p+ c #21405C",
813+"q+ c #203D59",
814+"r+ c #203C57",
815+"s+ c #203B55",
816+"t+ c #1F3953",
817+"u+ c #68798A",
818+"v+ c #4B5E70",
819+"w+ c #1D354B",
820+"x+ c #1C344A",
821+"y+ c #1C354B",
822+"z+ c #1F3B56",
823+"A+ c #1F3C59",
824+"B+ c #254A71",
825+"C+ c #1D3348",
826+"D+ c #204359",
827+"E+ c #296485",
828+"F+ c #2A6487",
829+"G+ c #2E6E99",
830+"H+ c #2E6B9A",
831+"I+ c #2B608B",
832+"J+ c #2A5C87",
833+"K+ c #2A5883",
834+"L+ c #244565",
835+"M+ c #9EADBA",
836+"N+ c #F4F5F7",
837+"O+ c #1F3A54",
838+"P+ c #1F3851",
839+"Q+ c #1E364F",
840+"R+ c #1D354D",
841+"S+ c #677786",
842+"T+ c #4A5B6D",
843+"U+ c #1E3853",
844+"V+ c #1B3146",
845+"W+ c #1B3145",
846+"X+ c #1B3045",
847+"Y+ c #1C3146",
848+"Z+ c #1D364F",
849+"`+ c #1C3044",
850+" @ c #1F4156",
851+".@ c #296684",
852+"+@ c #2C6E93",
853+"@@ c #2B658B",
854+"#@ c #2D6994",
855+"$@ c #2C6592",
856+"%@ c #2A5A84",
857+"&@ c #295680",
858+"*@ c #28547D",
859+"=@ c #22415F",
860+"-@ c #9EABB8",
861+";@ c #F4F5F6",
862+">@ c #1D344C",
863+",@ c #1C334A",
864+"'@ c #1C3148",
865+")@ c #667483",
866+"!@ c #4A5C6E",
867+"~@ c #224369",
868+"{@ c #1A2E41",
869+"]@ c #1D354F",
870+"^@ c #213F62",
871+"/@ c #1B3044",
872+"(@ c #1F3854",
873+"_@ c #1E3F53",
874+":@ c #28627F",
875+"<@ c #285A7D",
876+"[@ c #2B638C",
877+"}@ c #28557D",
878+"|@ c #28527A",
879+"1@ c #264F76",
880+"2@ c #9DA9B5",
881+"3@ c #1C3249",
882+"4@ c #1C3147",
883+"5@ c #1B3046",
884+"6@ c #1B2F44",
885+"7@ c #657380",
886+"8@ c #485666",
887+"9@ c #192B3F",
888+"0@ c #192B3E",
889+"a@ c #182A3E",
890+"b@ c #192B3D",
891+"c@ c #192A3D",
892+"d@ c #1A2A3C",
893+"e@ c #1E3D51",
894+"f@ c #285F7C",
895+"g@ c #275574",
896+"h@ c #275474",
897+"i@ c #2A5C84",
898+"j@ c #2A5A85",
899+"k@ c #275077",
900+"l@ c #264D74",
901+"m@ c #254A70",
902+"n@ c #9DA8B3",
903+"o@ c #1A2E43",
904+"p@ c #1A2D41",
905+"q@ c #192C40",
906+"r@ c #64707E",
907+"s@ c #465463",
908+"t@ c #18293B",
909+"u@ c #18293A",
910+"v@ c #1D3756",
911+"w@ c #1C324C",
912+"x@ c #192939",
913+"y@ c #1D3C4F",
914+"z@ c #275E7A",
915+"A@ c #285979",
916+"B@ c #254E6C",
917+"C@ c #28577E",
918+"D@ c #28557F",
919+"E@ c #254B70",
920+"F@ c #25496F",
921+"G@ c #24466B",
922+"H@ c #9CA6B1",
923+"I@ c #192C41",
924+"J@ c #192B40",
925+"K@ c #18293C",
926+"L@ c #636F7B",
927+"M@ c #465360",
928+"N@ c #172738",
929+"O@ c #192D44",
930+"P@ c #18293E",
931+"Q@ c #17273A",
932+"R@ c #172636",
933+"S@ c #182636",
934+"T@ c #1C3B4D",
935+"U@ c #2A6286",
936+"V@ c #244966",
937+"W@ c #275278",
938+"X@ c #265079",
939+"Y@ c #24476C",
940+"Z@ c #23456A",
941+"`@ c #224366",
942+" # c #1C324A",
943+".# c #9BA5AF",
944+"+# c #17283A",
945+"@# c #172739",
946+"## c #636D79",
947+"$# c #45515D",
948+"%# c #162434",
949+"&# c #1B3352",
950+"*# c #17293D",
951+"=# c #162433",
952+"-# c #172433",
953+";# c #1C394A",
954+"># c #245369",
955+",# c #22455C",
956+"'# c #254E70",
957+")# c #264B73",
958+"!# c #234467",
959+"~# c #224265",
960+"{# c #213F61",
961+"]# c #1B3047",
962+"^# c #9BA4AD",
963+"/# c #F6F7F8",
964+"(# c #515E6D",
965+"_# c #515D6B",
966+":# c #515C6A",
967+"<# c #505C69",
968+"[# c #505B68",
969+"}# c #899099",
970+"|# c #454F5B",
971+"1# c #152231",
972+"2# c #152230",
973+"3# c #192B44",
974+"4# c #172537",
975+"5# c #18283D",
976+"6# c #162230",
977+"7# c #1B3848",
978+"8# c #235066",
979+"9# c #224763",
980+"0# c #234366",
981+"a# c #24466D",
982+"b# c #203E60",
983+"c# c #203C5C",
984+"d# c #1A2D43",
985+"e# c #9AA2AB",
986+"f# c #444E58",
987+"g# c #14212E",
988+"h# c #14212D",
989+"i# c #353F4A",
990+"j# c #1D2935",
991+"k# c #15212D",
992+"l# c #16212D",
993+"m# c #1B3846",
994+"n# c #254D70",
995+"o# c #224267",
996+"p# c #213E60",
997+"q# c #9AA1AA",
998+"r# c #434D56",
999+"s# c #121F2B",
1000+"t# c #BDC0C4",
1001+"u# c #FDFEFE",
1002+"v# c #EAEBEC",
1003+"w# c #38414B",
1004+"x# c #151F2B",
1005+"y# c #1A3645",
1006+"z# c #214A5F",
1007+"A# c #234768",
1008+"B# c #254972",
1009+"C# c #203C5D",
1010+"D# c #99A0A9",
1011+"E# c #F7F7F8",
1012+"F# c #57606C",
1013+"G# c #56606A",
1014+"H# c #565F69",
1015+"I# c #565E68",
1016+"J# c #555E67",
1017+"K# c #8C9298",
1018+"L# c #424C55",
1019+"M# c #121E2A",
1020+"N# c #414B54",
1021+"O# c #505861",
1022+"P# c #DFE0E2",
1023+"Q# c #91969B",
1024+"R# c #141E29",
1025+"S# c #151E29",
1026+"T# c #193544",
1027+"U# c #21475D",
1028+"V# c #234264",
1029+"W# c #24456E",
1030+"X# c #1F3958",
1031+"Y# c #1E3858",
1032+"Z# c #182A3F",
1033+"`# c #18283C",
1034+" $ c #999FA7",
1035+".$ c #F4F4F5",
1036+"+$ c #14212F",
1037+"@$ c #14202D",
1038+"#$ c #131F2B",
1039+"$$ c #121E2B",
1040+"%$ c #5F6770",
1041+"&$ c #414A53",
1042+"*$ c #111C27",
1043+"=$ c #26303A",
1044+"-$ c #F6F6F7",
1045+";$ c #C1C3C6",
1046+">$ c #FEFEFE",
1047+",$ c #6E747A",
1048+"'$ c #141D28",
1049+")$ c #193543",
1050+"!$ c #20445A",
1051+"~$ c #223F60",
1052+"{$ c #23436A",
1053+"]$ c #1F395A",
1054+"^$ c #1E3655",
1055+"/$ c #1D3655",
1056+"($ c #18293D",
1057+"_$ c #1C3351",
1058+":$ c #1B314F",
1059+"<$ c #999FA6",
1060+"[$ c #131F2C",
1061+"}$ c #121D29",
1062+"|$ c #111D28",
1063+"1$ c #5F666E",
1064+"2$ c #414952",
1065+"3$ c #111B25",
1066+"4$ c #495159",
1067+"5$ c #A3A7AB",
1068+"6$ c #767C81",
1069+"7$ c #141D27",
1070+"8$ c #131C26",
1071+"9$ c #141C26",
1072+"0$ c #193441",
1073+"a$ c #204258",
1074+"b$ c #213C5D",
1075+"c$ c #224066",
1076+"d$ c #1F3757",
1077+"e$ c #1D3552",
1078+"f$ c #1C3452",
1079+"g$ c #172639",
1080+"h$ c #162436",
1081+"i$ c #999EA5",
1082+"j$ c #F3F4F5",
1083+"k$ c #121D2A",
1084+"l$ c #111B26",
1085+"m$ c #5F656D",
1086+"n$ c #414850",
1087+"o$ c #111A24",
1088+"p$ c #767B81",
1089+"q$ c #D7D9DB",
1090+"r$ c #ABAEB1",
1091+"s$ c #1D242E",
1092+"t$ c #131A23",
1093+"u$ c #193340",
1094+"v$ c #20395A",
1095+"w$ c #213E64",
1096+"x$ c #1E3554",
1097+"y$ c #1C324F",
1098+"z$ c #1B324F",
1099+"A$ c #172538",
1100+"B$ c #162435",
1101+"C$ c #162233",
1102+"D$ c #989EA4",
1103+"E$ c #111B27",
1104+"F$ c #111A25",
1105+"G$ c #5F656C",
1106+"H$ c #40484F",
1107+"I$ c #101922",
1108+"J$ c #313941",
1109+"K$ c #5E646A",
1110+"L$ c #C3C5C7",
1111+"M$ c #818489",
1112+"N$ c #131922",
1113+"O$ c #19323F",
1114+"P$ c #1F4056",
1115+"Q$ c #203858",
1116+"R$ c #213D62",
1117+"S$ c #1E3452",
1118+"T$ c #1C314E",
1119+"U$ c #1B304E",
1120+"V$ c #172536",
1121+"W$ c #17273D",
1122+"X$ c #17263A",
1123+"Y$ c #989DA3",
1124+"Z$ c #F3F4F4",
1125+"`$ c #121D28",
1126+" % c #5F646B",
1127+".% c #40464E",
1128+"+% c #101822",
1129+"@% c #363C45",
1130+"#% c #4C5259",
1131+"$% c #BCBEC0",
1132+"%% c #86898E",
1133+"&% c #19333F",
1134+"*% c #1F3F54",
1135+"=% c #1F3756",
1136+"-% c #213C60",
1137+";% c #1E3350",
1138+">% c #1D3252",
1139+",% c #1B304D",
1140+"'% c #162232",
1141+")% c #15212F",
1142+"!% c #656C75",
1143+"~% c #A3A7AC",
1144+"{% c #9CA0A5",
1145+"]% c #131C27",
1146+"^% c #131A26",
1147+"/% c #121925",
1148+"(% c #121A25",
1149+"_% c #111822",
1150+":% c #A2A4A8",
1151+"<% c #2E343C",
1152+"[% c #101721",
1153+"}% c #101821",
1154+"|% c #888C90",
1155+"1% c #BEBFC2",
1156+"2% c #232831",
1157+"3% c #141922",
1158+"4% c #1F3F53",
1159+"5% c #1E3352",
1160+"6% c #1E3251",
1161+"7% c #1B2F4B",
1162+"8% c #1B2F4C",
1163+"9% c #15202E",
1164+"0% c #141D2A",
1165+"a% c #141C28",
1166+"b% c #131B27",
1167+"c% c #131A25",
1168+"d% c #121923",
1169+"e% c #162134",
1170+"f% c #141D2D",
1171+"g% c #121822",
1172+"h% c #121821",
1173+"i% c #121820",
1174+"j% c #131820",
1175+"k% c #131821",
1176+"l% c #141821",
1177+"m% c #19313E",
1178+"n% c #20475A",
1179+"o% c #1D2F47",
1180+"p% c #1F3558",
1181+"q% c #1D2F4B",
1182+"r% c #1D3251",
1183+"s% c #1C3050",
1184+"t% c #16212F",
1185+"u% c #16202D",
1186+"v% c #192942",
1187+"w% c #162132",
1188+"x% c #162337",
1189+"y% c #162033",
1190+"z% c #131924",
1191+"A% c #131823",
1192+"B% c #131822",
1193+"C% c #12171F",
1194+"D% c #13171F",
1195+"E% c #14171F",
1196+"F% c #1C3C4A",
1197+"G% c #1C3646",
1198+"H% c #1E314F",
1199+"I% c #1D304C",
1200+"J% c #1E3252",
1201+"K% c #1C2D47",
1202+"L% c #182436",
1203+"M% c #16212E",
1204+"N% c #151F2C",
1205+"O% c #162133",
1206+"P% c #151D2A",
1207+"Q% c #151D2C",
1208+"R% c #141B29",
1209+"S% c #131923",
1210+"T% c #131721",
1211+"U% c #131720",
1212+"V% c #182833",
1213+"W% c #1F4457",
1214+"X% c #1F4057",
1215+"Y% c #1E3F57",
1216+"Z% c #1E3D53",
1217+"`% c #1D3D53",
1218+" & c #1B3646",
1219+".& c #1A3545",
1220+"+& c #193443",
1221+"@& c #193442",
1222+"#& c #193341",
1223+"$& c #183240",
1224+"%& c #18313F",
1225+"&& c #18313E",
1226+"*& c #18303D",
1227+"=& c #18303C",
1228+"-& c #19303C",
1229+";& c #1B3C49",
1230+" ",
1231+" . + @ # $ % & * = - ; > , ' ) ! ~ { ] ^ / ( _ : < [ ",
1232+" } | 1 2 3 4 5 6 7 8 9 0 a b c d e f g h i j k l m n o p ",
1233+" . q | r 2 s t s u v w x y z A B C D E F G H I J K L M N O P ",
1234+" Q R S T U V W X w Y Z ` ...+.@.#.$.%.&.*.=.-.;.>.,.'.).!.~. ",
1235+" T S {.].^./.(._.:.<.[.}.|.1.2.3.4.5.6.7.8.9.0.a.b.c.d.e.f.g. ",
1236+" h.{.i.j.k.K l.m.n.o.p.q.q.q.q.q.q.q.r.s.t.u.v.w.x.y.z.A.B.C. ",
1237+" D.E.s F.G.H.I.J.K.L.q.q.q.q.q.q.q.q.q.M.N.O.P.Q.R.S.T.U.y.V. ",
1238+" * W.X.Y.Z.`. +.+++@+q.#+$+%+&+*+=+-+q.q.;+>+,+'+)+)+!+~+{+]+ ",
1239+" ^+_ /+(+_+:+<+[+}+|+q.1+2+3+4+5+6+7+q.q.8+9+0+a+b+c+c+d+d+e+ ",
1240+" f+g+h+i+j+k+l+m+n+o+q.1+p+q+r+s+t+u+q.q.v+w+x+y+z+A+B+C+C+D+ ",
1241+" ) E+F+G+H+I+J+K+L+M+q.N+r+O+P+Q+R+S+q.q.T+U+V+W+X+Y+Z+`+`+ @ ",
1242+" .@+@@@#@$@%@&@*@=@-@q.;@9+Q+>@,@'@)@q.q.!@~@V+{@{@]@^@/@(@_@ ",
1243+" :@C <@[@I+}@|@1@q+2@q.;@>@3@4@5@6@7@q.q.8@9@0@a@b@c@c@d@d@e@ ",
1244+" f@g@h@i@j@k@l@m@O+n@q.;@4@X+o@p@q@r@q.q.s@t@u@u@v@w@x@x@x@y@ ",
1245+" z@A@B@C@D@E@F@G@Q+H@q.;@o@I@J@a@K@L@q.q.M@N@O@N@P@Q@R@S@S@T@ ",
1246+" :@U@V@W@X@Y@Z@`@ #.#q.;@J@a@t@+#@###q.q.$#%#&#*#=#=#=#-#-#;# ",
1247+" >#,#'#E@)#!#~#{#]#^#q./#(#_#:#<#[#}#q.q.|#1#2#2#2#3#4#5#6#7# ",
1248+" 8#9#)+)#0#a#b#c#d#e#q.q.q.q.q.q.q.q.q.q.f#g#h#h#i#j#k#l#l#m# ",
1249+" V.n#Y@0#o#p#^@d#J@q#q.q.q.q.q.q.q.q.q.q.r#s#h#t#u#v#w#x#x#y# ",
1250+" z#A#B#p#p#C#5@J@K@D#q.E#F#G#H#I#J#K#q.q.L#M#N#q.O#P#Q#R#S#T# ",
1251+" U#V#W#C#X#Y#J@Z#`# $q..$+$@$#$$$M#%$q.q.&$*$=$-$;$>$,$'$'$)$ ",
1252+" !$~${$]$^$/$($_$:$<$q..$[$$$M#}$|$1$q.q.2$3$3$4$5$6$7$8$9$0$ ",
1253+" a$b$c$d$e$f$Q@g$h$i$q.j$$$k$|$*$l$m$q.q.n$o$o$p$q$r$s$t$t$u$ ",
1254+" @v$w$x$y$z$A$B$C$D$q.j$}$*$E$F$F$G$q.q.H$I$J$-$K$L$M$N$N$O$ ",
1255+" P$Q$R$S$T$U$V$W$X$Y$q.Z$`$E$F$o$o$ %q.q..%+%@%-$#%$%%%N$N$&% ",
1256+" *%=%-%;%>%,%g$'%)%!%~%{%]%^%/%(%_%.%:%:%<%[%}%|%v#1%2%N$3%O$ ",
1257+" 4%Q$d$5%6%7%8%6#9%x#0%a%b%c%d%e%f%g%h%h%i%i%i%i%i%j%j%k%l%m% ",
1258+" n%o%;%p%q%r%s%t%u%v%w%x%y%z%N$c%A%B%k%j%j%C%C%C%C%D%D%D%E%F% ",
1259+" G%H%I%J%K%L%M%N%O%P%Q%R%S%B%B%T%U%D%C%C%C%C%C%C%D%D%E%V% ",
1260+" W%X%Y%Z%`% &.&+&@&#&$&%&%&&&*&*&=&=&=&=&=&=&=&=&-&;& ",
1261+" "};
1262
1263=== modified file 'debian/changelog'
1264--- debian/changelog 2010-02-12 19:25:26 +0000
1265+++ debian/changelog 2010-04-11 15:27:18 +0000
1266@@ -1,5 +1,5 @@
1267-arduino (0018+dfsg-0ubuntu1~ppa6) lucid; urgency=low
1268-
1269- * Initial release. (LP: #230387)
1270-
1271- -- Alessio Igor Bogani <abogani@ubuntu.com> Fri, 12 Feb 2010 14:25:26 +0100
1272+arduino (0018+dfsg-1) unstable; urgency=low
1273+
1274+ * Initial release. (Closes: #577249)
1275+
1276+ -- Scott Howard <showard314@gmail.com> Sat, 10 Apr 2010 19:43:15 -0400
1277
1278=== modified file 'debian/control'
1279--- debian/control 2010-02-12 19:25:26 +0000
1280+++ debian/control 2010-04-11 15:27:18 +0000
1281@@ -1,26 +1,25 @@
1282 Source: arduino
1283-Section: universe/devel
1284+Section: electronics
1285 Priority: optional
1286-Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
1287-XSBC-Original-Maintainer: Arduino Ubuntu Team <arduino-ubuntu-team@lists.launchpad.net>
1288-Build-Depends: debhelper (>= 7), quilt(>= 0.46-7~), sharutils
1289-Build-Depends-Indep: default-jdk, librxtx-java, subversion, unzip
1290+Maintainer: Scott Howard <showard314@gmail.com>
1291+DM-Upload-Allowed: yes
1292+Build-Depends: debhelper (>= 7.0.50~), javahelper, default-jdk, librxtx-java,
1293+ liboro-java, libantlr-java, libecj-java, libjna-java, perl
1294 Standards-Version: 3.8.4
1295 Homepage: http://www.arduino.cc
1296
1297 Package: arduino
1298 Architecture: all
1299-Depends: ${misc:Depends}, gcc-avr, avr-libc, avrdude (>= 5.10-1ubuntu1), default-jre | java6-runtime, librxtx-java (>=2.1.7r2-4ubuntu1)
1300-Description: The Arduino libraries and the development environment
1301- Arduino is an open-source electronics prototyping platform based on flexible,
1302- easy-to-use hardware and software. It's intended for artists, designers,
1303- hobbyists, and anyone interested in creating interactive objects or
1304- environments.
1305- .
1306- Arduino can sense the environment by receiving input from a variety of sensors
1307- and can affect its surroundings by controlling lights, motors, and other
1308- actuators. The microcontroller on the board is programmed using the Arduino
1309- programming language (based on Wiring) and the Arduino development environment
1310- (based on Processing). Arduino projects can be stand-alone or they can
1311- communicate with software on running on a computer
1312- (e.g. Flash, Processing, MaxMSP).
1313+Depends: ${java:Depends}, ${misc:Depends}, gcc-avr, avr-libc, avrdude
1314+Recommends: extra-xdg-menus
1315+Description: AVR development board IDE and built-in libraries
1316+ Arduino is an open-source electronics prototyping platform
1317+ based on flexible, easy-to-use hardware and software. It's intended for
1318+ artists, designers, hobbyists, and anyone interested in creating interactive
1319+ objects or environments.
1320+ .
1321+ This pacakge will install the integrated development environment that allows
1322+ for program writing, code verfication, compiling, and uploading to the Arduino
1323+ development board. Libraries and example code will also be installed.
1324+ .
1325+ For more information, visit www.arduino.cc
1326
1327=== modified file 'debian/copyright'
1328--- debian/copyright 2010-02-12 19:25:26 +0000
1329+++ debian/copyright 2010-04-11 15:27:18 +0000
1330@@ -1,9 +1,11 @@
1331 This package was debianized by:
1332
1333- Arduino Ubuntu Team <arduino-ubuntu-team@lists.launchpad.net> on Wed, 03 Feb 2010 22:28:16 +0100
1334+ Scott Howard <showard314@gmail.com>
1335+ based on the work of the Arduino Ubuntu Team <arduino-ubuntu-team@lists.launchpad.net>
1336
1337 This original source for this package was obtained via the upstream
1338 svn branch at http://arduino.googlecode.com/svn/trunk/
1339+and .tgz from www.arduino.cc
1340
1341 Files: src/processing/xml/*
1342 Copyright: 2000-2002, Marc De Scheemaecker
1343@@ -125,7 +127,7 @@
1344 redistribute the Software for such purposes.
1345
1346 Files: debian/*
1347-Copyright: 2010, Arduino Ubuntu Team <arduino-ubuntu-team@lists.launchpad.net>
1348+Copyright: 2010, Scott Howard <showard314@gmail.com>, Arduino Ubuntu Team <arduino-ubuntu-team@lists.launchpad.net>
1349 License: GPL-2
1350
1351 Files: src/processing/app/*, src/processing/app/syntax/PdeKeywords.java
1352
1353=== removed file 'debian/docs'
1354--- debian/docs 2010-02-12 19:25:26 +0000
1355+++ debian/docs 1970-01-01 00:00:00 +0000
1356@@ -1,3 +0,0 @@
1357-license.txt
1358-todo.txt
1359-reference/
1360
1361=== modified file 'debian/install'
1362--- debian/install 2010-02-12 19:25:26 +0000
1363+++ debian/install 2010-04-11 15:27:18 +0000
1364@@ -1,8 +1,4 @@
1365-resources/linux/startup/arduino usr/bin
1366-resources/icons/arduino.desktop usr/share/applications
1367-resources/icons/arduino.xpm usr/share/pixmaps
1368-classes/arduino.jar usr/share/java
1369-src/*.txt src/theme usr/share/arduino
1370-src/about.jpg usr/share/arduino/theme
1371-arduino.png usr/share/pixmaps
1372-hardware/ libraries/ usr/share/arduino
1373+arduino usr/bin
1374+examples/ hardware/ lib/ libraries/ reference/ tools/ usr/share/arduino
1375+debian/*.xpm usr/share/pixmaps
1376+debian/*.desktop usr/share/applications/
1377
1378=== added file 'debian/javadoc'
1379--- debian/javadoc 1970-01-01 00:00:00 +0000
1380+++ debian/javadoc 2010-04-11 15:27:18 +0000
1381@@ -0,0 +1,1 @@
1382+debian/_jh_build.javadoc.ext/api/
1383
1384=== added file 'debian/jlibs'
1385--- debian/jlibs 1970-01-01 00:00:00 +0000
1386+++ debian/jlibs 2010-04-11 15:27:18 +0000
1387@@ -0,0 +1,1 @@
1388+arduino.jar
1389
1390=== added file 'debian/links'
1391--- debian/links 1970-01-01 00:00:00 +0000
1392+++ debian/links 2010-04-11 15:27:18 +0000
1393@@ -0,0 +1,2 @@
1394+/etc/avrdude.conf /usr/share/arduino/hardware/tools/avrdude.conf
1395+/usr/bin/avrdude /usr/share/arduino/hardware/tools/avrdude
1396
1397=== added file 'debian/manpages'
1398--- debian/manpages 1970-01-01 00:00:00 +0000
1399+++ debian/manpages 2010-04-11 15:27:18 +0000
1400@@ -0,0 +1,1 @@
1401+debian/arduino.1
1402
1403=== added file 'debian/menu'
1404--- debian/menu 1970-01-01 00:00:00 +0000
1405+++ debian/menu 2010-04-11 15:27:18 +0000
1406@@ -0,0 +1,6 @@
1407+?package(arduino):\
1408+ needs="X11"\
1409+ section="Applications/Science/Electronics"\
1410+ title="Arduino"\
1411+ command="arduino" \
1412+ icon="/usr/share/pixmaps/arduino.xpm"
1413
1414=== removed file 'debian/patches/about-into-themedir.patch'
1415--- debian/patches/about-into-themedir.patch 2010-02-12 19:25:26 +0000
1416+++ debian/patches/about-into-themedir.patch 1970-01-01 00:00:00 +0000
1417@@ -1,14 +0,0 @@
1418-Moved about.jpg into theme directory
1419-Index: arduino-0018+dfsg/src/processing/app/Base.java
1420-===================================================================
1421---- arduino-0018+dfsg.orig/src/processing/app/Base.java 2010-02-12 14:29:23.691259101 +0100
1422-+++ arduino-0018+dfsg/src/processing/app/Base.java 2010-02-12 14:29:41.478822760 +0100
1423-@@ -1254,7 +1254,7 @@
1424- * Show the About box.
1425- */
1426- public void handleAbout() {
1427-- final Image image = Base.getLibImage("about.jpg", activeEditor);
1428-+ final Image image = Base.getLibImage("/theme/about.jpg", activeEditor);
1429- final Window window = new Window(activeEditor) {
1430- public void paint(Graphics g) {
1431- g.drawImage(image, 0, 0, null);
1432
1433=== removed file 'debian/patches/adopt-avrdude-arduino-programmer-type.patch'
1434--- debian/patches/adopt-avrdude-arduino-programmer-type.patch 2010-02-12 19:25:26 +0000
1435+++ debian/patches/adopt-avrdude-arduino-programmer-type.patch 1970-01-01 00:00:00 +0000
1436@@ -1,102 +0,0 @@
1437-diff -ruNp arduino-0018+dfsg.orig/hardware/arduino/boards.txt arduino-0018+dfsg/hardware/arduino/boards.txt
1438---- arduino-0018+dfsg.orig/hardware/arduino/boards.txt 2009-12-18 17:05:52.000000000 +0100
1439-+++ arduino-0018+dfsg/hardware/arduino/boards.txt 2010-03-20 16:39:01.191499017 +0100
1440-@@ -2,7 +2,7 @@
1441-
1442- atmega328.name=Arduino Duemilanove or Nano w/ ATmega328
1443-
1444--atmega328.upload.protocol=stk500
1445-+atmega328.upload.protocol=arduino
1446- atmega328.upload.maximum_size=30720
1447- atmega328.upload.speed=57600
1448-
1449-@@ -22,7 +22,7 @@ atmega328.build.core=arduino
1450-
1451- diecimila.name=Arduino Diecimila, Duemilanove, or Nano w/ ATmega168
1452-
1453--diecimila.upload.protocol=stk500
1454-+diecimila.upload.protocol=arduino
1455- diecimila.upload.maximum_size=14336
1456- diecimila.upload.speed=19200
1457-
1458-@@ -42,7 +42,7 @@ diecimila.build.core=arduino
1459-
1460- mega.name=Arduino Mega
1461-
1462--mega.upload.protocol=stk500
1463-+mega.upload.protocol=arduino
1464- mega.upload.maximum_size=126976
1465- mega.upload.speed=57600
1466-
1467-@@ -62,7 +62,7 @@ mega.build.core=arduino
1468-
1469- mini.name=Arduino Mini
1470-
1471--mini.upload.protocol=stk500
1472-+mini.upload.protocol=arduino
1473- mini.upload.maximum_size=14336
1474- mini.upload.speed=19200
1475-
1476-@@ -82,7 +82,7 @@ mini.build.core=arduino
1477-
1478- bt.name=Arduino BT
1479-
1480--bt.upload.protocol=stk500
1481-+bt.upload.protocol=arduino
1482- bt.upload.maximum_size=14336
1483- bt.upload.speed=19200
1484- bt.upload.disable_flushing=true
1485-@@ -103,7 +103,7 @@ bt.build.core=arduino
1486-
1487- lilypad328.name=LilyPad Arduino w/ ATmega328
1488-
1489--lilypad328.upload.protocol=stk500
1490-+lilypad328.upload.protocol=arduino
1491- lilypad328.upload.maximum_size=30720
1492- lilypad328.upload.speed=57600
1493-
1494-@@ -123,7 +123,7 @@ lilypad328.build.core=arduino
1495-
1496- lilypad.name=LilyPad Arduino w/ ATmega168
1497-
1498--lilypad.upload.protocol=stk500
1499-+lilypad.upload.protocol=arduino
1500- lilypad.upload.maximum_size=14336
1501- lilypad.upload.speed=19200
1502-
1503-@@ -143,7 +143,7 @@ lilypad.build.core=arduino
1504-
1505- pro328.name=Arduino Pro or Pro Mini (3.3V, 8 MHz) w/ ATmega328
1506-
1507--pro328.upload.protocol=stk500
1508-+pro328.upload.protocol=arduino
1509- pro328.upload.maximum_size=30720
1510- pro328.upload.speed=57600
1511-
1512-@@ -163,7 +163,7 @@ pro328.build.core=arduino
1513-
1514- pro.name=Arduino Pro or Pro Mini (3.3V, 8 MHz) w/ ATmega168
1515-
1516--pro.upload.protocol=stk500
1517-+pro.upload.protocol=arduino
1518- pro.upload.maximum_size=14336
1519- pro.upload.speed=19200
1520-
1521-@@ -183,7 +183,7 @@ pro.build.core=arduino
1522-
1523- atmega168.name=Arduino NG or older w/ ATmega168
1524-
1525--atmega168.upload.protocol=stk500
1526-+atmega168.upload.protocol=arduino
1527- atmega168.upload.maximum_size=14336
1528- atmega168.upload.speed=19200
1529-
1530-@@ -203,7 +203,7 @@ atmega168.build.core=arduino
1531-
1532- atmega8.name=Arduino NG or older w/ ATmega8
1533-
1534--atmega8.upload.protocol=stk500
1535-+atmega8.upload.protocol=arduino
1536- atmega8.upload.maximum_size=7168
1537- atmega8.upload.speed=19200
1538-
1539
1540=== removed file 'debian/patches/avrdude-paths.patch'
1541--- debian/patches/avrdude-paths.patch 2010-02-12 19:25:26 +0000
1542+++ debian/patches/avrdude-paths.patch 1970-01-01 00:00:00 +0000
1543@@ -1,27 +0,0 @@
1544-Fix path for use avr tools
1545-Index: arduino-0018+dfsg/src/processing/app/debug/Uploader.java
1546-===================================================================
1547---- arduino-0018+dfsg.orig/src/processing/app/debug/Uploader.java 2010-02-15 07:55:42.101548187 +0100
1548-+++ arduino-0018+dfsg/src/processing/app/debug/Uploader.java 2010-02-15 07:57:51.429048221 +0100
1549-@@ -111,7 +111,7 @@
1550- String avrBasePath;
1551-
1552- if(Base.isLinux()) {
1553-- avrBasePath = new String(Base.getHardwarePath() + "/tools/");
1554-+ avrBasePath = "";
1555- }
1556- else {
1557- avrBasePath = new String(Base.getHardwarePath() + "/tools/avr/bin/");
1558-Index: arduino-0018+dfsg/src/processing/app/debug/AvrdudeUploader.java
1559-===================================================================
1560---- arduino-0018+dfsg.orig/src/processing/app/debug/AvrdudeUploader.java 2010-02-15 07:56:20.661515639 +0100
1561-+++ arduino-0018+dfsg/src/processing/app/debug/AvrdudeUploader.java 2010-02-15 07:57:18.290832803 +0100
1562-@@ -172,7 +172,7 @@
1563- if (Base.isLinux()) {
1564- // ???: is it better to have Linux users install avrdude themselves, in
1565- // a way that it can find its own configuration file?
1566-- commandDownloader.add("-C" + Base.getHardwarePath() + "/tools/avrdude.conf");
1567-+ // commandDownloader.add("-C" + Base.getHardwarePath() + "/tools/avrdude.conf");
1568- } else {
1569- commandDownloader.add("-C" + Base.getHardwarePath() + "/tools/avr/etc/avrdude.conf");
1570- }
1571
1572=== added file 'debian/patches/convert_to_debian_oro.patch'
1573--- debian/patches/convert_to_debian_oro.patch 1970-01-01 00:00:00 +0000
1574+++ debian/patches/convert_to_debian_oro.patch 2010-04-11 15:27:18 +0000
1575@@ -0,0 +1,16 @@
1576+Description: Tells the source code to use Debian's liboro-java
1577+Author: Scott Howard <showard314@gmail.com>
1578+
1579+Index: arduino-0018+dfsg/src/processing/app/preproc/PdePreprocessor.java
1580+===================================================================
1581+--- arduino-0018+dfsg.orig/src/processing/app/preproc/PdePreprocessor.java 2010-04-09 23:50:58.588879697 -0400
1582++++ arduino-0018+dfsg/src/processing/app/preproc/PdePreprocessor.java 2010-04-10 10:48:28.458510257 -0400
1583+@@ -35,7 +35,7 @@
1584+ import java.io.*;
1585+ import java.util.*;
1586+
1587+-import com.oroinc.text.regex.*;
1588++import org.apache.oro.text.regex.*;
1589+
1590+
1591+ /**
1592
1593=== removed file 'debian/patches/desktop-icon.patch'
1594--- debian/patches/desktop-icon.patch 2010-02-12 19:25:26 +0000
1595+++ debian/patches/desktop-icon.patch 1970-01-01 00:00:00 +0000
1596@@ -1,14 +0,0 @@
1597-A Desktop Entry for show icon on menu
1598-diff -ruNp arduino-0018-orig/resources/icons/arduino.desktop arduino-0018-changed/resources/icons/arduino.desktop
1599---- arduino-0018-orig/resources/icons/arduino.desktop 1970-01-01 01:00:00.000000000 +0100
1600-+++ arduino-0018-changed/resources/icons/arduino.desktop 2010-01-15 13:58:01.000000000 +0100
1601-@@ -0,0 +1,9 @@
1602-+[Desktop Entry]
1603-+Type=Application
1604-+Name=arduino
1605-+Name[xx]=arduino
1606-+GenericName=Program Atmegas the easy way
1607-+Exec=arduino
1608-+Icon=arduino
1609-+Terminal=false
1610-+Categories=Development
1611
1612=== removed file 'debian/patches/fix-locale.patch'
1613--- debian/patches/fix-locale.patch 2010-02-12 19:25:26 +0000
1614+++ debian/patches/fix-locale.patch 1970-01-01 00:00:00 +0000
1615@@ -1,12 +0,0 @@
1616-Index: arduino-0018+dfsg/src/processing/app/Base.java
1617-===================================================================
1618---- arduino-0018+dfsg.orig/src/processing/app/Base.java 2010-02-18 14:44:18.869024266 +0100
1619-+++ arduino-0018+dfsg/src/processing/app/Base.java 2010-02-18 14:46:24.509021752 +0100
1620-@@ -126,6 +126,7 @@
1621- The first thing we have to do is to initialze the platform-specific
1622- classes so file lookup is delegated to platform specific code.
1623- */
1624-+ Locale.setDefault(Locale.US);
1625- initPlatform();
1626-
1627- try {
1628
1629=== removed file 'debian/patches/fix-openfiledialog.patch'
1630--- debian/patches/fix-openfiledialog.patch 2010-02-12 19:25:26 +0000
1631+++ debian/patches/fix-openfiledialog.patch 1970-01-01 00:00:00 +0000
1632@@ -1,66 +0,0 @@
1633-Index: arduino-0018+dfsg/src/processing/app/Base.java
1634-===================================================================
1635---- arduino-0018+dfsg.orig/src/processing/app/Base.java 2010-02-18 14:58:05.819024475 +0100
1636-+++ arduino-0018+dfsg/src/processing/app/Base.java 2010-02-18 14:58:39.819047033 +0100
1637-@@ -28,6 +28,7 @@
1638- import java.util.*;
1639-
1640- import javax.swing.*;
1641-+import javax.swing.filechooser.FileNameExtensionFilter;
1642-
1643- import processing.app.debug.Compiler;
1644- import processing.app.debug.Target;
1645-@@ -641,32 +642,14 @@
1646- */
1647- public void handleOpenPrompt() {
1648- // get the frontmost window frame for placing file dialog
1649-- FileDialog fd = new FileDialog(activeEditor,
1650-- "Open an Arduino sketch...",
1651-- FileDialog.LOAD);
1652-- // This was annoying people, so disabled it in 0125.
1653-- //fd.setDirectory(Preferences.get("sketchbook.path"));
1654-- //fd.setDirectory(getSketchbookPath());
1655--
1656-- // Only show .pde files as eligible bachelors
1657-- fd.setFilenameFilter(new FilenameFilter() {
1658-- public boolean accept(File dir, String name) {
1659-- // TODO this doesn't seem to ever be used. AWESOME.
1660-- //System.out.println("check filter on " + dir + " " + name);
1661-- return name.toLowerCase().endsWith(".pde");
1662-- }
1663-- });
1664--
1665-- fd.setVisible(true);
1666--
1667-- String directory = fd.getDirectory();
1668-- String filename = fd.getFile();
1669--
1670-- // User canceled selection
1671-- if (filename == null) return;
1672--
1673-- File inputFile = new File(directory, filename);
1674-- handleOpen(inputFile.getAbsolutePath());
1675-+ JFileChooser jfc=new JFileChooser();
1676-+ FileNameExtensionFilter filter = new FileNameExtensionFilter(
1677-+ "Arduino Sketches", "pde");
1678-+ jfc.setFileFilter(filter);
1679-+ int returnVal = jfc.showOpenDialog(activeEditor);
1680-+ if(returnVal == JFileChooser.APPROVE_OPTION) {
1681-+ handleOpen(jfc.getSelectedFile().getAbsolutePath());
1682-+ }
1683- }
1684-
1685-
1686-@@ -803,11 +786,11 @@
1687- }
1688-
1689- // This will store the sketch count as zero
1690-- editors.remove(editor);
1691- storeSketches();
1692-
1693- // Save out the current prefs state
1694- Preferences.save();
1695-+ editors.remove(editor);
1696-
1697- // Since this wasn't an actual Quit event, call System.exit()
1698- System.exit(0);
1699
1700=== removed file 'debian/patches/fix-savefiledialog.patch'
1701--- debian/patches/fix-savefiledialog.patch 2010-02-12 19:25:26 +0000
1702+++ debian/patches/fix-savefiledialog.patch 1970-01-01 00:00:00 +0000
1703@@ -1,89 +0,0 @@
1704-Use system look and feel for "save as" file dialog
1705-Index: arduino-0018+dfsg/src/processing/app/Sketch.java
1706-===================================================================
1707---- arduino-0018+dfsg.orig/src/processing/app/Sketch.java 2010-02-18 15:02:19.209029154 +0100
1708-+++ arduino-0018+dfsg/src/processing/app/Sketch.java 2010-02-18 15:11:50.609021682 +0100
1709-@@ -728,57 +728,29 @@
1710- protected boolean saveAs() throws IOException {
1711- String newParentDir = null;
1712- String newName = null;
1713-+ File newFolder = null;
1714-
1715-- /*
1716-- JFileChooser fc = new JFileChooser();
1717-- fc.setDialogTitle("Save sketch folder as...");
1718-- if (isReadOnly() || isUntitled()) {
1719-- // default to the sketchbook folder
1720-- fc.setCurrentDirectory(new File(Preferences.get("sketchbook.path")));
1721-- } else {
1722-- // default to the parent folder of where this was
1723-- fc.setCurrentDirectory(folder.getParentFile());
1724-- }
1725-- // can't do this, will try to save into itself by default
1726-- //fc.setSelectedFile(folder);
1727-- int result = fc.showSaveDialog(editor);
1728-- if (result == JFileChooser.APPROVE_OPTION) {
1729-- File selection = fc.getSelectedFile();
1730-- newParentDir = selection.getParent();
1731-- newName = selection.getName();
1732-- }
1733-- */
1734--
1735-- // get new name for folder
1736-- FileDialog fd = new FileDialog(editor,
1737-- "Save sketch folder as...",
1738-- FileDialog.SAVE);
1739-+ JFileChooser fc = new JFileChooser();
1740-+ fc.setDialogTitle("Save sketch folder as...");
1741- if (isReadOnly() || isUntitled()) {
1742-- // default to the sketchbook folder
1743-- fd.setDirectory(Preferences.get("sketchbook.path"));
1744-+ // default to the sketchbook folder
1745-+ fc.setCurrentDirectory(new File(Preferences.get("sketchbook.path")));
1746- } else {
1747- // default to the parent folder of where this was
1748-- fd.setDirectory(folder.getParent());
1749-+ fc.setCurrentDirectory(folder.getParentFile());
1750- }
1751-- String oldName = folder.getName();
1752-- fd.setFile(oldName);
1753--
1754-- fd.setVisible(true);
1755-- newParentDir = fd.getDirectory();
1756-- newName = fd.getFile();
1757--
1758-- // user canceled selection
1759-- if (newName == null) return false;
1760-- newName = Sketch.checkName(newName);
1761--
1762-- File newFolder = new File(newParentDir, newName);
1763--// String newPath = newFolder.getAbsolutePath();
1764--// String oldPath = folder.getAbsolutePath();
1765--
1766--// if (newPath.equals(oldPath)) {
1767--// return false; // Can't save a sketch over itself
1768--// }
1769--
1770-+ // can't do this, will try to save into itself by default
1771-+ //fc.setSelectedFile(folder);
1772-+ int result = fc.showSaveDialog(editor);
1773-+ if (result == JFileChooser.APPROVE_OPTION) {
1774-+ File selection = fc.getSelectedFile();
1775-+
1776-+ newParentDir = selection.getParent();
1777-+ newName = selection.getName();
1778-+ if(newName==null)
1779-+ return false;
1780-+ newName = Sketch.checkName(newName);
1781-+ newFolder = new File(newParentDir, newName);
1782- // make sure there doesn't exist a .cpp file with that name already
1783- // but ignore this situation for the first tab, since it's probably being
1784- // resaved (with the same name) to another location/folder.
1785-@@ -874,6 +846,7 @@
1786- setUntitled(false);
1787-
1788- // let Editor know that the save was successful
1789-+ }
1790- return true;
1791- }
1792-
1793
1794=== removed file 'debian/patches/launcher.patch'
1795--- debian/patches/launcher.patch 2010-02-12 19:25:26 +0000
1796+++ debian/patches/launcher.patch 1970-01-01 00:00:00 +0000
1797@@ -1,7 +0,0 @@
1798-Launcher script wrapper
1799-diff -ruNp arduino-0018-orig/resources/linux/startup/arduino arduino-0018-changed/resources/linux/startup/arduino
1800---- arduino-0018-orig/resources/linux/startup/arduino 1970-01-01 01:00:00.000000000 +0100
1801-+++ arduino-0018-changed/resources/linux/startup/arduino 2010-01-13 09:55:02.000000000 +0100
1802-@@ -0,0 +1,2 @@
1803-+#!/bin/sh
1804-+java -Dswing.defaultlaf=com.sun.java.swing.plaf.gtk.GTKLookAndFeel -jar /usr/share/java/arduino.jar
1805
1806=== removed file 'debian/patches/linux.Platform.diff'
1807--- debian/patches/linux.Platform.diff 2010-02-12 19:25:26 +0000
1808+++ debian/patches/linux.Platform.diff 1970-01-01 00:00:00 +0000
1809@@ -1,134 +0,0 @@
1810-Fix some hardcoded paths
1811---- arduino-0018+dfsg/src/processing/app/linux/Platform.java 2009-08-12 01:05:18.000000000 +0200
1812-+++ ubuntu-0018/src/processing/app/linux/Platform.java 2010-02-08 11:33:33.000000000 +0100
1813-@@ -22,36 +22,72 @@
1814-
1815- package processing.app.linux;
1816-
1817--import java.io.File;
1818-+import java.io.*;
1819-
1820- import javax.swing.UIManager;
1821-
1822- import processing.app.Preferences;
1823-
1824-+import java.util.*;
1825-+import java.net.*;
1826-+import java.security.*;
1827-+
1828-
1829- /**
1830-- * Used by Base for platform-specific tweaking, for instance finding the
1831-- * sketchbook location using the Windows registry, or OS X event handling.
1832-+ * Used by Base for platform-specific tweaking.
1833- */
1834- public class Platform extends processing.app.Platform {
1835-+ /**
1836-+ * If we are run from an archive the is the absolute path of the
1837-+ * jar-file from which we are loaded.
1838-+ */
1839-+ private File archiveRoot=null;
1840-+ /** The type of distribution we are run from */
1841-+ private String distribution;
1842-+ /** A directory lookup-table for the (distribution-specific) directrories */
1843-+ private Hashtable<String,File> pathTable=new Hashtable<String,File>();
1844-+
1845-+ /**
1846-+ * Iniatializes the Linux Platform.
1847-+ * @throws Exception If we were unable to detect the distribution
1848-+ * type or filesystem staructrue on which we are run. If we get an
1849-+ * Exception here we are unabvle to contine. The IDE should throw
1850-+ * an error and die.
1851-+ */
1852-+ public Platform() throws Exception {
1853-+ /* get the absolute pathn to our application jar-file */
1854-+ URL jarURL=getClass().getProtectionDomain().getCodeSource().getLocation();
1855-+ File jarFile=new File(jarURL.toURI());
1856-+ archiveRoot=jarFile.getParentFile().getParentFile();
1857-+ /* Check the distributuion type for which we a where packaged */
1858-+ InputStream is=this.getClass().getResourceAsStream("/resources/linux/linux.properties");
1859-+ Properties p=new Properties();
1860-+ p.load(is);
1861-+ distribution=p.getProperty("linux.distribution");
1862-+ if(distribution.equals("archive")) {
1863-+ //we are run from an archive
1864-+ pathTable.put("examples",new File(archiveRoot,"examples"));
1865-+ pathTable.put("hardware",new File(archiveRoot,"hardware"));
1866-+ pathTable.put("lib",new File(archiveRoot,"lib"));
1867-+ pathTable.put("libraries",new File(archiveRoot,"libraries"));
1868-+ pathTable.put("reference",new File(archiveRoot,"reference"));
1869-+ pathTable.put("tools",new File(archiveRoot,"hardware/tools"));
1870-+ }
1871-+ else if(distribution.equals("ubuntu")
1872-+ || distribution.equals("debian")) {
1873-+ //this is an Ubuntu/Debian package
1874-+ pathTable.put("examples",new File("/usr/share/doc/arduino/examples"));
1875-+ pathTable.put("hardware",new File("/usr/share/arduino/hardware"));
1876-+ pathTable.put("lib",new File("/usr/share/arduino"));
1877-+ pathTable.put("libraries",new File("/usr/share/arduino/libraries"));
1878-+ pathTable.put("reference",new File("/usr/share/doc/arduino/reference"));
1879-+ pathTable.put("tools",new File("/usr/share/arduino/tools"));
1880-+ }
1881-+ }
1882-
1883-- // TODO Need to be smarter here since KDE people ain't gonna like that GTK.
1884-- // It may even throw a weird exception at 'em for their trouble.
1885- public void setLookAndFeel() throws Exception {
1886-- // Linux is by default even uglier than metal (Motif?).
1887-- // Actually, i'm using native menus, so they're even uglier
1888-- // and Motif-looking (Lesstif?). Ick. Need to fix this.
1889-- //String lfname = UIManager.getCrossPlatformLookAndFeelClassName();
1890-- //UIManager.setLookAndFeel(lfname);
1891--
1892-- // For 0120, trying out the gtk+ look and feel as the default.
1893-- // This is available in Java 1.4.2 and later, and it can't possibly
1894-- // be any worse than Metal. (Ocean might also work, but that's for
1895-- // Java 1.5, and we aren't going there yet)
1896-- //UIManager.setLookAndFeel("com.sun.java.swing.plaf.gtk.GTKLookAndFeel");
1897- }
1898-
1899--
1900- public void openURL(String url) throws Exception {
1901- if (openFolderAvailable()) {
1902- String launcher = Preferences.get("launcher");
1903-@@ -61,7 +97,6 @@
1904- }
1905- }
1906-
1907--
1908- public boolean openFolderAvailable() {
1909- if (Preferences.get("launcher") != null) {
1910- return true;
1911-@@ -103,4 +138,32 @@
1912- System.out.println("not available");
1913- }
1914- }
1915-+
1916-+ /**
1917-+ * Returns a File-object for a path to something in this distribution.
1918-+ * This method implements File/Path lookup for a linux distribution.
1919-+ * @param name this can be the name of a file, directory
1920-+ * or the latter part of a path
1921-+ * @return File a File object for the path starting at the
1922-+ * users work-dir ending with name. The method does not
1923-+ * check wether the file or path exists.
1924-+ */
1925-+ public File getContentFile(String name) {
1926-+ if(distribution==null) {
1927-+ //property wasn't set, we use the default settings
1928-+ return super.getContentFile(name);
1929-+ }
1930-+ /*
1931-+ check wether the request is only for a root-dir or
1932-+ a file.
1933-+ */
1934-+ String [] path=name.split("/",2);
1935-+ if(path.length==1) {
1936-+ //this is a request for a simple root-directory
1937-+ return pathTable.get(path[0]);
1938-+ }
1939-+ //this is a request for a root-diretory plus a filename
1940-+ return new File(pathTable.get(path[0]),path[1]);
1941-+ }
1942-+
1943- }
1944
1945=== removed file 'debian/patches/logo.patch'
1946--- debian/patches/logo.patch 2010-02-12 19:25:26 +0000
1947+++ debian/patches/logo.patch 1970-01-01 00:00:00 +0000
1948@@ -1,696 +0,0 @@
1949-Arduino logo in xpm format
1950-diff -ruNp arduino-0018-orig/resources/icons/arduino.png arduino-0018-changed/resources/icons/arduino.xpm
1951---- arduino-0018-orig/resources/icons/arduino.xpm 2010-02-13 13:09:00.888604994 +0100
1952-+++ arduino-0018-changed/resources/icons/arduino.xpm 2010-02-09 17:22:41.000000000 +0100
1953-@@ -0,0 +1,691 @@
1954-+/* XPM */
1955-+static char * arduino_xpm[] = {
1956-+"32 32 656 2",
1957-+" c None",
1958-+". c #2D7E99",
1959-+"+ c #2D819C",
1960-+"@ c #2D809B",
1961-+"# c #2D7D99",
1962-+"$ c #2C7B96",
1963-+"% c #2C7895",
1964-+"& c #2C7693",
1965-+"* c #2B7491",
1966-+"= c #2B728F",
1967-+"- c #2B708D",
1968-+"; c #2A6E8C",
1969-+"> c #2A6C8A",
1970-+", c #2A6A88",
1971-+"' c #2A6B8A",
1972-+") c #2A6987",
1973-+"! c #296886",
1974-+"~ c #296482",
1975-+"{ c #286381",
1976-+"] c #296583",
1977-+"^ c #2B6D8C",
1978-+"/ c #2B6F8F",
1979-+"( c #2B6E8E",
1980-+"_ c #2B6F8E",
1981-+": c #2B708C",
1982-+"< c #28657E",
1983-+"[ c #27667D",
1984-+"} c #2D829D",
1985-+"| c #2F8AA3",
1986-+"1 c #3093AA",
1987-+"2 c #2E849F",
1988-+"3 c #2E809C",
1989-+"4 c #3193AD",
1990-+"5 c #2F87A3",
1991-+"6 c #2F83A0",
1992-+"7 c #308BA8",
1993-+"8 c #2B708F",
1994-+"9 c #2B6D8D",
1995-+"0 c #2D7697",
1996-+"a c #2C7294",
1997-+"b c #2C6F91",
1998-+"c c #2C7194",
1999-+"d c #2D7195",
2000-+"e c #2B698B",
2001-+"f c #295F80",
2002-+"g c #2A6588",
2003-+"h c #2C6D93",
2004-+"i c #2C6C92",
2005-+"j c #2D7096",
2006-+"k c #2D6F94",
2007-+"l c #2D7093",
2008-+"m c #2C6F8F",
2009-+"n c #275D76",
2010-+"o c #275F76",
2011-+"p c #266073",
2012-+"q c #2F89A3",
2013-+"r c #34A5B9",
2014-+"s c #2D7A98",
2015-+"t c #2E819E",
2016-+"u c #2D7695",
2017-+"v c #2E7797",
2018-+"w c #2B6889",
2019-+"x c #2B6A8B",
2020-+"y c #3185AB",
2021-+"z c #3181A9",
2022-+"A c #3181AB",
2023-+"B c #2C698E",
2024-+"C c #285A7B",
2025-+"D c #275879",
2026-+"E c #2A6389",
2027-+"F c #2E709B",
2028-+"G c #265473",
2029-+"H c #2B658A",
2030-+"I c #2C688D",
2031-+"J c #2B668B",
2032-+"K c #2B6789",
2033-+"L c #2A6584",
2034-+"M c #275D75",
2035-+"N c #28637B",
2036-+"O c #245868",
2037-+"P c #256070",
2038-+"Q c #2D809C",
2039-+"R c #2E86A0",
2040-+"S c #2E829D",
2041-+"T c #2D7E9A",
2042-+"U c #2F87A4",
2043-+"V c #3292AE",
2044-+"W c #2E7A9A",
2045-+"X c #2D7192",
2046-+"Y c #2B6486",
2047-+"Z c #2A6184",
2048-+"` c #295F81",
2049-+" . c #285C7E",
2050-+".. c #285A7C",
2051-+"+. c #28587A",
2052-+"@. c #275678",
2053-+"#. c #275475",
2054-+"$. c #265273",
2055-+"%. c #265170",
2056-+"&. c #254F6D",
2057-+"*. c #254D6B",
2058-+"=. c #295D82",
2059-+"-. c #2A6085",
2060-+";. c #295E81",
2061-+">. c #285D7E",
2062-+",. c #285C7A",
2063-+"'. c #275D79",
2064-+"). c #234F62",
2065-+"!. c #235161",
2066-+"~. c #245A6A",
2067-+"{. c #2D7D9A",
2068-+"]. c #2C7896",
2069-+"^. c #2D7594",
2070-+"/. c #2D7696",
2071-+"(. c #3184A7",
2072-+"_. c #307CA0",
2073-+":. c #2A6284",
2074-+"<. c #2A5E81",
2075-+"[. c #2B5D80",
2076-+"}. c #678AA3",
2077-+"|. c #85A0B4",
2078-+"1. c #86A0B4",
2079-+"2. c #859EB2",
2080-+"3. c #859DB0",
2081-+"4. c #859CAE",
2082-+"5. c #8098AA",
2083-+"6. c #476881",
2084-+"7. c #244A67",
2085-+"8. c #244865",
2086-+"9. c #28577D",
2087-+"0. c #295980",
2088-+"a. c #285A7F",
2089-+"b. c #28597C",
2090-+"c. c #28597B",
2091-+"d. c #296184",
2092-+"e. c #24516A",
2093-+"f. c #224B5D",
2094-+"g. c #235467",
2095-+"h. c #2C7B97",
2096-+"i. c #2D7996",
2097-+"j. c #318AA8",
2098-+"k. c #2C6E8F",
2099-+"l. c #2F779C",
2100-+"m. c #2E739A",
2101-+"n. c #295C80",
2102-+"o. c #2D5C80",
2103-+"p. c #C4D1DB",
2104-+"q. c #FFFFFF",
2105-+"r. c #FCFCFD",
2106-+"s. c #788D9F",
2107-+"t. c #234561",
2108-+"u. c #254D6F",
2109-+"v. c #275277",
2110-+"w. c #285880",
2111-+"x. c #275378",
2112-+"y. c #275579",
2113-+"z. c #254F6E",
2114-+"A. c #224760",
2115-+"B. c #244D66",
2116-+"C. c #235065",
2117-+"D. c #2C7894",
2118-+"E. c #2D7896",
2119-+"F. c #328DAD",
2120-+"G. c #2E7598",
2121-+"H. c #2D6E93",
2122-+"I. c #2E7199",
2123-+"J. c #2E6D97",
2124-+"K. c #28577C",
2125-+"L. c #7995AC",
2126-+"M. c #F5F6F7",
2127-+"N. c #2C4A65",
2128-+"O. c #21405B",
2129-+"P. c #244A6B",
2130-+"Q. c #254D71",
2131-+"R. c #27537A",
2132-+"S. c #254E71",
2133-+"T. c #265175",
2134-+"U. c #234967",
2135-+"V. c #224C62",
2136-+"W. c #2C7492",
2137-+"X. c #2D7494",
2138-+"Y. c #307FA2",
2139-+"Z. c #317DA4",
2140-+"`. c #3077A1",
2141-+" + c #2E6B95",
2142-+".+ c #2D6894",
2143-+"++ c #275478",
2144-+"@+ c #9FB2C2",
2145-+"#+ c #F8F9FA",
2146-+"$+ c #3C5B79",
2147-+"%+ c #355572",
2148-+"&+ c #345370",
2149-+"*+ c #34526D",
2150-+"=+ c #33506B",
2151-+"-+ c #7F91A1",
2152-+";+ c #4B6277",
2153-+">+ c #203C56",
2154-+",+ c #203C55",
2155-+"'+ c #254B6F",
2156-+")+ c #244A6D",
2157-+"!+ c #24496A",
2158-+"~+ c #1F3B52",
2159-+"{+ c #1F3B51",
2160-+"]+ c #21495F",
2161-+"^+ c #2B718E",
2162-+"/+ c #2C6E90",
2163-+"(+ c #2F7A9F",
2164-+"_+ c #3076A0",
2165-+":+ c #2D6A94",
2166-+"<+ c #2D6692",
2167-+"[+ c #2C6490",
2168-+"}+ c #264F72",
2169-+"|+ c #A0B0C0",
2170-+"1+ c #F4F6F7",
2171-+"2+ c #234463",
2172-+"3+ c #224260",
2173-+"4+ c #21405D",
2174-+"5+ c #213E5A",
2175-+"6+ c #203D58",
2176-+"7+ c #697C8E",
2177-+"8+ c #4C6175",
2178-+"9+ c #1E3851",
2179-+"0+ c #1E3850",
2180-+"a+ c #224364",
2181-+"b+ c #254D75",
2182-+"c+ c #234465",
2183-+"d+ c #1E364D",
2184-+"e+ c #20455C",
2185-+"f+ c #2A6D8B",
2186-+"g+ c #2A6989",
2187-+"h+ c #2B698C",
2188-+"i+ c #2E749C",
2189-+"j+ c #2E709D",
2190-+"k+ c #2C6591",
2191-+"l+ c #2B618D",
2192-+"m+ c #2B5E8A",
2193-+"n+ c #25496C",
2194-+"o+ c #9FAEBD",
2195-+"p+ c #21405C",
2196-+"q+ c #203D59",
2197-+"r+ c #203C57",
2198-+"s+ c #203B55",
2199-+"t+ c #1F3953",
2200-+"u+ c #68798A",
2201-+"v+ c #4B5E70",
2202-+"w+ c #1D354B",
2203-+"x+ c #1C344A",
2204-+"y+ c #1C354B",
2205-+"z+ c #1F3B56",
2206-+"A+ c #1F3C59",
2207-+"B+ c #254A71",
2208-+"C+ c #1D3348",
2209-+"D+ c #204359",
2210-+"E+ c #296485",
2211-+"F+ c #2A6487",
2212-+"G+ c #2E6E99",
2213-+"H+ c #2E6B9A",
2214-+"I+ c #2B608B",
2215-+"J+ c #2A5C87",
2216-+"K+ c #2A5883",
2217-+"L+ c #244565",
2218-+"M+ c #9EADBA",
2219-+"N+ c #F4F5F7",
2220-+"O+ c #1F3A54",
2221-+"P+ c #1F3851",
2222-+"Q+ c #1E364F",
2223-+"R+ c #1D354D",
2224-+"S+ c #677786",
2225-+"T+ c #4A5B6D",
2226-+"U+ c #1E3853",
2227-+"V+ c #1B3146",
2228-+"W+ c #1B3145",
2229-+"X+ c #1B3045",
2230-+"Y+ c #1C3146",
2231-+"Z+ c #1D364F",
2232-+"`+ c #1C3044",
2233-+" @ c #1F4156",
2234-+".@ c #296684",
2235-+"+@ c #2C6E93",
2236-+"@@ c #2B658B",
2237-+"#@ c #2D6994",
2238-+"$@ c #2C6592",
2239-+"%@ c #2A5A84",
2240-+"&@ c #295680",
2241-+"*@ c #28547D",
2242-+"=@ c #22415F",
2243-+"-@ c #9EABB8",
2244-+";@ c #F4F5F6",
2245-+">@ c #1D344C",
2246-+",@ c #1C334A",
2247-+"'@ c #1C3148",
2248-+")@ c #667483",
2249-+"!@ c #4A5C6E",
2250-+"~@ c #224369",
2251-+"{@ c #1A2E41",
2252-+"]@ c #1D354F",
2253-+"^@ c #213F62",
2254-+"/@ c #1B3044",
2255-+"(@ c #1F3854",
2256-+"_@ c #1E3F53",
2257-+":@ c #28627F",
2258-+"<@ c #285A7D",
2259-+"[@ c #2B638C",
2260-+"}@ c #28557D",
2261-+"|@ c #28527A",
2262-+"1@ c #264F76",
2263-+"2@ c #9DA9B5",
2264-+"3@ c #1C3249",
2265-+"4@ c #1C3147",
2266-+"5@ c #1B3046",
2267-+"6@ c #1B2F44",
2268-+"7@ c #657380",
2269-+"8@ c #485666",
2270-+"9@ c #192B3F",
2271-+"0@ c #192B3E",
2272-+"a@ c #182A3E",
2273-+"b@ c #192B3D",
2274-+"c@ c #192A3D",
2275-+"d@ c #1A2A3C",
2276-+"e@ c #1E3D51",
2277-+"f@ c #285F7C",
2278-+"g@ c #275574",
2279-+"h@ c #275474",
2280-+"i@ c #2A5C84",
2281-+"j@ c #2A5A85",
2282-+"k@ c #275077",
2283-+"l@ c #264D74",
2284-+"m@ c #254A70",
2285-+"n@ c #9DA8B3",
2286-+"o@ c #1A2E43",
2287-+"p@ c #1A2D41",
2288-+"q@ c #192C40",
2289-+"r@ c #64707E",
2290-+"s@ c #465463",
2291-+"t@ c #18293B",
2292-+"u@ c #18293A",
2293-+"v@ c #1D3756",
2294-+"w@ c #1C324C",
2295-+"x@ c #192939",
2296-+"y@ c #1D3C4F",
2297-+"z@ c #275E7A",
2298-+"A@ c #285979",
2299-+"B@ c #254E6C",
2300-+"C@ c #28577E",
2301-+"D@ c #28557F",
2302-+"E@ c #254B70",
2303-+"F@ c #25496F",
2304-+"G@ c #24466B",
2305-+"H@ c #9CA6B1",
2306-+"I@ c #192C41",
2307-+"J@ c #192B40",
2308-+"K@ c #18293C",
2309-+"L@ c #636F7B",
2310-+"M@ c #465360",
2311-+"N@ c #172738",
2312-+"O@ c #192D44",
2313-+"P@ c #18293E",
2314-+"Q@ c #17273A",
2315-+"R@ c #172636",
2316-+"S@ c #182636",
2317-+"T@ c #1C3B4D",
2318-+"U@ c #2A6286",
2319-+"V@ c #244966",
2320-+"W@ c #275278",
2321-+"X@ c #265079",
2322-+"Y@ c #24476C",
2323-+"Z@ c #23456A",
2324-+"`@ c #224366",
2325-+" # c #1C324A",
2326-+".# c #9BA5AF",
2327-+"+# c #17283A",
2328-+"@# c #172739",
2329-+"## c #636D79",
2330-+"$# c #45515D",
2331-+"%# c #162434",
2332-+"&# c #1B3352",
2333-+"*# c #17293D",
2334-+"=# c #162433",
2335-+"-# c #172433",
2336-+";# c #1C394A",
2337-+"># c #245369",
2338-+",# c #22455C",
2339-+"'# c #254E70",
2340-+")# c #264B73",
2341-+"!# c #234467",
2342-+"~# c #224265",
2343-+"{# c #213F61",
2344-+"]# c #1B3047",
2345-+"^# c #9BA4AD",
2346-+"/# c #F6F7F8",
2347-+"(# c #515E6D",
2348-+"_# c #515D6B",
2349-+":# c #515C6A",
2350-+"<# c #505C69",
2351-+"[# c #505B68",
2352-+"}# c #899099",
2353-+"|# c #454F5B",
2354-+"1# c #152231",
2355-+"2# c #152230",
2356-+"3# c #192B44",
2357-+"4# c #172537",
2358-+"5# c #18283D",
2359-+"6# c #162230",
2360-+"7# c #1B3848",
2361-+"8# c #235066",
2362-+"9# c #224763",
2363-+"0# c #234366",
2364-+"a# c #24466D",
2365-+"b# c #203E60",
2366-+"c# c #203C5C",
2367-+"d# c #1A2D43",
2368-+"e# c #9AA2AB",
2369-+"f# c #444E58",
2370-+"g# c #14212E",
2371-+"h# c #14212D",
2372-+"i# c #353F4A",
2373-+"j# c #1D2935",
2374-+"k# c #15212D",
2375-+"l# c #16212D",
2376-+"m# c #1B3846",
2377-+"n# c #254D70",
2378-+"o# c #224267",
2379-+"p# c #213E60",
2380-+"q# c #9AA1AA",
2381-+"r# c #434D56",
2382-+"s# c #121F2B",
2383-+"t# c #BDC0C4",
2384-+"u# c #FDFEFE",
2385-+"v# c #EAEBEC",
2386-+"w# c #38414B",
2387-+"x# c #151F2B",
2388-+"y# c #1A3645",
2389-+"z# c #214A5F",
2390-+"A# c #234768",
2391-+"B# c #254972",
2392-+"C# c #203C5D",
2393-+"D# c #99A0A9",
2394-+"E# c #F7F7F8",
2395-+"F# c #57606C",
2396-+"G# c #56606A",
2397-+"H# c #565F69",
2398-+"I# c #565E68",
2399-+"J# c #555E67",
2400-+"K# c #8C9298",
2401-+"L# c #424C55",
2402-+"M# c #121E2A",
2403-+"N# c #414B54",
2404-+"O# c #505861",
2405-+"P# c #DFE0E2",
2406-+"Q# c #91969B",
2407-+"R# c #141E29",
2408-+"S# c #151E29",
2409-+"T# c #193544",
2410-+"U# c #21475D",
2411-+"V# c #234264",
2412-+"W# c #24456E",
2413-+"X# c #1F3958",
2414-+"Y# c #1E3858",
2415-+"Z# c #182A3F",
2416-+"`# c #18283C",
2417-+" $ c #999FA7",
2418-+".$ c #F4F4F5",
2419-+"+$ c #14212F",
2420-+"@$ c #14202D",
2421-+"#$ c #131F2B",
2422-+"$$ c #121E2B",
2423-+"%$ c #5F6770",
2424-+"&$ c #414A53",
2425-+"*$ c #111C27",
2426-+"=$ c #26303A",
2427-+"-$ c #F6F6F7",
2428-+";$ c #C1C3C6",
2429-+">$ c #FEFEFE",
2430-+",$ c #6E747A",
2431-+"'$ c #141D28",
2432-+")$ c #193543",
2433-+"!$ c #20445A",
2434-+"~$ c #223F60",
2435-+"{$ c #23436A",
2436-+"]$ c #1F395A",
2437-+"^$ c #1E3655",
2438-+"/$ c #1D3655",
2439-+"($ c #18293D",
2440-+"_$ c #1C3351",
2441-+":$ c #1B314F",
2442-+"<$ c #999FA6",
2443-+"[$ c #131F2C",
2444-+"}$ c #121D29",
2445-+"|$ c #111D28",
2446-+"1$ c #5F666E",
2447-+"2$ c #414952",
2448-+"3$ c #111B25",
2449-+"4$ c #495159",
2450-+"5$ c #A3A7AB",
2451-+"6$ c #767C81",
2452-+"7$ c #141D27",
2453-+"8$ c #131C26",
2454-+"9$ c #141C26",
2455-+"0$ c #193441",
2456-+"a$ c #204258",
2457-+"b$ c #213C5D",
2458-+"c$ c #224066",
2459-+"d$ c #1F3757",
2460-+"e$ c #1D3552",
2461-+"f$ c #1C3452",
2462-+"g$ c #172639",
2463-+"h$ c #162436",
2464-+"i$ c #999EA5",
2465-+"j$ c #F3F4F5",
2466-+"k$ c #121D2A",
2467-+"l$ c #111B26",
2468-+"m$ c #5F656D",
2469-+"n$ c #414850",
2470-+"o$ c #111A24",
2471-+"p$ c #767B81",
2472-+"q$ c #D7D9DB",
2473-+"r$ c #ABAEB1",
2474-+"s$ c #1D242E",
2475-+"t$ c #131A23",
2476-+"u$ c #193340",
2477-+"v$ c #20395A",
2478-+"w$ c #213E64",
2479-+"x$ c #1E3554",
2480-+"y$ c #1C324F",
2481-+"z$ c #1B324F",
2482-+"A$ c #172538",
2483-+"B$ c #162435",
2484-+"C$ c #162233",
2485-+"D$ c #989EA4",
2486-+"E$ c #111B27",
2487-+"F$ c #111A25",
2488-+"G$ c #5F656C",
2489-+"H$ c #40484F",
2490-+"I$ c #101922",
2491-+"J$ c #313941",
2492-+"K$ c #5E646A",
2493-+"L$ c #C3C5C7",
2494-+"M$ c #818489",
2495-+"N$ c #131922",
2496-+"O$ c #19323F",
2497-+"P$ c #1F4056",
2498-+"Q$ c #203858",
2499-+"R$ c #213D62",
2500-+"S$ c #1E3452",
2501-+"T$ c #1C314E",
2502-+"U$ c #1B304E",
2503-+"V$ c #172536",
2504-+"W$ c #17273D",
2505-+"X$ c #17263A",
2506-+"Y$ c #989DA3",
2507-+"Z$ c #F3F4F4",
2508-+"`$ c #121D28",
2509-+" % c #5F646B",
2510-+".% c #40464E",
2511-+"+% c #101822",
2512-+"@% c #363C45",
2513-+"#% c #4C5259",
2514-+"$% c #BCBEC0",
2515-+"%% c #86898E",
2516-+"&% c #19333F",
2517-+"*% c #1F3F54",
2518-+"=% c #1F3756",
2519-+"-% c #213C60",
2520-+";% c #1E3350",
2521-+">% c #1D3252",
2522-+",% c #1B304D",
2523-+"'% c #162232",
2524-+")% c #15212F",
2525-+"!% c #656C75",
2526-+"~% c #A3A7AC",
2527-+"{% c #9CA0A5",
2528-+"]% c #131C27",
2529-+"^% c #131A26",
2530-+"/% c #121925",
2531-+"(% c #121A25",
2532-+"_% c #111822",
2533-+":% c #A2A4A8",
2534-+"<% c #2E343C",
2535-+"[% c #101721",
2536-+"}% c #101821",
2537-+"|% c #888C90",
2538-+"1% c #BEBFC2",
2539-+"2% c #232831",
2540-+"3% c #141922",
2541-+"4% c #1F3F53",
2542-+"5% c #1E3352",
2543-+"6% c #1E3251",
2544-+"7% c #1B2F4B",
2545-+"8% c #1B2F4C",
2546-+"9% c #15202E",
2547-+"0% c #141D2A",
2548-+"a% c #141C28",
2549-+"b% c #131B27",
2550-+"c% c #131A25",
2551-+"d% c #121923",
2552-+"e% c #162134",
2553-+"f% c #141D2D",
2554-+"g% c #121822",
2555-+"h% c #121821",
2556-+"i% c #121820",
2557-+"j% c #131820",
2558-+"k% c #131821",
2559-+"l% c #141821",
2560-+"m% c #19313E",
2561-+"n% c #20475A",
2562-+"o% c #1D2F47",
2563-+"p% c #1F3558",
2564-+"q% c #1D2F4B",
2565-+"r% c #1D3251",
2566-+"s% c #1C3050",
2567-+"t% c #16212F",
2568-+"u% c #16202D",
2569-+"v% c #192942",
2570-+"w% c #162132",
2571-+"x% c #162337",
2572-+"y% c #162033",
2573-+"z% c #131924",
2574-+"A% c #131823",
2575-+"B% c #131822",
2576-+"C% c #12171F",
2577-+"D% c #13171F",
2578-+"E% c #14171F",
2579-+"F% c #1C3C4A",
2580-+"G% c #1C3646",
2581-+"H% c #1E314F",
2582-+"I% c #1D304C",
2583-+"J% c #1E3252",
2584-+"K% c #1C2D47",
2585-+"L% c #182436",
2586-+"M% c #16212E",
2587-+"N% c #151F2C",
2588-+"O% c #162133",
2589-+"P% c #151D2A",
2590-+"Q% c #151D2C",
2591-+"R% c #141B29",
2592-+"S% c #131923",
2593-+"T% c #131721",
2594-+"U% c #131720",
2595-+"V% c #182833",
2596-+"W% c #1F4457",
2597-+"X% c #1F4057",
2598-+"Y% c #1E3F57",
2599-+"Z% c #1E3D53",
2600-+"`% c #1D3D53",
2601-+" & c #1B3646",
2602-+".& c #1A3545",
2603-+"+& c #193443",
2604-+"@& c #193442",
2605-+"#& c #193341",
2606-+"$& c #183240",
2607-+"%& c #18313F",
2608-+"&& c #18313E",
2609-+"*& c #18303D",
2610-+"=& c #18303C",
2611-+"-& c #19303C",
2612-+";& c #1B3C49",
2613-+" ",
2614-+" . + @ # $ % & * = - ; > , ' ) ! ~ { ] ^ / ( _ : < [ ",
2615-+" } | 1 2 3 4 5 6 7 8 9 0 a b c d e f g h i j k l m n o p ",
2616-+" . q | r 2 s t s u v w x y z A B C D E F G H I J K L M N O P ",
2617-+" Q R S T U V W X w Y Z ` ...+.@.#.$.%.&.*.=.-.;.>.,.'.).!.~. ",
2618-+" T S {.].^./.(._.:.<.[.}.|.1.2.3.4.5.6.7.8.9.0.a.b.c.d.e.f.g. ",
2619-+" h.{.i.j.k.K l.m.n.o.p.q.q.q.q.q.q.q.r.s.t.u.v.w.x.y.z.A.B.C. ",
2620-+" D.E.s F.G.H.I.J.K.L.q.q.q.q.q.q.q.q.q.M.N.O.P.Q.R.S.T.U.y.V. ",
2621-+" * W.X.Y.Z.`. +.+++@+q.#+$+%+&+*+=+-+q.q.;+>+,+'+)+)+!+~+{+]+ ",
2622-+" ^+_ /+(+_+:+<+[+}+|+q.1+2+3+4+5+6+7+q.q.8+9+0+a+b+c+c+d+d+e+ ",
2623-+" f+g+h+i+j+k+l+m+n+o+q.1+p+q+r+s+t+u+q.q.v+w+x+y+z+A+B+C+C+D+ ",
2624-+" ) E+F+G+H+I+J+K+L+M+q.N+r+O+P+Q+R+S+q.q.T+U+V+W+X+Y+Z+`+`+ @ ",
2625-+" .@+@@@#@$@%@&@*@=@-@q.;@9+Q+>@,@'@)@q.q.!@~@V+{@{@]@^@/@(@_@ ",
2626-+" :@C <@[@I+}@|@1@q+2@q.;@>@3@4@5@6@7@q.q.8@9@0@a@b@c@c@d@d@e@ ",
2627-+" f@g@h@i@j@k@l@m@O+n@q.;@4@X+o@p@q@r@q.q.s@t@u@u@v@w@x@x@x@y@ ",
2628-+" z@A@B@C@D@E@F@G@Q+H@q.;@o@I@J@a@K@L@q.q.M@N@O@N@P@Q@R@S@S@T@ ",
2629-+" :@U@V@W@X@Y@Z@`@ #.#q.;@J@a@t@+#@###q.q.$#%#&#*#=#=#=#-#-#;# ",
2630-+" >#,#'#E@)#!#~#{#]#^#q./#(#_#:#<#[#}#q.q.|#1#2#2#2#3#4#5#6#7# ",
2631-+" 8#9#)+)#0#a#b#c#d#e#q.q.q.q.q.q.q.q.q.q.f#g#h#h#i#j#k#l#l#m# ",
2632-+" V.n#Y@0#o#p#^@d#J@q#q.q.q.q.q.q.q.q.q.q.r#s#h#t#u#v#w#x#x#y# ",
2633-+" z#A#B#p#p#C#5@J@K@D#q.E#F#G#H#I#J#K#q.q.L#M#N#q.O#P#Q#R#S#T# ",
2634-+" U#V#W#C#X#Y#J@Z#`# $q..$+$@$#$$$M#%$q.q.&$*$=$-$;$>$,$'$'$)$ ",
2635-+" !$~${$]$^$/$($_$:$<$q..$[$$$M#}$|$1$q.q.2$3$3$4$5$6$7$8$9$0$ ",
2636-+" a$b$c$d$e$f$Q@g$h$i$q.j$$$k$|$*$l$m$q.q.n$o$o$p$q$r$s$t$t$u$ ",
2637-+" @v$w$x$y$z$A$B$C$D$q.j$}$*$E$F$F$G$q.q.H$I$J$-$K$L$M$N$N$O$ ",
2638-+" P$Q$R$S$T$U$V$W$X$Y$q.Z$`$E$F$o$o$ %q.q..%+%@%-$#%$%%%N$N$&% ",
2639-+" *%=%-%;%>%,%g$'%)%!%~%{%]%^%/%(%_%.%:%:%<%[%}%|%v#1%2%N$3%O$ ",
2640-+" 4%Q$d$5%6%7%8%6#9%x#0%a%b%c%d%e%f%g%h%h%i%i%i%i%i%j%j%k%l%m% ",
2641-+" n%o%;%p%q%r%s%t%u%v%w%x%y%z%N$c%A%B%k%j%j%C%C%C%C%D%D%D%E%F% ",
2642-+" G%H%I%J%K%L%M%N%O%P%Q%R%S%B%B%T%U%D%C%C%C%C%C%C%D%D%E%V% ",
2643-+" W%X%Y%Z%`% &.&+&@&#&$&%&%&&&*&*&=&=&=&=&=&=&=&=&-&;& ",
2644-+" "};
2645
2646=== modified file 'debian/patches/series'
2647--- debian/patches/series 2010-02-12 19:25:26 +0000
2648+++ debian/patches/series 2010-04-11 15:27:18 +0000
2649@@ -1,11 +1,2 @@
2650-launcher.patch
2651-desktop-icon.patch
2652-logo.patch
2653-about-into-themedir.patch
2654-update-regex-library.patch
2655-linux.Platform.diff
2656-avrdude-paths.patch
2657-fix-locale.patch
2658-fix-openfiledialog.patch
2659-fix-savefiledialog.patch
2660-adopt-avrdude-arduino-programmer-type.patch
2661+wrapper_for_deb.patch
2662+convert_to_debian_oro.patch
2663
2664=== removed file 'debian/patches/update-regex-library.patch'
2665--- debian/patches/update-regex-library.patch 2010-02-12 19:25:26 +0000
2666+++ debian/patches/update-regex-library.patch 1970-01-01 00:00:00 +0000
2667@@ -1,806 +0,0 @@
2668---- 0018/app/src/processing/app/preproc/PdePreprocessor.java 2010-02-04 12:22:52.000000000 +0100
2669-+++ ubuntu-0018/src/processing/app/preproc/PdePreprocessor.java 2010-02-14 12:15:55.000000000 +0100
2670-@@ -1,8 +1,7 @@
2671--/* -*- mode: jde; c-basic-offset: 2; indent-tabs-mode: nil -*- */
2672--
2673- /*
2674-- PdePreprocessor - wrapper for default ANTLR-generated parser
2675-- Part of the Wiring project - http://wiring.org.co
2676-+ PdePreprocessor - Generate C++ code from Arduino Sketches
2677-+
2678-+ Copyright (c) 2010 Eberhard Fahle <e.fahle@wayoda.org>
2679-
2680- Copyright (c) 2004-05 Hernando Barragan
2681-
2682-@@ -35,317 +34,443 @@
2683- import java.io.*;
2684- import java.util.*;
2685-
2686--import com.oroinc.text.regex.*;
2687--
2688-+import java.util.regex.*;
2689-
2690- /**
2691-- * Class that orchestrates preprocessing p5 syntax into straight Java.
2692-+ * Class that generates valid C++ code from an Arduino Sketch file.
2693-+ * This is rewrite of the original code imported from wiring/processing
2694-+ * that is not using the oro.jar any more.
2695- */
2696- public class PdePreprocessor {
2697-- // stores number of built user-defined function prototypes
2698-- public int prototypeCount = 0;
2699--
2700-- // stores number of included library headers written
2701-- // we always write one header: WProgram.h
2702-- public int headerCount = 1;
2703--
2704-- List prototypes;
2705--
2706--
2707--
2708--
2709-- String[] defaultImports;
2710--
2711-- // these ones have the .* at the end, since a class name might be at the end
2712-- // instead of .* which would make trouble other classes using this can lop
2713-- // off the . and anything after it to produce a package name consistently.
2714-- //public String extraImports[];
2715-- ArrayList<String> programImports;
2716--
2717-- // imports just from the code folder, treated differently
2718-- // than the others, since the imports are auto-generated.
2719-- ArrayList<String> codeFolderImports;
2720--
2721-- String indent;
2722--
2723-- PrintStream stream;
2724-- String program;
2725-- String buildPath;
2726-- String name;
2727--
2728--
2729-- /**
2730-- * Setup a new preprocessor.
2731-- */
2732-- public PdePreprocessor() { }
2733--
2734-- public int writePrefix(String program, String buildPath,
2735-- String name, String codeFolderPackages[])
2736-- throws FileNotFoundException {
2737-- this.buildPath = buildPath;
2738-- this.name = name;
2739--
2740-- int tabSize = Preferences.getInteger("editor.tabs.size");
2741-- char[] indentChars = new char[tabSize];
2742-- Arrays.fill(indentChars, ' ');
2743-- indent = new String(indentChars);
2744--
2745-- // if the program ends with no CR or LF an OutOfMemoryError will happen.
2746-- // not gonna track down the bug now, so here's a hack for it:
2747-- // http://dev.processing.org/bugs/show_bug.cgi?id=5
2748-- program += "\n";
2749--
2750-- // if the program ends with an unterminated multi-line comment,
2751-- // an OutOfMemoryError or NullPointerException will happen.
2752-- // again, not gonna bother tracking this down, but here's a hack.
2753-- // http://dev.processing.org/bugs/show_bug.cgi?id=16
2754-- Sketch.scrubComments(program);
2755-- // this returns the scrubbed version, but more important for this
2756-- // function, it'll check to see if there are errors with the comments.
2757-+ // stores number of built user-defined function prototypes
2758-+ public int prototypeCount = 0;
2759-
2760-- if (Preferences.getBoolean("preproc.substitute_unicode")) {
2761-- // check for non-ascii chars (these will be/must be in unicode format)
2762-- char p[] = program.toCharArray();
2763-- int unicodeCount = 0;
2764-- for (int i = 0; i < p.length; i++) {
2765-- if (p[i] > 127) unicodeCount++;
2766-- }
2767-- // if non-ascii chars are in there, convert to unicode escapes
2768-- if (unicodeCount != 0) {
2769-- // add unicodeCount * 5.. replacing each unicode char
2770-- // with six digit uXXXX sequence (xxxx is in hex)
2771-- // (except for nbsp chars which will be a replaced with a space)
2772-- int index = 0;
2773-- char p2[] = new char[p.length + unicodeCount*5];
2774-- for (int i = 0; i < p.length; i++) {
2775-- if (p[i] < 128) {
2776-- p2[index++] = p[i];
2777-+ // stores number of included library headers written
2778-+ // we always write one header: WProgram.h
2779-+ public int headerCount = 1;
2780-+ //the prototypes tha are generated by the preprocessor
2781-+ ArrayList<String> prototypes;
2782-
2783-- } else if (p[i] == 160) { // unicode for non-breaking space
2784-- p2[index++] = ' ';
2785-+ // these ones have the .* at the end, since a class name might be at the end
2786-+ // instead of .* which would make trouble other classes using this can lop
2787-+ // off the . and anything after it to produce a package name consistently.
2788-+ //public String extraImports[];
2789-+ ArrayList<String> programImports;
2790-
2791-- } else {
2792-- int c = p[i];
2793-- p2[index++] = '\\';
2794-- p2[index++] = 'u';
2795-- char str[] = Integer.toHexString(c).toCharArray();
2796-- // add leading zeros, so that the length is 4
2797-- //for (int i = 0; i < 4 - str.length; i++) p2[index++] = '0';
2798-- for (int m = 0; m < 4 - str.length; m++) p2[index++] = '0';
2799-- System.arraycopy(str, 0, p2, index, str.length);
2800-- index += str.length;
2801-- }
2802-- }
2803-- program = new String(p2, 0, index);
2804-- }
2805-- }
2806-+ PrintStream stream;
2807-+ String program;
2808-+ String buildPath;
2809-+ String name;
2810-
2811-- // These may change in-between (if the prefs panel adds this option)
2812-- // so grab them here on construction.
2813-- String prefsLine = Preferences.get("preproc.imports");
2814-- defaultImports = PApplet.splitTokens(prefsLine, ", ");
2815-
2816-- //String importRegexp = "(?:^|\\s|;)(import\\s+)(\\S+)(\\s*;)";
2817-- String importRegexp = "^\\s*#include\\s+[<\"](\\S+)[\">]";
2818-- programImports = new ArrayList<String>();
2819-+ /**
2820-+ * Setup a new preprocessor.
2821-+ */
2822-+ public PdePreprocessor() { }
2823-
2824-- String[][] pieces = PApplet.matchAll(program, importRegexp);
2825-+ /**
2826-+ * Writes out the head of the c++ code generated for a sketch.
2827-+ * Called from processing.app.Sketch.
2828-+ * @param program the concatenated code from all tabs containing pde-files
2829-+ * @param buildPath the path into which the processed pde-code is to be written
2830-+ * @param name the name of the sketch
2831-+ * @param codeFolderPackages unused param (leftover from processing)
2832-+ */
2833-+ public int writePrefix(String program, String buildPath,
2834-+ String name, String codeFolderPackages[])
2835-+ throws FileNotFoundException {
2836-+ this.buildPath = buildPath;
2837-+ this.name = name;
2838-
2839-- if (pieces != null)
2840-- for (int i = 0; i < pieces.length; i++)
2841-- programImports.add(pieces[i][1]); // the package name
2842-+ // if the program ends with no CR or LF an OutOfMemoryError will happen.
2843-+ // not gonna track down the bug now, so here's a hack for it:
2844-+ // http://dev.processing.org/bugs/show_bug.cgi?id=5
2845-+ program += "\n";
2846-
2847-- codeFolderImports = new ArrayList<String>();
2848--// if (codeFolderPackages != null) {
2849--// for (String item : codeFolderPackages) {
2850--// codeFolderImports.add(item + ".*");
2851--// }
2852--// }
2853-+ // if the program ends with an unterminated multi-line comment,
2854-+ // an OutOfMemoryError or NullPointerException will happen.
2855-+ // again, not gonna bother tracking this down, but here's a hack.
2856-+ // http://dev.processing.org/bugs/show_bug.cgi?id=16
2857-+ /*
2858-+ FIXME : The major fix for this bug is to move this method
2859-+ from the Sketch class into this one here, since PdePreprocessor
2860-+ is the only user of the method.
2861-+ And while we are at it, we can fix the bug mentioned here as well
2862-+ */
2863-+ /*
2864-+ This will not actually scrub the comments from the program
2865-+ code as you might expect, it will simply check if the comments
2866-+ are syntactically intakt. If not scrubComments will fire an
2867-+ IllegalArgumentException which is propagated up to the top level.
2868-+ */
2869-+ scrubComments(program);
2870-+ if (Preferences.getBoolean("preproc.substitute_unicode")) {
2871-+ // check for non-ascii chars (these will be/must be in unicode format)
2872-+ program=replaceUnicode(program);
2873-+ }
2874-+ programImports=getIncludes(program);
2875-
2876-- prototypes = new ArrayList();
2877--
2878-- try {
2879-- prototypes = prototypes(program);
2880-- } catch (MalformedPatternException e) {
2881-- System.out.println("Internal error while pre-processing; " +
2882-- "not generating function prototypes.\n\n" + e);
2883-- }
2884--
2885-- // store # of prototypes so that line number reporting can be adjusted
2886-- prototypeCount = prototypes.size();
2887-+ try {
2888-+ prototypes = prototypes(program);
2889-+ } catch (PatternSyntaxException e) {
2890-+ System.out.println("Internal error while pre-processing; " +
2891-+ "not generating function prototypes.\n\n" + e);
2892-+ }
2893-+ // store # of prototypes so that line number reporting can be adjusted
2894-+ prototypeCount = prototypes.size();
2895-
2896-- // do this after the program gets re-combobulated
2897-- this.program = program;
2898--
2899-- // output the code
2900-- File streamFile = new File(buildPath, name + ".cpp");
2901-- stream = new PrintStream(new FileOutputStream(streamFile));
2902-+ // do this after the program gets re-combobulated
2903-+ this.program = program;
2904-
2905-- return headerCount + prototypeCount;
2906-- }
2907-+ // output the code
2908-+ File streamFile = new File(buildPath, name + ".cpp");
2909-+ stream = new PrintStream(new FileOutputStream(streamFile));
2910-+ return headerCount + prototypeCount;
2911-+ }
2912-
2913-- /**
2914-- * preprocesses a pde file and write out a java file
2915-- * @return the classname of the exported Java
2916-- */
2917-- //public String write(String program, String buildPath, String name,
2918-- // String extraImports[]) throws java.lang.Exception {
2919-- public String write() throws java.lang.Exception {
2920-- writeProgram(stream, program, prototypes);
2921-- writeFooter(stream);
2922-- stream.close();
2923-+ /**
2924-+ * Write the preprocessed pde file to disk.
2925-+ * Somewhat stupid to do it that way :
2926-+ * Open the printstream in preprocess and colse it in here??
2927-+ * But we want to keep the original signatures for the methods,
2928-+ * so what the hack...
2929-+ * @return the classname of the exported sketch
2930-+ */
2931-+ public String write() throws java.lang.Exception {
2932-+ writeProgram(stream, program, prototypes);
2933-+ writeFooter(stream);
2934-+ stream.close();
2935-
2936-- return name;
2937-- }
2938-+ return name;
2939-+ }
2940-
2941-- // Write the pde program to the cpp file
2942-- protected void writeProgram(PrintStream out, String program, List prototypes) {
2943-- int prototypeInsertionPoint = firstStatement(program);
2944--
2945-- out.print(program.substring(0, prototypeInsertionPoint));
2946-- out.print("#include \"WProgram.h\"\n");
2947-+ // Write the pde program to the cpp file
2948-+ protected void writeProgram(PrintStream out, String program, List prototypes) {
2949-+ int prototypeInsertionPoint=getPrototypeLocation(program);
2950-+ out.print(program.substring(0, prototypeInsertionPoint));
2951-+ out.print("#include \"WProgram.h\"\n");
2952-
2953-- // print user defined prototypes
2954-- for (int i = 0; i < prototypes.size(); i++) {
2955-- out.print(prototypes.get(i) + "\n");
2956-+ // print user defined prototypes
2957-+ for (int i = 0; i < prototypes.size(); i++) {
2958-+ out.print(prototypes.get(i) + "\n");
2959-+ }
2960-+ out.print(program.substring(prototypeInsertionPoint));
2961- }
2962--
2963-- out.print(program.substring(prototypeInsertionPoint));
2964-- }
2965--
2966--
2967-- /**
2968-- * Write any necessary closing text.
2969-- *
2970-- * @param out PrintStream to write it to.
2971-- */
2972-- protected void writeFooter(PrintStream out) throws java.lang.Exception {}
2973--
2974--
2975-- public ArrayList<String> getExtraImports() {
2976-- return programImports;
2977-- }
2978-
2979-
2980-+ /**
2981-+ * Write any necessary closing text.
2982-+ * @param out PrintStream to write it to.
2983-+ */
2984-+ protected void writeFooter(PrintStream out) throws java.lang.Exception {}
2985-
2986-
2987-+ public ArrayList<String> getExtraImports() {
2988-+ return programImports;
2989-+ }
2990-
2991-- /**
2992-- * Returns the index of the first character that's not whitespace, a comment
2993-- * or a pre-processor directive.
2994-- */
2995-- public int firstStatement(String in) {
2996-- PatternMatcherInput input = new PatternMatcherInput(in);
2997-- PatternCompiler compiler = new Perl5Compiler();
2998-- PatternMatcher matcher = new Perl5Matcher();
2999-- Pattern pattern = null;
3000-+ /**
3001-+ * Returns the index of the first character that is not a whitespace char
3002-+ * or a pre-processor directive.
3003-+ * @param in the String to be processed
3004-+ * @return int the postion where the prototypes need to be filled in
3005-+ */
3006-+ private int getPrototypeLocation(String in) {
3007-+ Pattern pattern = null;
3008-+ Matcher matcher =null;
3009-
3010-- try {
3011-- pattern = compiler.compile(
3012-- // XXX: doesn't properly handle special single-quoted characters
3013-- // whitespace
3014-- "\\s+" + "|" +
3015-- // multi-line comment
3016-- "(/\\*[^*]*(?:\\*(?!/)[^*]*)*\\*/)" + "|" +
3017-- // single-line comment
3018-- "(//.*?$)" + "|" +
3019-- // pre-processor directive
3020-- "(#(?:\\\\\\n|.)*)",
3021-- Perl5Compiler.MULTILINE_MASK);
3022-- } catch (MalformedPatternException e) {
3023-- throw new RuntimeException("Internal error in firstStatement()", e);
3024-- }
3025-+ try {
3026-+ /* Define a pattern that returns the index of the the first character that
3027-+ is not
3028-+ - Whitespace
3029-+ - A preprocessor directive (i.e. a line starting with #)
3030-+ */
3031-+ String whiteSpacePattern="(\\G\\s+)";
3032-+ String preProcessorDirective="(\\G#(?:\\\\\\n|.)*)";
3033-+ String patternString=whiteSpacePattern+"|"+preProcessorDirective;
3034-+ pattern=Pattern.compile(patternString,Pattern.MULTILINE);
3035-
3036-- int i = 0;
3037-- while (matcher.matchesPrefix(input, pattern)) {
3038-- i = matcher.getMatch().endOffset(0);
3039-- input.setCurrentOffset(i);
3040-+ } catch (PatternSyntaxException pse) {
3041-+ throw new RuntimeException("Internal error in firstStatement()", pse);
3042-+ }
3043-+ //create a matcher for our input
3044-+ matcher=pattern.matcher(in);
3045-+ int position=0;
3046-+ while(matcher.find()) {
3047-+ //rest of input started with a match
3048-+ //postion is now behind the last char matched so far
3049-+ position=matcher.end();
3050-+ }
3051-+ return position;
3052- }
3053--
3054-- return i;
3055-- }
3056-
3057-- /**
3058-- * Strips comments, pre-processor directives, single- and double-quoted
3059-- * strings from a string.
3060-- * @param in the String to strip
3061-- * @return the stripped String
3062-- */
3063-- public String strip(String in) throws MalformedPatternException {
3064-- PatternCompiler compiler = new Perl5Compiler();
3065-- PatternMatcher matcher = new Perl5Matcher();
3066-- Pattern pattern = compiler.compile(
3067-- // XXX: doesn't properly handle special single-quoted characters
3068-- // single-quoted character
3069-- "('.')" + "|" +
3070-- // double-quoted string
3071-- "(\"(?:[^\"\\\\]|\\\\.)*\")" + "|" +
3072-- // multi-line comment
3073-- "(/\\*[^*]*(?:\\*(?!/)[^*]*)*\\*/)" + "|" +
3074-- // single-line comment
3075-- "(//.*?$)" + "|" +
3076-- // pre-processor directive
3077-- "(^\\s*#.*?$)",
3078-- Perl5Compiler.MULTILINE_MASK);
3079--
3080-- while (matcher.contains(in, pattern)) {
3081-- MatchResult result = matcher.getMatch();
3082-- // XXX: should preserve newlines in the result so that line numbers of
3083-- // the stripped string correspond to those in the original source.
3084-- in = in.substring(0, result.beginOffset(0)) + " " + in.substring(result.endOffset(0));
3085-+ /**
3086-+ * Strips pre-processor directives, single- and double-quoted
3087-+ * strings from static strings and comments from the input.
3088-+ * @param in the String to be processed
3089-+ * @return the stripped String
3090-+ */
3091-+ public String strip(String in) {
3092-+ //define the parts to be stripped
3093-+ String quotedChar="('.')";
3094-+ String quotedString="(\"(?:[^\"\\\\]|\\\\.)*\")";
3095-+ String emptyComments="(//\\s*?$)|(/\\*\\s*?\\*/)";
3096-+ String preProcessorDirective="(^\\s*#.*?$)";
3097-+ String patternString=quotedChar+"|"+
3098-+ quotedString+"|"+
3099-+ emptyComments+"|"+
3100-+ preProcessorDirective;
3101-+ Pattern pattern=Pattern.compile(patternString,Pattern.MULTILINE);
3102-+ //Remove all content from the comments leaving the empty tags
3103-+ Matcher matcher=pattern.matcher(scrubComments(in));
3104-+ return matcher.replaceAll(" ");
3105- }
3106-+
3107-+ /**
3108-+ * Removes the contents of all top-level curly brace pairs {}.
3109-+ * @param in the String to collapse
3110-+ * @return the collapsed String
3111-+ */
3112-+ private String collapseBraces(String in) {
3113-+ StringBuffer buffer = new StringBuffer();
3114-+ int nesting = 0;
3115-+ int start = 0;
3116-
3117-- return in;
3118-- }
3119--
3120-- /**
3121-- * Removes the contents of all top-level curly brace pairs {}.
3122-- * @param in the String to collapse
3123-- * @return the collapsed String
3124-- */
3125-- private String collapseBraces(String in) {
3126-- StringBuffer buffer = new StringBuffer();
3127-- int nesting = 0;
3128-- int start = 0;
3129-+ // XXX: need to keep newlines inside braces so we can determine the line
3130-+ // number of a prototype
3131-+ for (int i = 0; i < in.length(); i++) {
3132-+ if (in.charAt(i) == '{') {
3133-+ if (nesting == 0) {
3134-+ buffer.append(in.substring(start, i + 1)); // include the '{'
3135-+ }
3136-+ nesting++;
3137-+ }
3138-+ if (in.charAt(i) == '}') {
3139-+ nesting--;
3140-+ if (nesting == 0) {
3141-+ start = i; // include the '}'
3142-+ }
3143-+ }
3144-+ }
3145-+ buffer.append(in.substring(start));
3146-
3147-- // XXX: need to keep newlines inside braces so we can determine the line
3148-- // number of a prototype
3149-- for (int i = 0; i < in.length(); i++) {
3150-- if (in.charAt(i) == '{') {
3151-- if (nesting == 0) {
3152-- buffer.append(in.substring(start, i + 1)); // include the '{'
3153-- }
3154-- nesting++;
3155-- }
3156-- if (in.charAt(i) == '}') {
3157-- nesting--;
3158-- if (nesting == 0) {
3159-- start = i; // include the '}'
3160-- }
3161-- }
3162-+ return buffer.toString();
3163- }
3164-+
3165-+ /**
3166-+ * Searches for function definitions in the pde-code and
3167-+ * generates a prototype for it.
3168-+ * @param in the code to be scanned
3169-+ * @return ArrayList<String> a list of the prototypes for the functions.
3170-+ */
3171-+ public ArrayList<String> prototypes(String in) throws PatternSyntaxException {
3172-+ in = collapseBraces(strip(in));
3173-
3174-- buffer.append(in.substring(start));
3175-+ // XXX: doesn't handle ... varargs
3176-+ // XXX: doesn't handle function pointers
3177-+ Pattern pattern =
3178-+ Pattern.compile("[\\w\\[\\]\\*]+"+
3179-+ "\\s+"+
3180-+ "[&\\[\\]\\*\\w\\s]+"+
3181-+ "\\([&,\\[\\]\\*\\w\\s]*\\)"+
3182-+ "(?=\\s*\\{)");
3183-+ ArrayList<String>matches = new ArrayList<String>();
3184-+ Matcher matcher=pattern.matcher(in);
3185-+ while(matcher.find()) {
3186-+ matches.add(matcher.group(0)+";");
3187-+ }
3188-+ return matches;
3189-+ }
3190-+
3191-+ /**
3192-+ * Replaces all (character-)content of code comments in a source
3193-+ * with space chars. This method serves two purposes:</br>
3194-+ * It checks wether all multiline-comments are syntactically
3195-+ * correct. (Opening and closing tags match)</br>
3196-+ * It removes all the content so the preprocessor can use less
3197-+ * complex regex expressions when generating C++ code.
3198-+ * This method used to be a public static member of class Sketch, but
3199-+ * since only the PdePreprocessor uses this method this
3200-+ * really doesn't make sense. I made this a private function in here.
3201-+ * @param source the String for which the comments
3202-+ * are to be replaced
3203-+ * @return String the code but with the all
3204-+ * code coments replaced by space chars
3205-+ * @throws IllegalArgumentException if there are
3206-+ * underterminated commments in the String.
3207-+ */
3208-+ private String scrubComments(String source)
3209-+ throws IllegalArgumentException {
3210-+ StringBuilder sb=new StringBuilder(source.length());
3211-+ /*
3212-+ we will replace a few chars with unicode code points
3213-+ from the private use section since it makes
3214-+ parsing the source sooo much easier
3215-+ */
3216-+ String escapedQuote="\uE000";
3217-+ String escapedSCStart="\uE001";
3218-+ String escapedMCStart="\uE002";
3219-+ String escapedMCEnd="\uE003";
3220-+ String escapedDoubleBackSlash="\uE004";
3221-+ //replace all double backslashs '\\'
3222-+ source=source.replaceAll("\\\\\\\\",escapedDoubleBackSlash);
3223-+ //replace all escaped double-quotes '\"'
3224-+ source=source.replaceAll("\\\\\"",escapedQuote);
3225-+ //replace single line comment start '//'
3226-+ source=source.replaceAll("//",escapedSCStart);
3227-+ //replace multiline line comment start '/*'
3228-+ source=source.replaceAll("/\\*",escapedMCStart);
3229-+ //replace multiline line comment end '*/'
3230-+ source=source.replaceAll("\\*/",escapedMCEnd);
3231-
3232-- return buffer.toString();
3233-- }
3234-+ //true when we are inside a static String definition
3235-+ boolean quoted=false;
3236-+ //true when inside a singleline comment
3237-+ boolean sc=false;
3238-+ //true when inside a multiline comment
3239-+ boolean mc=false;
3240-+ int len=source.length();
3241-+ int srcIndex=0;
3242-+ char c;
3243-+ while(srcIndex<len) {
3244-+ c=source.charAt(srcIndex);
3245-+ if(sc) {
3246-+ //we are in a single line comment
3247-+ if(c!='\n') {
3248-+ //its not the end of the comment yet
3249-+ sb.append(' ');
3250-+ }
3251-+ else {
3252-+ //we reached the end of the comment
3253-+ sc=false;
3254-+ sb.append('\n');
3255-+ }
3256-+ }
3257-+ else if(mc) {
3258-+ //we are inside a multiline comment ...
3259-+ if(c=='\uE003') {
3260-+ //... and found the end of it
3261-+ sb.append("*/");
3262-+ mc=false;
3263-+ }
3264-+ else if(c!='\n') {
3265-+ //just a char in a comment
3266-+ sb.append(' ');
3267-+ }
3268-+ else {
3269-+ //we have to keep the newlines
3270-+ sb.append("\n");
3271-+ }
3272-+ }
3273-+ else if(quoted) {
3274-+ if(c=='"') {
3275-+ //This is the end of the quote
3276-+ quoted=false;
3277-+ sb.append("\"");
3278-+ }
3279-+ else {
3280-+ /* We are in a quote and dont care what we find.
3281-+ It could be a static string with a comment
3282-+ in it them.
3283-+ */
3284-+ sb.append(c);
3285-+ }
3286-+ }
3287-+ else if(c=='"') {
3288-+ //This is the beginning of a quote
3289-+ quoted=true;
3290-+ sb.append("\"");
3291-+ }
3292-+ else if(c=='\uE001') {
3293-+ //found the start of a single line comment
3294-+ sc=true;
3295-+ sb.append("//");
3296-+ }
3297-+ else if(c=='\uE002') {
3298-+ //found the start of multiline comment
3299-+ mc=true;
3300-+ sb.append("/*");
3301-+ }
3302-+ else if(c=='\uE003' && !mc) {
3303-+ /*
3304-+ We found the end of multiline comment
3305-+ but never saw the start (/*) for it
3306-+ */
3307-+ throw new RuntimeException("Found end tag \"*/\" for multi-line comment"+
3308-+ " without start tag \"/*\"");
3309-+ }
3310-+ else {
3311-+ //this just a character on its own
3312-+ sb.append(c);
3313-+ }
3314-+ srcIndex++;
3315-+ }
3316-+ if(mc) {
3317-+ throw new RuntimeException("File ends before multi-line comment"
3318-+ +" is terminated with end tag \"*/\" ");
3319-+ }
3320-+ String retval=sb.toString();
3321-+ /*
3322-+ Undo the replacement of the double backslashs
3323-+ and the escaped double quotes
3324-+ */
3325-+ // System.out.println(retval);
3326-+ retval=retval.replaceAll(escapedQuote,"\\\\\"");
3327-+ retval=retval.replaceAll(escapedDoubleBackSlash,"\\\\\\\\");
3328-+ return retval;
3329-+ }
3330-+
3331-+ /**
3332-+ * Searches for non ascii-chars and replaces
3333-+ * them with unicode constants.
3334-+ * @param source the contents of the pde source
3335-+ * @return String the content with non-ascii chars turned into unicode
3336-+ */
3337-+ private String replaceUnicode(String source) {
3338-+ StringBuilder sb=new StringBuilder();
3339-+ int len=source.length();
3340-+ int srcIndex=0;
3341-+ char c;
3342-+ while(srcIndex<len) {
3343-+ c=source.charAt(srcIndex);
3344-+ if(c>127) {
3345-+ //we have some unicode here
3346-+ StringBuilder us=new StringBuilder("\\u0000");
3347-+ String hex=Integer.toString((int)c,16);
3348-+ for(int i=hex.length()-1;i>=0;i--) {
3349-+ us.setCharAt(us.length()-1-i,hex.charAt(i));
3350-+ }
3351-+ sb.append(us);
3352-+ }
3353-+ else {
3354-+ sb.append(c);
3355-+ }
3356-+ srcIndex++;
3357-+ }
3358-+ return sb.toString();
3359-+ }
3360-
3361-- public List prototypes(String in) throws MalformedPatternException {
3362-- in = collapseBraces(strip(in));
3363-+ /**
3364-+ * Find all the lines in a source that are c-style includes
3365-+ * @param source the String to be scanned for include-statements
3366-+ * @return ArrayList<String> an ArrayList withe the names of include-statements
3367-+ */
3368-+ private ArrayList<String> getIncludes(String source) {
3369-+ Pattern pattern=null;
3370-+ Matcher matcher=null;
3371-+ ArrayList<String> includes=new ArrayList<String>();
3372-
3373-- PatternMatcherInput input = new PatternMatcherInput(in);
3374-- PatternCompiler compiler = new Perl5Compiler();
3375-- PatternMatcher matcher = new Perl5Matcher();
3376-- // XXX: doesn't handle ... varargs
3377-- // XXX: doesn't handle function pointers
3378-- Pattern pattern = compiler.compile(
3379-- "[\\w\\[\\]\\*]+\\s+[\\[\\]\\*\\w\\s]+\\([,\\[\\]\\*\\w\\s]*\\)(?=\\s*\\{)");
3380-- List matches = new ArrayList();
3381-+ String incPattern="^\\s*#include\\s+[<\"](\\S+)[\">]";
3382-+ pattern=Pattern.compile(incPattern,Pattern.MULTILINE);
3383-+ matcher=pattern.matcher(source);
3384-
3385-- while (matcher.contains(input, pattern)) {
3386-- matches.add(matcher.getMatch().group(0) + ";");
3387-- }
3388-
3389-- return matches;
3390-- }
3391-+ while(matcher.find()) {
3392-+ includes.add(matcher.group(1));
3393-+ }
3394-+ return includes;
3395-+ }
3396-+
3397-+
3398- }
3399-+
3400---- arduino-0018+dfsg/src/processing/app/Platform.java 2009-06-01 10:32:11.000000000 +0200
3401-+++ ubuntu-0018/src/processing/app/Platform.java 2010-02-08 10:10:13.000000000 +0100
3402-@@ -124,7 +124,25 @@
3403- showLauncherWarning();
3404- }
3405- }
3406--
3407-+
3408-+ /**
3409-+ * Returns a File-object for a path to something in this distribution.
3410-+ * This method used to be a member of class Base. But as more platforms
3411-+ * are supported this has to be moved to the platform-specific
3412-+ * classes that extend processing.app.Platform.
3413-+ * This class provides is the default implementation where the
3414-+ * path is resolved against the users working directory.
3415-+ * @param name this can be the name of a file, directory
3416-+ * or the latter part of a path
3417-+ * @return File a File object for the path starting at the
3418-+ * users work-dir ending with name. The method does not
3419-+ * check wether the file or path exists.
3420-+ */
3421-+ public File getContentFile(String name) {
3422-+ String path = System.getProperty("user.dir");
3423-+ File working = new File(path);
3424-+ return new File(working, name);
3425-+ }
3426-
3427- // . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3428-
3429---- arduino-0018+dfsg/src/processing/app/Base.java 2009-12-26 16:42:30.000000000 +0100
3430-+++ ubuntu-0018/src/processing/app/Base.java 2010-02-08 11:28:46.000000000 +0100
3431-@@ -121,6 +121,12 @@
3432- // CLibrary clib = CLibrary.INSTANCE;
3433- // clib.setenv("DYLD_LIBRARY_PATH", "/Users/fry/coconut/sketchbook/libraries/gsvideo/library", 1);
3434- // System.out.println("env is now " + clib.getenv("DYLD_LIBRARY_PATH"));
3435-+
3436-+ /*
3437-+ The first thing we have to do is to initialze the platform-specific
3438-+ classes so file lookup is delegated to platform specific code.
3439-+ */
3440-+ initPlatform();
3441-
3442- try {
3443- File versionFile = getContentFile("lib/version.txt");
3444-@@ -156,7 +162,6 @@
3445- }
3446- */
3447-
3448-- initPlatform();
3449-
3450- // // Set the look and feel before opening the window
3451- // try {
3452-@@ -1873,6 +1878,10 @@
3453- }
3454- */
3455-
3456-+ /**
3457-+ * This method should be removed and replaced
3458-+ * by calling Platform.getContentFile(String) instead.
3459-+ */
3460- static public File getContentFile(String name) {
3461- String path = System.getProperty("user.dir");
3462-
3463-@@ -1885,6 +1894,10 @@
3464- path = javaroot;
3465- }
3466- }
3467-+ else if(Base.isLinux()) {
3468-+ //on Linux the path depends on the distribution style
3469-+ return platform.getContentFile(name);
3470-+ }
3471- File working = new File(path);
3472- return new File(working, name);
3473- }
3474
3475=== added file 'debian/patches/wrapper_for_deb.patch'
3476--- debian/patches/wrapper_for_deb.patch 1970-01-01 00:00:00 +0000
3477+++ debian/patches/wrapper_for_deb.patch 2010-04-11 15:27:18 +0000
3478@@ -0,0 +1,32 @@
3479+Description: Simple wrapper since classpath and LD library are already properly
3480+ assigned at build time. Must be exucted in /usr/share/arduino
3481+Author: Scott Howard <showard314@gmail.com>
3482+Index: arduino-0018+dfsg/arduino
3483+===================================================================
3484+--- arduino-0018+dfsg.orig/arduino 2010-04-10 10:49:20.048511096 -0400
3485++++ arduino-0018+dfsg/arduino 2010-04-10 10:49:43.908511616 -0400
3486+@@ -1,22 +1,5 @@
3487+ #!/bin/sh
3488+
3489+-APPDIR="$(dirname -- "${0}")"
3490++cd /usr/share/arduino
3491+
3492+-cd $APPDIR
3493+-
3494+-for LIB in \
3495+- java/lib/rt.jar \
3496+- java/lib/tools.jar \
3497+- lib/*.jar \
3498+- ;
3499+-do
3500+- CLASSPATH="${CLASSPATH}:${APPDIR}/${LIB}"
3501+-done
3502+-export CLASSPATH
3503+-
3504+-LD_LIBRARY_PATH=`pwd`/lib:${LD_LIBRARY_PATH}
3505+-export LD_LIBRARY_PATH
3506+-
3507+-export PATH="${APPDIR}/java/bin:${PATH}"
3508+-
3509+-java -Dswing.defaultlaf=com.sun.java.swing.plaf.gtk.GTKLookAndFeel processing.app.Base
3510++java -Dswing.defaultlaf=com.sun.java.swing.plaf.gtk.GTKLookAndFeel -jar /usr/share/java/arduino.jar
3511
3512=== modified file 'debian/rules'
3513--- debian/rules 2010-02-12 19:25:26 +0000
3514+++ debian/rules 2010-04-11 15:27:18 +0000
3515@@ -3,96 +3,56 @@
3516 # Uncomment this to turn on verbose mode.
3517 # export DH_VERBOSE=1
3518
3519-SVNTAG=$(shell dpkg-parsechangelog | grep Version | cut -f2 -d" " | sed 's/\([0-9].*\)+dfsg-[0-9]ubuntu[0-9]/\1/')
3520+export JAVA_HOME=/usr/lib/jvm/default-java
3521+export CLASSPATH=/usr/share/java/RXTXcomm.jar:/usr/lib/jvm/default-java/lib/tools.jar:/usr/lib/jvm/default-java/lib/rt.jar:/usr/share/java/oro.jar:/usr/share/java/antlr.jar:/usr/share/java/ecj.jar:/usr/share/java/jna.jar
3522+
3523+%:
3524+ dh $@ --with javahelper
3525+
3526+override_jh_build:
3527+ perl preproc.pl
3528+ jh_build --main=processing.app.Base arduino.jar src/processing/core/*.java src/processing/xml/*.java src/processing/app/*.java src/processing/app/debug/*.java src/processing/app/linux/*.java src/processing/app/preproc/*.java src/processing/app/syntax/*.java src/processing/app/tools/*.java
3529+
3530+
3531+override_dh_installchangelogs:
3532+ dh_installchangelogs -k readme.txt
3533+
3534+override_dh_compress:
3535+ dh_compress -X.pde
3536+
3537+
3538+
3539+SVNTAG=$(shell dpkg-parsechangelog | grep Version | cut -f2 -d" " | sed 's/\([0-9].*\)+dfsg-[0-9]/\1/')
3540 DESTDIR=$(CURDIR)/debian/arduino-$(SVNTAG)+dfsg
3541 TARFILE=arduino_$(SVNTAG)+dfsg.orig.tar.gz
3542
3543 get-orig-source:
3544- svn export http://arduino.googlecode.com/svn/tags/$(SVNTAG) $(DESTDIR)
3545- # Extract documentation
3546- unzip -q -d $(DESTDIR) $(DESTDIR)/build/shared/reference.zip
3547- # Grab useful bits
3548- mv $(DESTDIR)/app/src/ $(DESTDIR)
3549- mv $(DESTDIR)/core/src/processing/* $(DESTDIR)/src/processing
3550- mv $(DESTDIR)/build/shared/examples $(DESTDIR)
3551- cp -a $(DESTDIR)/libraries/* $(DESTDIR)/examples
3552- find $(DESTDIR)/libraries -type d -iname examples | xargs -n1 rm -fr
3553- find $(DESTDIR)/examples -type f -iname *.c -or -iname *.cpp -or -iname *.h | xargs -n1 rm -f
3554- mv $(DESTDIR)/build/shared/lib/about.jpg $(DESTDIR)/src
3555- mv $(DESTDIR)/build/shared/lib/keywords.txt $(DESTDIR)/src
3556- mv $(DESTDIR)/build/shared/lib/preferences.txt $(DESTDIR)/src
3557- mv $(DESTDIR)/build/shared/lib/theme/ $(DESTDIR)/src/
3558- # Remove unnecessary files
3559- rm -fr $(DESTDIR)/app/
3560- rm -fr $(DESTDIR)/core/
3561- # Remove still present Java precompiled libraries
3562- rm -f $(DESTDIR)/src/processing/app/tools/format/tool/*.jar
3563- # Remove shipped jre.tgz, Processing stuff, Reference zip file,
3564- # stuff related to differ OS from Linux and unnecessary Linux binaries
3565- rm -fr $(DESTDIR)/build/
3566- rm -fr $(DESTDIR)/src/antlr
3567- rm -fr $(DESTDIR)/src/processing/app/macosx
3568- rm -fr $(DESTDIR)/src/processing/app/windows
3569- # Remove junk
3570+ wget http://arduino.googlecode.com/files/arduino-$(SVNTAG).tgz
3571+ tar -xf arduino-$(SVNTAG).tgz
3572+ cp -a arduino-$(SVNTAG) $(DESTDIR)
3573+ rm -rf arduino-$(SVNTAG).tgz arduino-$(SVNTAG)
3574+
3575+ svn export http://arduino.googlecode.com/svn/tags/$(SVNTAG)/app $(DESTDIR)-app/
3576+ svn export http://arduino.googlecode.com/svn/tags/$(SVNTAG)/core $(DESTDIR)-core/
3577+
3578+ mkdir -p $(DESTDIR)/src/processing/
3579+ cp -a $(DESTDIR)-app/src/processing/* $(DESTDIR)/src/processing/
3580+ cp -a $(DESTDIR)-core/src/processing/* $(DESTDIR)/src/processing/
3581+ mv $(DESTDIR)-core/preproc.pl $(DESTDIR)
3582+ #remove junk
3583+ find $(DESTDIR) -type f -iname *.jar -or -iname *.tgz -or -iname *.so -or -iname license.txt | xargs -n1 rm -f
3584+ find $(DESTDIR) -type d -empty -delete
3585 rm -f $(DESTDIR)/src/processing/app/preproc/.cvsignore
3586 rm -f $(DESTDIR)/.project
3587 rm -fr $(DESTDIR)/.[a-z]*
3588 rm -fr $(DESTDIR)/app/.[a-z]*
3589- # Fix some permissions
3590- find $(DESTDIR)/libraries $(DESTDIR)/hardware $(DESTDIR)/src $(DESTDIR)/examples \
3591- -type f -exec chmod -x {} \;
3592- # Create tarball and remove temporary directory
3593+ rm -fr $(DESTDIR)/hardware/tools
3594+ #upstream set a bunch of files as execultable that should not be. remove the -x bit
3595+ find $(DESTDIR) -type f -iname *.jpg -or -iname *.java -or -iname *.pde -or -iname *.h -or -iname *.cpp -or -iname *.c -or -iname *.txt -or -iname makefile -or -iname key*.txt -or -iname pref*.txt | xargs chmod -x
3596+
3597 tar zcf $(CURDIR)/../$(TARFILE) -C $(CURDIR)/debian arduino-$(SVNTAG)+dfsg
3598- rm -fr $(DESTDIR)
3599-
3600-
3601-build: build-stamp
3602-
3603-build-stamp:
3604- dh_testdir
3605- dh_quilt_patch
3606- mkdir classes/
3607- javac -d classes -classpath classes/core.jar:/usr/share/java/RXTXcomm.jar:/usr/lib/jvm/default-java/lib/tools.jar \
3608- src/processing/core/*.java src/processing/xml/*.java \
3609- src/processing/app/*.java src/processing/app/debug/*.java src/processing/app/linux/*.java \
3610- src/processing/app/preproc/*.java src/processing/app/syntax/*.java src/processing/app/tools/*.java
3611- echo "Class-path: /usr/share/java/RXTXcomm.jar" > classes/manifest
3612- mkdir -p classes/resources/linux/; echo "linux.distribution=ubuntu" > classes/resources/linux/linux.properties
3613- cd classes/; jar -cfme arduino.jar manifest processing.app.Base processing/app processing/core processing/xml resources/; jar -i arduino.jar
3614- touch $@
3615-
3616-clean:
3617- dh_testdir
3618- dh_testroot
3619- dh_quilt_unpatch
3620- rm -f arduino.png
3621- rm -f build-stamp
3622- rm -fr classes/ resources/
3623- dh_clean
3624-
3625-install: build
3626- dh_testdir
3627- dh_testroot
3628- uudecode debian/arduino.png.uuencode
3629- dh_prep
3630- dh_install
3631-
3632-binary-arch:
3633-
3634-# Build architecture-independent files here.
3635-binary-indep: install
3636- dh_testdir
3637- dh_testroot
3638- dh_installchangelogs -k readme.txt
3639- dh_installdocs
3640- dh_installexamples examples/*
3641- dh_link
3642- dh_compress -X.pde
3643- dh_fixperms
3644- dh_installdeb
3645- dh_gencontrol
3646- dh_md5sums
3647- dh_builddeb
3648-
3649-binary: binary-indep binary-arch
3650+ rm -fr $(DESTDIR) $(DESTDIR)-app $(DESTDIR)-core
3651+
3652+
3653+
3654 PHONY: build clean binary-indep binary install get-orig-source
3655
3656=== added directory 'debian/source'
3657=== added file 'debian/source/format'
3658--- debian/source/format 1970-01-01 00:00:00 +0000
3659+++ debian/source/format 2010-04-11 15:27:18 +0000
3660@@ -0,0 +1,1 @@
3661+3.0 (quilt)
3662
3663=== modified file 'debian/watch'
3664--- debian/watch 2010-02-12 19:25:26 +0000
3665+++ debian/watch 2010-04-11 15:27:18 +0000
3666@@ -1,2 +1,4 @@
3667-# The Arduino project don't release source tarballs at all
3668-# so the watch file is useless
3669+version=3
3670+opts=dversionmangle=s/\.dfsg// \
3671+http://code.google.com/p/arduino/downloads/list \
3672+http://arduino.googlecode.com/files/arduino-(.*)\.zip
3673
3674=== added file 'examples/Digital/toneKeyboard/pitches.h'
3675--- examples/Digital/toneKeyboard/pitches.h 1970-01-01 00:00:00 +0000
3676+++ examples/Digital/toneKeyboard/pitches.h 2010-04-11 15:27:18 +0000
3677@@ -0,0 +1,95 @@
3678+/*************************************************
3679+ * Public Constants
3680+ *************************************************/
3681+
3682+#define NOTE_B0 31
3683+#define NOTE_C1 33
3684+#define NOTE_CS1 35
3685+#define NOTE_D1 37
3686+#define NOTE_DS1 39
3687+#define NOTE_E1 41
3688+#define NOTE_F1 44
3689+#define NOTE_FS1 46
3690+#define NOTE_G1 49
3691+#define NOTE_GS1 52
3692+#define NOTE_A1 55
3693+#define NOTE_AS1 58
3694+#define NOTE_B1 62
3695+#define NOTE_C2 65
3696+#define NOTE_CS2 69
3697+#define NOTE_D2 73
3698+#define NOTE_DS2 78
3699+#define NOTE_E2 82
3700+#define NOTE_F2 87
3701+#define NOTE_FS2 93
3702+#define NOTE_G2 98
3703+#define NOTE_GS2 104
3704+#define NOTE_A2 110
3705+#define NOTE_AS2 117
3706+#define NOTE_B2 123
3707+#define NOTE_C3 131
3708+#define NOTE_CS3 139
3709+#define NOTE_D3 147
3710+#define NOTE_DS3 156
3711+#define NOTE_E3 165
3712+#define NOTE_F3 175
3713+#define NOTE_FS3 185
3714+#define NOTE_G3 196
3715+#define NOTE_GS3 208
3716+#define NOTE_A3 220
3717+#define NOTE_AS3 233
3718+#define NOTE_B3 247
3719+#define NOTE_C4 262
3720+#define NOTE_CS4 277
3721+#define NOTE_D4 294
3722+#define NOTE_DS4 311
3723+#define NOTE_E4 330
3724+#define NOTE_F4 349
3725+#define NOTE_FS4 370
3726+#define NOTE_G4 392
3727+#define NOTE_GS4 415
3728+#define NOTE_A4 440
3729+#define NOTE_AS4 466
3730+#define NOTE_B4 494
3731+#define NOTE_C5 523
3732+#define NOTE_CS5 554
3733+#define NOTE_D5 587
3734+#define NOTE_DS5 622
3735+#define NOTE_E5 659
3736+#define NOTE_F5 698
3737+#define NOTE_FS5 740
3738+#define NOTE_G5 784
3739+#define NOTE_GS5 831
3740+#define NOTE_A5 880
3741+#define NOTE_AS5 932
3742+#define NOTE_B5 988
3743+#define NOTE_C6 1047
3744+#define NOTE_CS6 1109
3745+#define NOTE_D6 1175
3746+#define NOTE_DS6 1245
3747+#define NOTE_E6 1319
3748+#define NOTE_F6 1397
3749+#define NOTE_FS6 1480
3750+#define NOTE_G6 1568
3751+#define NOTE_GS6 1661
3752+#define NOTE_A6 1760
3753+#define NOTE_AS6 1865
3754+#define NOTE_B6 1976
3755+#define NOTE_C7 2093
3756+#define NOTE_CS7 2217
3757+#define NOTE_D7 2349
3758+#define NOTE_DS7 2489
3759+#define NOTE_E7 2637
3760+#define NOTE_F7 2794
3761+#define NOTE_FS7 2960
3762+#define NOTE_G7 3136
3763+#define NOTE_GS7 3322
3764+#define NOTE_A7 3520
3765+#define NOTE_AS7 3729
3766+#define NOTE_B7 3951
3767+#define NOTE_C8 4186
3768+#define NOTE_CS8 4435
3769+#define NOTE_D8 4699
3770+#define NOTE_DS8 4978
3771+
3772+
3773
3774=== added file 'examples/Digital/toneMelody/pitches.h'
3775--- examples/Digital/toneMelody/pitches.h 1970-01-01 00:00:00 +0000
3776+++ examples/Digital/toneMelody/pitches.h 2010-04-11 15:27:18 +0000
3777@@ -0,0 +1,95 @@
3778+/*************************************************
3779+ * Public Constants
3780+ *************************************************/
3781+
3782+#define NOTE_B0 31
3783+#define NOTE_C1 33
3784+#define NOTE_CS1 35
3785+#define NOTE_D1 37
3786+#define NOTE_DS1 39
3787+#define NOTE_E1 41
3788+#define NOTE_F1 44
3789+#define NOTE_FS1 46
3790+#define NOTE_G1 49
3791+#define NOTE_GS1 52
3792+#define NOTE_A1 55
3793+#define NOTE_AS1 58
3794+#define NOTE_B1 62
3795+#define NOTE_C2 65
3796+#define NOTE_CS2 69
3797+#define NOTE_D2 73
3798+#define NOTE_DS2 78
3799+#define NOTE_E2 82
3800+#define NOTE_F2 87
3801+#define NOTE_FS2 93
3802+#define NOTE_G2 98
3803+#define NOTE_GS2 104
3804+#define NOTE_A2 110
3805+#define NOTE_AS2 117
3806+#define NOTE_B2 123
3807+#define NOTE_C3 131
3808+#define NOTE_CS3 139
3809+#define NOTE_D3 147
3810+#define NOTE_DS3 156
3811+#define NOTE_E3 165
3812+#define NOTE_F3 175
3813+#define NOTE_FS3 185
3814+#define NOTE_G3 196
3815+#define NOTE_GS3 208
3816+#define NOTE_A3 220
3817+#define NOTE_AS3 233
3818+#define NOTE_B3 247
3819+#define NOTE_C4 262
3820+#define NOTE_CS4 277
3821+#define NOTE_D4 294
3822+#define NOTE_DS4 311
3823+#define NOTE_E4 330
3824+#define NOTE_F4 349
3825+#define NOTE_FS4 370
3826+#define NOTE_G4 392
3827+#define NOTE_GS4 415
3828+#define NOTE_A4 440
3829+#define NOTE_AS4 466
3830+#define NOTE_B4 494
3831+#define NOTE_C5 523
3832+#define NOTE_CS5 554
3833+#define NOTE_D5 587
3834+#define NOTE_DS5 622
3835+#define NOTE_E5 659
3836+#define NOTE_F5 698
3837+#define NOTE_FS5 740
3838+#define NOTE_G5 784
3839+#define NOTE_GS5 831
3840+#define NOTE_A5 880
3841+#define NOTE_AS5 932
3842+#define NOTE_B5 988
3843+#define NOTE_C6 1047
3844+#define NOTE_CS6 1109
3845+#define NOTE_D6 1175
3846+#define NOTE_DS6 1245
3847+#define NOTE_E6 1319
3848+#define NOTE_F6 1397
3849+#define NOTE_FS6 1480
3850+#define NOTE_G6 1568
3851+#define NOTE_GS6 1661
3852+#define NOTE_A6 1760
3853+#define NOTE_AS6 1865
3854+#define NOTE_B6 1976
3855+#define NOTE_C7 2093
3856+#define NOTE_CS7 2217
3857+#define NOTE_D7 2349
3858+#define NOTE_DS7 2489
3859+#define NOTE_E7 2637
3860+#define NOTE_F7 2794
3861+#define NOTE_FS7 2960
3862+#define NOTE_G7 3136
3863+#define NOTE_GS7 3322
3864+#define NOTE_A7 3520
3865+#define NOTE_AS7 3729
3866+#define NOTE_B7 3951
3867+#define NOTE_C8 4186
3868+#define NOTE_CS8 4435
3869+#define NOTE_D8 4699
3870+#define NOTE_DS8 4978
3871+
3872+
3873
3874=== removed directory 'examples/EEPROM'
3875=== removed directory 'examples/EEPROM/examples'
3876=== removed directory 'examples/EEPROM/examples/eeprom_clear'
3877=== removed file 'examples/EEPROM/examples/eeprom_clear/eeprom_clear.pde'
3878--- examples/EEPROM/examples/eeprom_clear/eeprom_clear.pde 2010-02-12 19:25:26 +0000
3879+++ examples/EEPROM/examples/eeprom_clear/eeprom_clear.pde 1970-01-01 00:00:00 +0000
3880@@ -1,21 +0,0 @@
3881-/*
3882- * EEPROM Clear
3883- *
3884- * Sets all of the bytes of the EEPROM to 0.
3885- */
3886-
3887-#include <EEPROM.h>
3888-
3889-void setup()
3890-{
3891- // write a 0 to all 512 bytes of the EEPROM
3892- for (int i = 0; i < 512; i++)
3893- EEPROM.write(i, 0);
3894-
3895- // turn the LED on when we're done
3896- digitalWrite(13, HIGH);
3897-}
3898-
3899-void loop()
3900-{
3901-}
3902
3903=== removed directory 'examples/EEPROM/examples/eeprom_read'
3904=== removed file 'examples/EEPROM/examples/eeprom_read/eeprom_read.pde'
3905--- examples/EEPROM/examples/eeprom_read/eeprom_read.pde 2010-02-12 19:25:26 +0000
3906+++ examples/EEPROM/examples/eeprom_read/eeprom_read.pde 1970-01-01 00:00:00 +0000
3907@@ -1,38 +0,0 @@
3908-/*
3909- * EEPROM Read
3910- *
3911- * Reads the value of each byte of the EEPROM and prints it
3912- * to the computer.
3913- */
3914-
3915-#include <EEPROM.h>
3916-
3917-// start reading from the first byte (address 0) of the EEPROM
3918-int address = 0;
3919-byte value;
3920-
3921-void setup()
3922-{
3923- Serial.begin(9600);
3924-}
3925-
3926-void loop()
3927-{
3928- // read a byte from the current address of the EEPROM
3929- value = EEPROM.read(address);
3930-
3931- Serial.print(address);
3932- Serial.print("\t");
3933- Serial.print(value, DEC);
3934- Serial.println();
3935-
3936- // advance to the next address of the EEPROM
3937- address = address + 1;
3938-
3939- // there are only 512 bytes of EEPROM, from 0 to 511, so if we're
3940- // on address 512, wrap around to address 0
3941- if (address == 512)
3942- address = 0;
3943-
3944- delay(500);
3945-}
3946
3947=== removed directory 'examples/EEPROM/examples/eeprom_write'
3948=== removed file 'examples/EEPROM/examples/eeprom_write/eeprom_write.pde'
3949--- examples/EEPROM/examples/eeprom_write/eeprom_write.pde 2010-02-12 19:25:26 +0000
3950+++ examples/EEPROM/examples/eeprom_write/eeprom_write.pde 1970-01-01 00:00:00 +0000
3951@@ -1,38 +0,0 @@
3952-/*
3953- * EEPROM Write
3954- *
3955- * Stores values read from analog input 0 into the EEPROM.
3956- * These values will stay in the EEPROM when the board is
3957- * turned off and may be retrieved later by another sketch.
3958- */
3959-
3960-#include <EEPROM.h>
3961-
3962-// the current address in the EEPROM (i.e. which byte
3963-// we're going to write to next)
3964-int addr = 0;
3965-
3966-void setup()
3967-{
3968-}
3969-
3970-void loop()
3971-{
3972- // need to divide by 4 because analog inputs range from
3973- // 0 to 1023 and each byte of the EEPROM can only hold a
3974- // value from 0 to 255.
3975- int val = analogRead(0) / 4;
3976-
3977- // write the value to the appropriate byte of the EEPROM.
3978- // these values will remain there when the board is
3979- // turned off.
3980- EEPROM.write(addr, val);
3981-
3982- // advance to the next address. there are 512 bytes in
3983- // the EEPROM, so go back to 0 when we hit 512.
3984- addr = addr + 1;
3985- if (addr == 512)
3986- addr = 0;
3987-
3988- delay(100);
3989-}
3990
3991=== removed file 'examples/EEPROM/keywords.txt'
3992--- examples/EEPROM/keywords.txt 2010-02-12 19:25:26 +0000
3993+++ examples/EEPROM/keywords.txt 1970-01-01 00:00:00 +0000
3994@@ -1,18 +0,0 @@
3995-#######################################
3996-# Syntax Coloring Map For Ultrasound
3997-#######################################
3998-
3999-#######################################
4000-# Datatypes (KEYWORD1)
4001-#######################################
4002-
4003-EEPROM KEYWORD1
4004-
4005-#######################################
4006-# Methods and Functions (KEYWORD2)
4007-#######################################
4008-
4009-#######################################
4010-# Constants (LITERAL1)
4011-#######################################
4012-
4013
4014=== removed directory 'examples/Ethernet'
4015=== removed directory 'examples/Ethernet/examples'
4016=== removed directory 'examples/Ethernet/examples/ChatServer'
4017=== removed file 'examples/Ethernet/examples/ChatServer/ChatServer.pde'
4018--- examples/Ethernet/examples/ChatServer/ChatServer.pde 2010-02-12 19:25:26 +0000
4019+++ examples/Ethernet/examples/ChatServer/ChatServer.pde 1970-01-01 00:00:00 +0000
4020@@ -1,34 +0,0 @@
4021-/*
4022- * Chat Server
4023- *
4024- * A simple server that distributes any incoming messages to all
4025- * connected clients. To use telnet to 10.0.0.177 and type!
4026- */
4027-
4028-#include <Ethernet.h>
4029-
4030-// network configuration. gateway and subnet are optional.
4031-byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
4032-byte ip[] = { 10, 0, 0, 177 };
4033-byte gateway[] = { 10, 0, 0, 1 };
4034-byte subnet[] = { 255, 255, 0, 0 };
4035-
4036-// telnet defaults to port 23
4037-Server server(23);
4038-
4039-void setup()
4040-{
4041- // initialize the ethernet device
4042- Ethernet.begin(mac, ip, gateway, subnet);
4043-
4044- // start listening for clients
4045- server.begin();
4046-}
4047-
4048-void loop()
4049-{
4050- Client client = server.available();
4051- if (client) {
4052- server.write(client.read());
4053- }
4054-}
4055
4056=== removed directory 'examples/Ethernet/examples/WebClient'
4057=== removed file 'examples/Ethernet/examples/WebClient/WebClient.pde'
4058--- examples/Ethernet/examples/WebClient/WebClient.pde 2010-02-12 19:25:26 +0000
4059+++ examples/Ethernet/examples/WebClient/WebClient.pde 1970-01-01 00:00:00 +0000
4060@@ -1,41 +0,0 @@
4061-#include <Ethernet.h>
4062-
4063-byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
4064-byte ip[] = { 10, 0, 0, 177 };
4065-byte server[] = { 64, 233, 187, 99 }; // Google
4066-
4067-Client client(server, 80);
4068-
4069-void setup()
4070-{
4071- Ethernet.begin(mac, ip);
4072- Serial.begin(9600);
4073-
4074- delay(1000);
4075-
4076- Serial.println("connecting...");
4077-
4078- if (client.connect()) {
4079- Serial.println("connected");
4080- client.println("GET /search?q=arduino HTTP/1.0");
4081- client.println();
4082- } else {
4083- Serial.println("connection failed");
4084- }
4085-}
4086-
4087-void loop()
4088-{
4089- if (client.available()) {
4090- char c = client.read();
4091- Serial.print(c);
4092- }
4093-
4094- if (!client.connected()) {
4095- Serial.println();
4096- Serial.println("disconnecting.");
4097- client.stop();
4098- for(;;)
4099- ;
4100- }
4101-}
4102
4103=== removed directory 'examples/Ethernet/examples/WebServer'
4104=== removed file 'examples/Ethernet/examples/WebServer/WebServer.pde'
4105--- examples/Ethernet/examples/WebServer/WebServer.pde 2010-02-12 19:25:26 +0000
4106+++ examples/Ethernet/examples/WebServer/WebServer.pde 1970-01-01 00:00:00 +0000
4107@@ -1,61 +0,0 @@
4108-/*
4109- * Web Server
4110- *
4111- * A simple web server that shows the value of the analog input pins.
4112- */
4113-
4114-#include <Ethernet.h>
4115-
4116-byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
4117-byte ip[] = { 10, 0, 0, 177 };
4118-
4119-Server server(80);
4120-
4121-void setup()
4122-{
4123- Ethernet.begin(mac, ip);
4124- server.begin();
4125-}
4126-
4127-void loop()
4128-{
4129- Client client = server.available();
4130- if (client) {
4131- // an http request ends with a blank line
4132- boolean current_line_is_blank = true;
4133- while (client.connected()) {
4134- if (client.available()) {
4135- char c = client.read();
4136- // if we've gotten to the end of the line (received a newline
4137- // character) and the line is blank, the http request has ended,
4138- // so we can send a reply
4139- if (c == '\n' && current_line_is_blank) {
4140- // send a standard http response header
4141- client.println("HTTP/1.1 200 OK");
4142- client.println("Content-Type: text/html");
4143- client.println();
4144-
4145- // output the value of each analog input pin
4146- for (int i = 0; i < 6; i++) {
4147- client.print("analog input ");
4148- client.print(i);
4149- client.print(" is ");
4150- client.print(analogRead(i));
4151- client.println("<br />");
4152- }
4153- break;
4154- }
4155- if (c == '\n') {
4156- // we're starting a new line
4157- current_line_is_blank = true;
4158- } else if (c != '\r') {
4159- // we've gotten a character on the current line
4160- current_line_is_blank = false;
4161- }
4162- }
4163- }
4164- // give the web browser time to receive the data
4165- delay(1);
4166- client.stop();
4167- }
4168-}
4169
4170=== removed file 'examples/Ethernet/keywords.txt'
4171--- examples/Ethernet/keywords.txt 2010-02-12 19:25:26 +0000
4172+++ examples/Ethernet/keywords.txt 1970-01-01 00:00:00 +0000
4173@@ -1,30 +0,0 @@
4174-#######################################
4175-# Syntax Coloring Map For Ethernet
4176-#######################################
4177-
4178-#######################################
4179-# Datatypes (KEYWORD1)
4180-#######################################
4181-
4182-Ethernet KEYWORD1
4183-Client KEYWORD1
4184-Server KEYWORD1
4185-
4186-#######################################
4187-# Methods and Functions (KEYWORD2)
4188-#######################################
4189-
4190-status KEYWORD2
4191-connect KEYWORD2
4192-write KEYWORD2
4193-available KEYWORD2
4194-read KEYWORD2
4195-flush KEYWORD2
4196-stop KEYWORD2
4197-connected KEYWORD2
4198-begin KEYWORD2
4199-
4200-#######################################
4201-# Constants (LITERAL1)
4202-#######################################
4203-
4204
4205=== removed directory 'examples/Ethernet/utility'
4206=== removed directory 'examples/Firmata'
4207=== removed file 'examples/Firmata/LICENSE.txt'
4208--- examples/Firmata/LICENSE.txt 2010-02-12 19:25:26 +0000
4209+++ examples/Firmata/LICENSE.txt 1970-01-01 00:00:00 +0000
4210@@ -1,458 +0,0 @@
4211-
4212- GNU LESSER GENERAL PUBLIC LICENSE
4213- Version 2.1, February 1999
4214-
4215- Copyright (C) 1991, 1999 Free Software Foundation, Inc.
4216- 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
4217- Everyone is permitted to copy and distribute verbatim copies
4218- of this license document, but changing it is not allowed.
4219-
4220-[This is the first released version of the Lesser GPL. It also counts
4221- as the successor of the GNU Library Public License, version 2, hence
4222- the version number 2.1.]
4223-
4224- Preamble
4225-
4226- The licenses for most software are designed to take away your
4227-freedom to share and change it. By contrast, the GNU General Public
4228-Licenses are intended to guarantee your freedom to share and change
4229-free software--to make sure the software is free for all its users.
4230-
4231- This license, the Lesser General Public License, applies to some
4232-specially designated software packages--typically libraries--of the
4233-Free Software Foundation and other authors who decide to use it. You
4234-can use it too, but we suggest you first think carefully about whether
4235-this license or the ordinary General Public License is the better
4236-strategy to use in any particular case, based on the explanations below.
4237-
4238- When we speak of free software, we are referring to freedom of use,
4239-not price. Our General Public Licenses are designed to make sure that
4240-you have the freedom to distribute copies of free software (and charge
4241-for this service if you wish); that you receive source code or can get
4242-it if you want it; that you can change the software and use pieces of
4243-it in new free programs; and that you are informed that you can do
4244-these things.
4245-
4246- To protect your rights, we need to make restrictions that forbid
4247-distributors to deny you these rights or to ask you to surrender these
4248-rights. These restrictions translate to certain responsibilities for
4249-you if you distribute copies of the library or if you modify it.
4250-
4251- For example, if you distribute copies of the library, whether gratis
4252-or for a fee, you must give the recipients all the rights that we gave
4253-you. You must make sure that they, too, receive or can get the source
4254-code. If you link other code with the library, you must provide
4255-complete object files to the recipients, so that they can relink them
4256-with the library after making changes to the library and recompiling
4257-it. And you must show them these terms so they know their rights.
4258-
4259- We protect your rights with a two-step method: (1) we copyright the
4260-library, and (2) we offer you this license, which gives you legal
4261-permission to copy, distribute and/or modify the library.
4262-
4263- To protect each distributor, we want to make it very clear that
4264-there is no warranty for the free library. Also, if the library is
4265-modified by someone else and passed on, the recipients should know
4266-that what they have is not the original version, so that the original
4267-author's reputation will not be affected by problems that might be
4268-introduced by others.
4269-
4270
4271- Finally, software patents pose a constant threat to the existence of
4272-any free program. We wish to make sure that a company cannot
4273-effectively restrict the users of a free program by obtaining a
4274-restrictive license from a patent holder. Therefore, we insist that
4275-any patent license obtained for a version of the library must be
4276-consistent with the full freedom of use specified in this license.
4277-
4278- Most GNU software, including some libraries, is covered by the
4279-ordinary GNU General Public License. This license, the GNU Lesser
4280-General Public License, applies to certain designated libraries, and
4281-is quite different from the ordinary General Public License. We use
4282-this license for certain libraries in order to permit linking those
4283-libraries into non-free programs.
4284-
4285- When a program is linked with a library, whether statically or using
4286-a shared library, the combination of the two is legally speaking a
4287-combined work, a derivative of the original library. The ordinary
4288-General Public License therefore permits such linking only if the
4289-entire combination fits its criteria of freedom. The Lesser General
4290-Public License permits more lax criteria for linking other code with
4291-the library.
4292-
4293- We call this license the "Lesser" General Public License because it
4294-does Less to protect the user's freedom than the ordinary General
4295-Public License. It also provides other free software developers Less
4296-of an advantage over competing non-free programs. These disadvantages
4297-are the reason we use the ordinary General Public License for many
4298-libraries. However, the Lesser license provides advantages in certain
4299-special circumstances.
4300-
4301- For example, on rare occasions, there may be a special need to
4302-encourage the widest possible use of a certain library, so that it becomes
4303-a de-facto standard. To achieve this, non-free programs must be
4304-allowed to use the library. A more frequent case is that a free
4305-library does the same job as widely used non-free libraries. In this
4306-case, there is little to gain by limiting the free library to free
4307-software only, so we use the Lesser General Public License.
4308-
4309- In other cases, permission to use a particular library in non-free
4310-programs enables a greater number of people to use a large body of
4311-free software. For example, permission to use the GNU C Library in
4312-non-free programs enables many more people to use the whole GNU
4313-operating system, as well as its variant, the GNU/Linux operating
4314-system.
4315-
4316- Although the Lesser General Public License is Less protective of the
4317-users' freedom, it does ensure that the user of a program that is
4318-linked with the Library has the freedom and the wherewithal to run
4319-that program using a modified version of the Library.
4320-
4321- The precise terms and conditions for copying, distribution and
4322-modification follow. Pay close attention to the difference between a
4323-"work based on the library" and a "work that uses the library". The
4324-former contains code derived from the library, whereas the latter must
4325-be combined with the library in order to run.
4326-
4327
4328- GNU LESSER GENERAL PUBLIC LICENSE
4329- TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
4330-
4331- 0. This License Agreement applies to any software library or other
4332-program which contains a notice placed by the copyright holder or
4333-other authorized party saying it may be distributed under the terms of
4334-this Lesser General Public License (also called "this License").
4335-Each licensee is addressed as "you".
4336-
4337- A "library" means a collection of software functions and/or data
4338-prepared so as to be conveniently linked with application programs
4339-(which use some of those functions and data) to form executables.
4340-
4341- The "Library", below, refers to any such software library or work
4342-which has been distributed under these terms. A "work based on the
4343-Library" means either the Library or any derivative work under
4344-copyright law: that is to say, a work containing the Library or a
4345-portion of it, either verbatim or with modifications and/or translated
4346-straightforwardly into another language. (Hereinafter, translation is
4347-included without limitation in the term "modification".)
4348-
4349- "Source code" for a work means the preferred form of the work for
4350-making modifications to it. For a library, complete source code means
4351-all the source code for all modules it contains, plus any associated
4352-interface definition files, plus the scripts used to control compilation
4353-and installation of the library.
4354-
4355- Activities other than copying, distribution and modification are not
4356-covered by this License; they are outside its scope. The act of
4357-running a program using the Library is not restricted, and output from
4358-such a program is covered only if its contents constitute a work based
4359-on the Library (independent of the use of the Library in a tool for
4360-writing it). Whether that is true depends on what the Library does
4361-and what the program that uses the Library does.
4362-
4363- 1. You may copy and distribute verbatim copies of the Library's
4364-complete source code as you receive it, in any medium, provided that
4365-you conspicuously and appropriately publish on each copy an
4366-appropriate copyright notice and disclaimer of warranty; keep intact
4367-all the notices that refer to this License and to the absence of any
4368-warranty; and distribute a copy of this License along with the
4369-Library.
4370-
4371- You may charge a fee for the physical act of transferring a copy,
4372-and you may at your option offer warranty protection in exchange for a
4373-fee.
4374-
4375
4376- 2. You may modify your copy or copies of the Library or any portion
4377-of it, thus forming a work based on the Library, and copy and
4378-distribute such modifications or work under the terms of Section 1
4379-above, provided that you also meet all of these conditions:
4380-
4381- a) The modified work must itself be a software library.
4382-
4383- b) You must cause the files modified to carry prominent notices
4384- stating that you changed the files and the date of any change.
4385-
4386- c) You must cause the whole of the work to be licensed at no
4387- charge to all third parties under the terms of this License.
4388-
4389- d) If a facility in the modified Library refers to a function or a
4390- table of data to be supplied by an application program that uses
4391- the facility, other than as an argument passed when the facility
4392- is invoked, then you must make a good faith effort to ensure that,
4393- in the event an application does not supply such function or
4394- table, the facility still operates, and performs whatever part of
4395- its purpose remains meaningful.
4396-
4397- (For example, a function in a library to compute square roots has
4398- a purpose that is entirely well-defined independent of the
4399- application. Therefore, Subsection 2d requires that any
4400- application-supplied function or table used by this function must
4401- be optional: if the application does not supply it, the square
4402- root function must still compute square roots.)
4403-
4404-These requirements apply to the modified work as a whole. If
4405-identifiable sections of that work are not derived from the Library,
4406-and can be reasonably considered independent and separate works in
4407-themselves, then this License, and its terms, do not apply to those
4408-sections when you distribute them as separate works. But when you
4409-distribute the same sections as part of a whole which is a work based
4410-on the Library, the distribution of the whole must be on the terms of
4411-this License, whose permissions for other licensees extend to the
4412-entire whole, and thus to each and every part regardless of who wrote
4413-it.
4414-
4415-Thus, it is not the intent of this section to claim rights or contest
4416-your rights to work written entirely by you; rather, the intent is to
4417-exercise the right to control the distribution of derivative or
4418-collective works based on the Library.
4419-
4420-In addition, mere aggregation of another work not based on the Library
4421-with the Library (or with a work based on the Library) on a volume of
4422-a storage or distribution medium does not bring the other work under
4423-the scope of this License.
4424-
4425- 3. You may opt to apply the terms of the ordinary GNU General Public
4426-License instead of this License to a given copy of the Library. To do
4427-this, you must alter all the notices that refer to this License, so
4428-that they refer to the ordinary GNU General Public License, version 2,
4429-instead of to this License. (If a newer version than version 2 of the
4430-ordinary GNU General Public License has appeared, then you can specify
4431-that version instead if you wish.) Do not make any other change in
4432-these notices.
4433-
4434
4435- Once this change is made in a given copy, it is irreversible for
4436-that copy, so the ordinary GNU General Public License applies to all
4437-subsequent copies and derivative works made from that copy.
4438-
4439- This option is useful when you wish to copy part of the code of
4440-the Library into a program that is not a library.
4441-
4442- 4. You may copy and distribute the Library (or a portion or
4443-derivative of it, under Section 2) in object code or executable form
4444-under the terms of Sections 1 and 2 above provided that you accompany
4445-it with the complete corresponding machine-readable source code, which
4446-must be distributed under the terms of Sections 1 and 2 above on a
4447-medium customarily used for software interchange.
4448-
4449- If distribution of object code is made by offering access to copy
4450-from a designated place, then offering equivalent access to copy the
4451-source code from the same place satisfies the requirement to
4452-distribute the source code, even though third parties are not
4453-compelled to copy the source along with the object code.
4454-
4455- 5. A program that contains no derivative of any portion of the
4456-Library, but is designed to work with the Library by being compiled or
4457-linked with it, is called a "work that uses the Library". Such a
4458-work, in isolation, is not a derivative work of the Library, and
4459-therefore falls outside the scope of this License.
4460-
4461- However, linking a "work that uses the Library" with the Library
4462-creates an executable that is a derivative of the Library (because it
4463-contains portions of the Library), rather than a "work that uses the
4464-library". The executable is therefore covered by this License.
4465-Section 6 states terms for distribution of such executables.
4466-
4467- When a "work that uses the Library" uses material from a header file
4468-that is part of the Library, the object code for the work may be a
4469-derivative work of the Library even though the source code is not.
4470-Whether this is true is especially significant if the work can be
4471-linked without the Library, or if the work is itself a library. The
4472-threshold for this to be true is not precisely defined by law.
4473-
4474- If such an object file uses only numerical parameters, data
4475-structure layouts and accessors, and small macros and small inline
4476-functions (ten lines or less in length), then the use of the object
4477-file is unrestricted, regardless of whether it is legally a derivative
4478-work. (Executables containing this object code plus portions of the
4479-Library will still fall under Section 6.)
4480-
4481- Otherwise, if the work is a derivative of the Library, you may
4482-distribute the object code for the work under the terms of Section 6.
4483-Any executables containing that work also fall under Section 6,
4484-whether or not they are linked directly with the Library itself.
4485-
4486
4487- 6. As an exception to the Sections above, you may also combine or
4488-link a "work that uses the Library" with the Library to produce a
4489-work containing portions of the Library, and distribute that work
4490-under terms of your choice, provided that the terms permit
4491-modification of the work for the customer's own use and reverse
4492-engineering for debugging such modifications.
4493-
4494- You must give prominent notice with each copy of the work that the
4495-Library is used in it and that the Library and its use are covered by
4496-this License. You must supply a copy of this License. If the work
4497-during execution displays copyright notices, you must include the
4498-copyright notice for the Library among them, as well as a reference
4499-directing the user to the copy of this License. Also, you must do one
4500-of these things:
4501-
4502- a) Accompany the work with the complete corresponding
4503- machine-readable source code for the Library including whatever
4504- changes were used in the work (which must be distributed under
4505- Sections 1 and 2 above); and, if the work is an executable linked
4506- with the Library, with the complete machine-readable "work that
4507- uses the Library", as object code and/or source code, so that the
4508- user can modify the Library and then relink to produce a modified
4509- executable containing the modified Library. (It is understood
4510- that the user who changes the contents of definitions files in the
4511- Library will not necessarily be able to recompile the application
4512- to use the modified definitions.)
4513-
4514- b) Use a suitable shared library mechanism for linking with the
4515- Library. A suitable mechanism is one that (1) uses at run time a
4516- copy of the library already present on the user's computer system,
4517- rather than copying library functions into the executable, and (2)
4518- will operate properly with a modified version of the library, if
4519- the user installs one, as long as the modified version is
4520- interface-compatible with the version that the work was made with.
4521-
4522- c) Accompany the work with a written offer, valid for at
4523- least three years, to give the same user the materials
4524- specified in Subsection 6a, above, for a charge no more
4525- than the cost of performing this distribution.
4526-
4527- d) If distribution of the work is made by offering access to copy
4528- from a designated place, offer equivalent access to copy the above
4529- specified materials from the same place.
4530-
4531- e) Verify that the user has already received a copy of these
4532- materials or that you have already sent this user a copy.
4533-
4534- For an executable, the required form of the "work that uses the
4535-Library" must include any data and utility programs needed for
4536-reproducing the executable from it. However, as a special exception,
4537-the materials to be distributed need not include anything that is
4538-normally distributed (in either source or binary form) with the major
4539-components (compiler, kernel, and so on) of the operating system on
4540-which the executable runs, unless that component itself accompanies
4541-the executable.
4542-
4543- It may happen that this requirement contradicts the license
4544-restrictions of other proprietary libraries that do not normally
4545-accompany the operating system. Such a contradiction means you cannot
4546-use both them and the Library together in an executable that you
4547-distribute.
4548-
4549
4550- 7. You may place library facilities that are a work based on the
4551-Library side-by-side in a single library together with other library
4552-facilities not covered by this License, and distribute such a combined
4553-library, provided that the separate distribution of the work based on
4554-the Library and of the other library facilities is otherwise
4555-permitted, and provided that you do these two things:
4556-
4557- a) Accompany the combined library with a copy of the same work
4558- based on the Library, uncombined with any other library
4559- facilities. This must be distributed under the terms of the
4560- Sections above.
4561-
4562- b) Give prominent notice with the combined library of the fact
4563- that part of it is a work based on the Library, and explaining
4564- where to find the accompanying uncombined form of the same work.
4565-
4566- 8. You may not copy, modify, sublicense, link with, or distribute
4567-the Library except as expressly provided under this License. Any
4568-attempt otherwise to copy, modify, sublicense, link with, or
4569-distribute the Library is void, and will automatically terminate your
4570-rights under this License. However, parties who have received copies,
4571-or rights, from you under this License will not have their licenses
4572-terminated so long as such parties remain in full compliance.
4573-
4574- 9. You are not required to accept this License, since you have not
4575-signed it. However, nothing else grants you permission to modify or
4576-distribute the Library or its derivative works. These actions are
4577-prohibited by law if you do not accept this License. Therefore, by
4578-modifying or distributing the Library (or any work based on the
4579-Library), you indicate your acceptance of this License to do so, and
4580-all its terms and conditions for copying, distributing or modifying
4581-the Library or works based on it.
4582-
4583- 10. Each time you redistribute the Library (or any work based on the
4584-Library), the recipient automatically receives a license from the
4585-original licensor to copy, distribute, link with or modify the Library
4586-subject to these terms and conditions. You may not impose any further
4587-restrictions on the recipients' exercise of the rights granted herein.
4588-You are not responsible for enforcing compliance by third parties with
4589-this License.
4590-
4591
4592- 11. If, as a consequence of a court judgment or allegation of patent
4593-infringement or for any other reason (not limited to patent issues),
4594-conditions are imposed on you (whether by court order, agreement or
4595-otherwise) that contradict the conditions of this License, they do not
4596-excuse you from the conditions of this License. If you cannot
4597-distribute so as to satisfy simultaneously your obligations under this
4598-License and any other pertinent obligations, then as a consequence you
4599-may not distribute the Library at all. For example, if a patent
4600-license would not permit royalty-free redistribution of the Library by
4601-all those who receive copies directly or indirectly through you, then
4602-the only way you could satisfy both it and this License would be to
4603-refrain entirely from distribution of the Library.
4604-
4605-If any portion of this section is held invalid or unenforceable under any
4606-particular circumstance, the balance of the section is intended to apply,
4607-and the section as a whole is intended to apply in other circumstances.
4608-
4609-It is not the purpose of this section to induce you to infringe any
4610-patents or other property right claims or to contest validity of any
4611-such claims; this section has the sole purpose of protecting the
4612-integrity of the free software distribution system which is
4613-implemented by public license practices. Many people have made
4614-generous contributions to the wide range of software distributed
4615-through that system in reliance on consistent application of that
4616-system; it is up to the author/donor to decide if he or she is willing
4617-to distribute software through any other system and a licensee cannot
4618-impose that choice.
4619-
4620-This section is intended to make thoroughly clear what is believed to
4621-be a consequence of the rest of this License.
4622-
4623- 12. If the distribution and/or use of the Library is restricted in
4624-certain countries either by patents or by copyrighted interfaces, the
4625-original copyright holder who places the Library under this License may add
4626-an explicit geographical distribution limitation excluding those countries,
4627-so that distribution is permitted only in or among countries not thus
4628-excluded. In such case, this License incorporates the limitation as if
4629-written in the body of this License.
4630-
4631- 13. The Free Software Foundation may publish revised and/or new
4632-versions of the Lesser General Public License from time to time.
4633-Such new versions will be similar in spirit to the present version,
4634-but may differ in detail to address new problems or concerns.
4635-
4636-Each version is given a distinguishing version number. If the Library
4637-specifies a version number of this License which applies to it and
4638-"any later version", you have the option of following the terms and
4639-conditions either of that version or of any later version published by
4640-the Free Software Foundation. If the Library does not specify a
4641-license version number, you may choose any version ever published by
4642-the Free Software Foundation.
4643-
4644
4645- 14. If you wish to incorporate parts of the Library into other free
4646-programs whose distribution conditions are incompatible with these,
4647-write to the author to ask for permission. For software which is
4648-copyrighted by the Free Software Foundation, write to the Free
4649-Software Foundation; we sometimes make exceptions for this. Our
4650-decision will be guided by the two goals of preserving the free status
4651-of all derivatives of our free software and of promoting the sharing
4652-and reuse of software generally.
4653-
4654- NO WARRANTY
4655-
4656- 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
4657-WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
4658-EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
4659-OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
4660-KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
4661-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
4662-PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
4663-LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
4664-THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
4665-
4666- 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
4667-WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
4668-AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
4669-FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
4670-CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
4671-LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
4672-RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
4673-FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
4674-SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
4675-DAMAGES.
4676-
4677
4678=== removed file 'examples/Firmata/TODO.txt'
4679--- examples/Firmata/TODO.txt 2010-02-12 19:25:26 +0000
4680+++ examples/Firmata/TODO.txt 1970-01-01 00:00:00 +0000
4681@@ -1,14 +0,0 @@
4682-
4683-- make Firmata a subclass of HardwareSerial
4684-
4685-- per-pin digital callback, since the per-port callback is a bit complicated
4686- for beginners (maybe Firmata is not for beginners...)
4687-
4688-- simplify SimpleDigitalFirmata, take out the code that checks to see if the
4689- data has changed, since it is a bit complicated for this example. Ideally
4690- this example would be based on a call
4691-
4692-- turn current SimpleDigitalFirmata into DigitalPortFirmata for a more complex
4693- example using the code which checks for changes before doing anything
4694-
4695-- test integration with Wiring
4696
4697=== removed directory 'examples/Firmata/examples'
4698=== removed directory 'examples/Firmata/examples/AllInputsFirmata'
4699=== removed file 'examples/Firmata/examples/AllInputsFirmata/AllInputsFirmata.pde'
4700--- examples/Firmata/examples/AllInputsFirmata/AllInputsFirmata.pde 2010-02-12 19:25:26 +0000
4701+++ examples/Firmata/examples/AllInputsFirmata/AllInputsFirmata.pde 1970-01-01 00:00:00 +0000
4702@@ -1,71 +0,0 @@
4703-/*
4704- * This firmware reads all inputs and sends them as fast as it can. It was
4705- * inspired by the ease-of-use of the Arduino2Max program.
4706- *
4707- * This example code is in the public domain.
4708- */
4709-#include <Firmata.h>
4710-
4711-byte pin;
4712-
4713-int analogValue;
4714-int previousAnalogValues[TOTAL_ANALOG_PINS];
4715-
4716-byte portStatus[TOTAL_PORTS];
4717-byte previousPINs[TOTAL_PORTS];
4718-
4719-/* timer variables */
4720-unsigned long currentMillis; // store the current value from millis()
4721-unsigned long nextExecuteMillis; // for comparison with currentMillis
4722-/* make sure that the FTDI buffer doesn't go over 60 bytes, otherwise you
4723- get long, random delays. So only read analogs every 20ms or so */
4724-int samplingInterval = 19; // how often to run the main loop (in ms)
4725-
4726-void sendPort(byte portNumber, byte portValue)
4727-{
4728- portValue = portValue &~ portStatus[portNumber];
4729- if(previousPINs[portNumber] != portValue) {
4730- Firmata.sendDigitalPort(portNumber, portValue);
4731- previousPINs[portNumber] = portValue;
4732- }
4733-}
4734-
4735-void setup()
4736-{
4737- Firmata.setFirmwareVersion(0, 1);
4738-
4739- for(pin = 0; pin < TOTAL_DIGITAL_PINS; pin++) {
4740- pinMode(pin, INPUT);
4741- }
4742-
4743- portStatus[0] = B00000011; // ignore Tx/RX pins
4744- portStatus[1] = B11000000; // ignore 14/15 pins
4745- portStatus[2] = B00000000;
4746-
4747- Firmata.begin(57600);
4748-}
4749-
4750-void loop()
4751-{
4752- sendPort(0, PIND);
4753- sendPort(1, PINB);
4754- sendPort(2, PINC);
4755- /* make sure that the FTDI buffer doesn't go over 60 bytes, otherwise you
4756- get long, random delays. So only read analogs every 20ms or so */
4757- currentMillis = millis();
4758- if(currentMillis > nextExecuteMillis) {
4759- nextExecuteMillis = currentMillis + samplingInterval;
4760- while(Firmata.available()) {
4761- Firmata.processInput();
4762- }
4763- for(pin = 0; pin < TOTAL_ANALOG_PINS; pin++) {
4764- analogValue = analogRead(pin);
4765- if(analogValue != previousAnalogValues[pin]) {
4766- Firmata.sendAnalog(pin, analogValue);
4767- previousAnalogValues[pin] = analogValue;
4768- }
4769- }
4770- }
4771-}
4772-
4773-
4774
4775=== removed directory 'examples/Firmata/examples/AnalogFirmata'
4776=== removed file 'examples/Firmata/examples/AnalogFirmata/AnalogFirmata.pde'
4777--- examples/Firmata/examples/AnalogFirmata/AnalogFirmata.pde 2010-02-12 19:25:26 +0000
4778+++ examples/Firmata/examples/AnalogFirmata/AnalogFirmata.pde 1970-01-01 00:00:00 +0000
4779@@ -1,83 +0,0 @@
4780-/* This firmware supports as many analog ports as possible, all analog inputs,
4781- * four PWM outputs, and two with servo support.
4782- *
4783- * This example code is in the public domain.
4784- */
4785-#include <Firmata.h>
4786-#include <Servo.h>
4787-
4788-/*==============================================================================
4789- * GLOBAL VARIABLES
4790- *============================================================================*/
4791-
4792-/* servos */
4793-Servo servo9, servo10; // one instance per pin
4794-/* analog inputs */
4795-int analogInputsToReport = 0; // bitwise array to store pin reporting
4796-int analogPin = 0; // counter for reading analog pins
4797-/* timer variables */
4798-unsigned long currentMillis; // store the current value from millis()
4799-unsigned long nextExecuteMillis; // for comparison with currentMillis
4800-
4801-
4802-/*==============================================================================
4803- * FUNCTIONS
4804- *============================================================================*/
4805-
4806-void analogWriteCallback(byte pin, int value)
4807-{
4808- switch(pin) {
4809- case 9: servo9.write(value); break;
4810- case 10: servo10.write(value); break;
4811- case 3:
4812- case 5:
4813- case 6:
4814- case 11: // PWM pins
4815- analogWrite(pin, value);
4816- break;
4817- }
4818-}
4819-// -----------------------------------------------------------------------------
4820-// sets bits in a bit array (int) to toggle the reporting of the analogIns
4821-void reportAnalogCallback(byte pin, int value)
4822-{
4823- if(value == 0) {
4824- analogInputsToReport = analogInputsToReport &~ (1 << pin);
4825- }
4826- else { // everything but 0 enables reporting of that pin
4827- analogInputsToReport = analogInputsToReport | (1 << pin);
4828- }
4829- // TODO: save status to EEPROM here, if changed
4830-}
4831-
4832-/*==============================================================================
4833- * SETUP()
4834- *============================================================================*/
4835-void setup()
4836-{
4837- Firmata.setFirmwareVersion(0, 2);
4838- Firmata.attach(ANALOG_MESSAGE, analogWriteCallback);
4839- Firmata.attach(REPORT_ANALOG, reportAnalogCallback);
4840-
4841- servo9.attach(9);
4842- servo10.attach(10);
4843- Firmata.begin(57600);
4844-}
4845-
4846-/*==============================================================================
4847- * LOOP()
4848- *============================================================================*/
4849-void loop()
4850-{
4851- while(Firmata.available())
4852- Firmata.processInput();
4853- currentMillis = millis();
4854- if(currentMillis > nextExecuteMillis) {
4855- nextExecuteMillis = currentMillis + 19; // run this every 20ms
4856- for(analogPin=0;analogPin<TOTAL_ANALOG_PINS;analogPin++) {
4857- if( analogInputsToReport & (1 << analogPin) )
4858- Firmata.sendAnalog(analogPin, analogRead(analogPin));
4859- }
4860- }
4861-}
4862-
4863
4864=== removed file 'examples/Firmata/examples/AnalogFirmata/Makefile'
4865--- examples/Firmata/examples/AnalogFirmata/Makefile 2010-02-12 19:25:26 +0000
4866+++ examples/Firmata/examples/AnalogFirmata/Makefile 1970-01-01 00:00:00 +0000
4867@@ -1,263 +0,0 @@
4868-# Arduino makefile
4869-#
4870-# This makefile allows you to build sketches from the command line
4871-# without the Arduino environment (or Java).
4872-#
4873-# The Arduino environment does preliminary processing on a sketch before
4874-# compiling it. If you're using this makefile instead, you'll need to do
4875-# a few things differently:
4876-#
4877-# - Give your program's file a .cpp extension (e.g. foo.cpp).
4878-#
4879-# - Put this line at top of your code: #include <WProgram.h>
4880-#
4881-# - Write prototypes for all your functions (or define them before you
4882-# call them). A prototype declares the types of parameters a
4883-# function will take and what type of value it will return. This
4884-# means that you can have a call to a function before the definition
4885-# of the function. A function prototype looks like the first line of
4886-# the function, with a semi-colon at the end. For example:
4887-# int digitalRead(int pin);
4888-#
4889-# Instructions for using the makefile:
4890-#
4891-# 1. Copy this file into the folder with your sketch.
4892-#
4893-# 2. Below, modify the line containing "TARGET" to refer to the name of
4894-# of your program's file without an extension (e.g. TARGET = foo).
4895-#
4896-# 3. Modify the line containg "ARDUINO" to point the directory that
4897-# contains the Arduino core (for normal Arduino installations, this
4898-# is the hardware/cores/arduino sub-directory).
4899-#
4900-# 4. Modify the line containing "PORT" to refer to the filename
4901-# representing the USB or serial connection to your Arduino board
4902-# (e.g. PORT = /dev/tty.USB0). If the exact name of this file
4903-# changes, you can use * as a wildcard (e.g. PORT = /dev/tty.USB*).
4904-#
4905-# 5. At the command line, change to the directory containing your
4906-# program's file and the makefile.
4907-#
4908-# 6. Type "make" and press enter to compile/verify your program.
4909-#
4910-# 7. Type "make upload", reset your Arduino board, and press enter to
4911-# upload your program to the Arduino board.
4912-#
4913-# $Id: Makefile,v 1.7 2007/04/13 05:28:23 eighthave Exp $
4914-
4915-PORT = /dev/tty.usbserial-*
4916-TARGET := $(shell pwd | sed 's|.*/\(.*\)|\1|')
4917-ARDUINO = /Applications/arduino
4918-ARDUINO_SRC = $(ARDUINO)/hardware/cores/arduino
4919-ARDUINO_LIB_SRC = $(ARDUINO)/hardware/libraries
4920-INCLUDE = -I$(ARDUINO_SRC) -I$(ARDUINO)/hardware/tools/avr/avr/include \
4921- -I$(ARDUINO_LIB_SRC)/EEPROM \
4922- -I$(ARDUINO_LIB_SRC)/Firmata \
4923- -I$(ARDUINO_LIB_SRC)/Servo \
4924- -I$(ARDUINO_LIB_SRC)
4925-SRC = $(wildcard $(ARDUINO_SRC)/*.c)
4926-CXXSRC = applet/$(TARGET).cpp $(ARDUINO_SRC)/HardwareSerial.cpp \
4927- $(ARDUINO_LIB_SRC)/EEPROM/EEPROM.cpp \
4928- $(ARDUINO_LIB_SRC)/Firmata/Firmata.cpp \
4929- $(ARDUINO_LIB_SRC)/Servo/Servo.cpp \
4930- $(ARDUINO_SRC)/WMath.cpp
4931-HEADERS = $(wildcard $(ARDUINO_SRC)/*.h) $(wildcard $(ARDUINO_LIB_SRC)/*/*.h)
4932-
4933-MCU = atmega168
4934-#MCU = atmega8
4935-F_CPU = 16000000
4936-FORMAT = ihex
4937-UPLOAD_RATE = 19200
4938-
4939-# Name of this Makefile (used for "make depend").
4940-MAKEFILE = Makefile
4941-
4942-# Debugging format.
4943-# Native formats for AVR-GCC's -g are stabs [default], or dwarf-2.
4944-# AVR (extended) COFF requires stabs, plus an avr-objcopy run.
4945-DEBUG = stabs
4946-
4947-OPT = s
4948-
4949-# Place -D or -U options here
4950-CDEFS = -DF_CPU=$(F_CPU)
4951-CXXDEFS = -DF_CPU=$(F_CPU)
4952-
4953-# Compiler flag to set the C Standard level.
4954-# c89 - "ANSI" C
4955-# gnu89 - c89 plus GCC extensions
4956-# c99 - ISO C99 standard (not yet fully implemented)
4957-# gnu99 - c99 plus GCC extensions
4958-CSTANDARD = -std=gnu99
4959-CDEBUG = -g$(DEBUG)
4960-CWARN = -Wall -Wstrict-prototypes
4961-CTUNING = -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums
4962-#CEXTRA = -Wa,-adhlns=$(<:.c=.lst)
4963-
4964-CFLAGS = $(CDEBUG) $(CDEFS) $(INCLUDE) -O$(OPT) $(CWARN) $(CSTANDARD) $(CEXTRA)
4965-CXXFLAGS = $(CDEFS) $(INCLUDE) -O$(OPT)
4966-#ASFLAGS = -Wa,-adhlns=$(<:.S=.lst),-gstabs
4967-LDFLAGS =
4968-
4969-
4970-# Programming support using avrdude. Settings and variables.
4971-AVRDUDE_PROGRAMMER = stk500
4972-AVRDUDE_PORT = $(PORT)
4973-AVRDUDE_WRITE_FLASH = -U flash:w:applet/$(TARGET).hex
4974-AVRDUDE_FLAGS = -F -p $(MCU) -P $(AVRDUDE_PORT) -c $(AVRDUDE_PROGRAMMER) \
4975- -b $(UPLOAD_RATE) -q -V
4976-
4977-# Program settings
4978-CC = avr-gcc
4979-CXX = avr-g++
4980-OBJCOPY = avr-objcopy
4981-OBJDUMP = avr-objdump
4982-SIZE = avr-size
4983-NM = avr-nm
4984-AVRDUDE = avrdude
4985-REMOVE = rm -f
4986-MV = mv -f
4987-
4988-# Define all object files.
4989-OBJ = $(SRC:.c=.o) $(CXXSRC:.cpp=.o) $(ASRC:.S=.o)
4990-
4991-# Define all listing files.
4992-LST = $(ASRC:.S=.lst) $(CXXSRC:.cpp=.lst) $(SRC:.c=.lst)
4993-
4994-# Combine all necessary flags and optional flags.
4995-# Add target processor to flags.
4996-ALL_CFLAGS = -mmcu=$(MCU) -I. $(CFLAGS)
4997-ALL_CXXFLAGS = -mmcu=$(MCU) -I. $(CXXFLAGS)
4998-ALL_ASFLAGS = -mmcu=$(MCU) -I. -x assembler-with-cpp $(ASFLAGS)
4999-
5000-
The diff has been truncated for viewing.

Subscribers

People subscribed via source and target branches

to all changes: