Index: doc/options.txt
===================================================================
--- doc/options.txt	(revision 3420)
+++ doc/options.txt	(working copy)
@@ -286,9 +286,14 @@
 ;--copyright-message=note
 : 	Specify a copyright message for files that do not contain one.
 
+;--copyright-file=file
+: 	Specify copyright messages from a file.
+Note that the first copyright message is not displayed on a device, but is 
+shown in BaseCamp.
+
 ;--license-file=file
 : 	Specify a file which content will be added as license. 
-All entrys of all maps will be merged in the overview map.
+All entries of all maps will be merged in the overview map.
 
 === Optimization options ===
 
Index: resources/help/en/options
===================================================================
--- resources/help/en/options	(revision 3420)
+++ resources/help/en/options	(working copy)
@@ -283,6 +283,11 @@
 --copyright-message=note
 	Specify a copyright message for files that do not contain one.
 
+--copyright-file=file
+	Specify copyright messages from a file.
+	Note that the first copyright message is not displayed on a device, but is 
+	shown in BaseCamp.
+
 --license-file=file
 	Specify a file which content will be added as license. 
   All entrys of all maps will be merged in the overview map.
Index: src/uk/me/parabola/mkgmap/build/MapBuilder.java
===================================================================
--- src/uk/me/parabola/mkgmap/build/MapBuilder.java	(revision 3420)
+++ src/uk/me/parabola/mkgmap/build/MapBuilder.java	(working copy)
@@ -862,13 +862,14 @@
 			map.addInfo(info);
 		if (copyrights.isEmpty()){
 			// There has to be (at least) two copyright messages or else the map
-			// does not show up.  The second one will be displayed at startup,
-			// although the conditions where that happens are not known.
-			map.addCopyright("program licenced under GPL v2");
+			// does not show up.  The second and subsequent ones will be displayed
+			// at startup, although the conditions where that happens are not known.
+			// All copyright messages are displayed in BaseCamp.
+			String[] copyrightMessages = src.copyrightMessages();
+			if (copyrightMessages.length < 2)
+				map.addCopyright("program licenced under GPL v2");
 
-			// This one gets shown when you switch on, so put the actual
-			// map copyright here.
-			for (String cm : src.copyrightMessages())
+			for (String cm : copyrightMessages)
 				map.addCopyright(cm);
 		} else {
 			for (String cm : copyrights)
Index: src/uk/me/parabola/mkgmap/reader/osm/Element.java
===================================================================
--- src/uk/me/parabola/mkgmap/reader/osm/Element.java	(revision 3420)
+++ src/uk/me/parabola/mkgmap/reader/osm/Element.java	(working copy)
@@ -25,7 +25,7 @@
 public abstract class Element {
 	private Tags tags;
 	private long id;
-	private long OriginalId;
+	private long originalId;
 
 	public int getTagCount() {
 		return (tags == null ? 0 : tags.size());
@@ -171,13 +171,19 @@
 		return id;
 	}
 
+	/**
+	 * Returns the Id of the original OSM element on which this element was based.
+	 * <p>
+	 * The Id of the original element will be different from the Id of this
+	 * element if this element uses a faked Id.
+	 */
 	public long getOriginalId() {
-		return OriginalId;
+		return originalId;
 	}
 
 	protected void setId(long id) {
 		this.id = id;
-		OriginalId = id;
+		originalId = id;
 	}
 
 	public void setFakeId() {
Index: src/uk/me/parabola/mkgmap/reader/osm/OsmMapDataSource.java
===================================================================
--- src/uk/me/parabola/mkgmap/reader/osm/OsmMapDataSource.java	(revision 3420)
+++ src/uk/me/parabola/mkgmap/reader/osm/OsmMapDataSource.java	(working copy)
@@ -17,6 +17,7 @@
 package uk.me.parabola.mkgmap.reader.osm;
 
 import java.io.BufferedReader;
+import java.io.File;
 import java.io.FileNotFoundException;
 import java.io.FileReader;
 import java.io.IOException;
@@ -28,6 +29,7 @@
 import java.util.Map;
 import java.util.Set;
 
+import uk.me.parabola.imgfmt.ExitException;
 import uk.me.parabola.imgfmt.FormatException;
 import uk.me.parabola.imgfmt.Utils;
 import uk.me.parabola.log.Logger;
@@ -135,6 +137,28 @@
 	 * @return A list of copyright messages as a String array.
 	 */
 	public String[] copyrightMessages() {
+		String copyrightFileName = getConfig().getProperty("copyright-file", null);
+		if (copyrightFileName != null)
+		{
+			File file = new File(copyrightFileName);
+			List<String> copyrightArray = new ArrayList<String>();
+			try {
+				BufferedReader reader = new BufferedReader(new FileReader(file));
+				String text;
+				while ((text = reader.readLine()) != null) {
+					copyrightArray.add(text);
+				}
+
+				reader.close();
+			} catch (FileNotFoundException e) {
+				throw new ExitException("Could not open copyright file " + copyrightFileName);
+			} catch (IOException e) {
+				throw new ExitException("Error reading copyright file " + copyrightFileName);
+			}
+			String[] copyright = new String[copyrightArray.size()];
+			copyrightArray.toArray(copyright);
+			return copyright;
+		}
 		String note = getConfig().getProperty("copyright-message", 
 				"OpenStreetMap.org contributors. See: http://wiki.openstreetmap.org/index.php/Attribution");
 		return new String[] { note };
