Index: resources/help/en/options
===================================================================
--- resources/help/en/options	(revision 2580)
+++ resources/help/en/options	(working copy)
@@ -163,11 +163,6 @@
               border have less quality.  
 
 Style options:
-
---style=name
-	Specify a different style name, rather than the default value
-	(which is the name default).
-
 --style-file=file
 	Specify an external file to obtain the style from.  "file" can
 	be a directory containing files such as info, lines, options
@@ -190,6 +185,11 @@
 	map-features.csv file here.  Support for that format is likely
 	to be dropped in the future.
 
+--style=name
+	Specify a style name. Must be used if --style-file points to a 
+  directory or zip file containing multiple styles. If --style-file 
+  is not used, it selects one of the builtin styles. 
+
 --list-styles
 	List the available styles. If this option is preceeded by a style-file
 	option then it lists the styles available within that file.
@@ -197,7 +197,8 @@
 --check-styles
 	Perform some checks on the available styles. If this option is 
   preceeded by a style-file option then it checks the styles 
-  available within that file.
+  available within that file. If it is also preceded by the style
+  option it will only check that style.
 
 --levels=levels code
 	Change the way that the levels on the map correspond to the zoom
Index: src/uk/me/parabola/mkgmap/main/Main.java
===================================================================
--- src/uk/me/parabola/mkgmap/main/Main.java	(revision 2580)
+++ src/uk/me/parabola/mkgmap/main/Main.java	(working copy)
@@ -327,13 +327,14 @@
 	 */
 	private void checkStyles() {
 		String[] names;
+		int checked = 0;
 		try {
 			StyleFileLoader loader = StyleFileLoader.createStyleLoader(styleFile, null);
 			names = loader.list();
 			loader.close();
 		} catch (FileNotFoundException e) {
 			log.debug("didn't find style file", e);
-			throw new ExitException("Could not list style file " + styleFile);
+			throw new ExitException("Could not check style file " + styleFile);
 		}
 
 		Arrays.sort(names);
@@ -350,7 +351,7 @@
 			if (names.length > 1){
 				System.out.println("checking style: " + name);
 			}
-			
+			++checked;
 			boolean performChecks = true;
 			if ("classpath:styles".equals(styleFile) && "default".equals(name) == false){ 
 					performChecks = false;
@@ -360,6 +361,8 @@
 				System.out.println("could not open style " + name);
 			}
 		}
+		if (checked == 0)
+			System.out.println("could not open style " + styleOption + " in " + styleFile );
 		System.out.println("finished check-styles");
 	}
 
Index: src/uk/me/parabola/mkgmap/osmstyle/JarFileLoader.java
===================================================================
--- src/uk/me/parabola/mkgmap/osmstyle/JarFileLoader.java	(revision 2580)
+++ src/uk/me/parabola/mkgmap/osmstyle/JarFileLoader.java	(working copy)
@@ -77,10 +77,7 @@
 			jarFile = jurl.getJarFile();
 			prefix = jurl.getEntryName();
 			if (prefix == null) {
-				if (name != null)
-					prefix = searchPrefix(jarFile, '/' + name + "/version");
-				else
-					prefix = searchPrefix(jarFile);
+				prefix = searchVersion(jarFile, name);
 			}
 
 			log.debug("jar prefix is", prefix);
@@ -89,17 +86,21 @@
 		}
 	}
 
-	private String searchPrefix(JarFile file) {
-		return searchPrefix(file, "/version");
-	}
-
-	private String searchPrefix(JarFile file, String end) {
+	/**
+	 * Find path in archive 
+	 * @param file the JarFile instance
+	 * @param style a style name or null to find any version file
+	 * @return return prefix of (first) entry that contains file version
+	 */
+	private String searchVersion(JarFile file, String style) {
 		Enumeration<JarEntry> en = file.entries();
+		String flatEnd = style==null ? "version" : style + "/version";
+		String end = "/" + flatEnd;
 		while (en.hasMoreElements()) {
 			JarEntry entry = en.nextElement();
-			String name = entry.getName();
-			if (name.endsWith(end))
-				return name.substring(0, name.length() - 7);
+			String ename = entry.getName();
+			if (ename.endsWith(end) || ename.equals(flatEnd))
+				return ename.substring(0, ename.length() - "version".length());
 		}
 		return null;
 	}
Index: src/uk/me/parabola/mkgmap/osmstyle/StyleImpl.java
===================================================================
--- src/uk/me/parabola/mkgmap/osmstyle/StyleImpl.java	(revision 2580)
+++ src/uk/me/parabola/mkgmap/osmstyle/StyleImpl.java	(working copy)
@@ -657,6 +657,17 @@
 		if (loc == null && name == null)
 			name = "default";
 
+		if (name == null){
+			StyleFileLoader loader;
+			try {
+				loader = StyleFileLoader.createStyleLoader(loc, null);
+				int numEntries = loader.list().length;
+				if (numEntries > 1)
+					throw new ExitException("Style file " + loc + " contains multiple styles, use option --style to select one.");
+			} catch (FileNotFoundException e) {
+				throw new ExitException("Could not open style file " + loc);
+			}
+		}
 		Style style = null;
 		try {
 			style = new StyleImpl(loc, name);
@@ -665,8 +676,15 @@
 			System.err.println("Error in style: " + e.getMessage());
 			throw new ExitException("Could not open style " + name);
 		} catch (FileNotFoundException e) {
-			String name1 = (name != null)? name: loc;
-			throw new ExitException("Could not open style " + name1);
+			String msg = "Could not open style ";
+			if (name != null){
+				msg += name;
+				if (loc != null)
+					msg += " in " + loc;
+			}
+			else 
+				msg += loc + " . Make sure that it points to a style or add the --style option.";
+			throw new ExitException(msg);
 		}
 		return style;
 	}
