From: JP Date: Tue, 13 Mar 2012 11:51:09 +0000 (+0100) Subject: Fix quoting in config file X-Git-Tag: 0.2~1 X-Git-Url: http://www.vanbest.org/gitweb/?a=commitdiff_plain;h=3740332257a9c6662eb764d863c8b55442d19adf;p=tv_grab_nl_java Fix quoting in config file --- diff --git a/tv_grab_nl_java/src/org/vanbest/xmltv/Config.java b/tv_grab_nl_java/src/org/vanbest/xmltv/Config.java index 666acac..45a2687 100644 --- a/tv_grab_nl_java/src/org/vanbest/xmltv/Config.java +++ b/tv_grab_nl_java/src/org/vanbest/xmltv/Config.java @@ -37,75 +37,43 @@ public class Config { out.close(); } - public static String unescape(String s) { - String result = s.trim(); - if (result.charAt(0)=='"') { - result = result.substring(1, result.length()-1); - result = result.replaceAll("\\:",":").replaceAll("\\\"", "\""); - } - return result; - } - public static String escape(String s) { - return "\"" + s.replaceAll("\"", "\\\"").replaceAll(":", "\\:") + "\""; + return "\"" + s.replaceAll("\\\"", "\\\\\"") + "\""; } - - public static String[] old_splitLine(String s) { - int colon = 0; - while (true) { - colon = s.indexOf(':', colon+1); - if (colon<0 || s.charAt(colon-1) != '\\') { - break; - } - } - if (colon<0) { - String[] parts = {s}; - return parts; - } - String id = s.substring(0, colon).trim(); - int firstColon = colon; - while (true) { - colon = s.indexOf(':', colon+1); - if (colon<0 || s.charAt(colon-1) != '\\') { - break; - } - } - if (colon<0) { - String name = unescape(s.substring(firstColon+1)); - - String[] parts = {id, name}; - return parts; - } - String name = unescape(s.substring(firstColon+1, colon)); - String icon = unescape(s.substring(colon+1)); - String[] parts = {id,name,icon}; - return parts; - } public static List splitLine(String s) { - int colon = 0; - int prev = 0; List parts = new ArrayList(5); + int pos=0; while (true) { - // Find first unescaped colon - while (true) { - colon = s.indexOf(':', prev); - if (colon<0 || s.charAt(colon-1) != '\\') { + // Find first colon outside quotes + boolean quoted=false; + int quoteStart=-1; + StringBuffer buf = new StringBuffer(); + for (; pos=s.length()) { break; - } else { - parts.add(unescape(s.substring(prev,colon))); - prev = colon+1; } + pos++; } return parts; } - public static Config readConfig(File file) { Config result = new Config(); try {