diff --git a/apps/i2psnark/java/src/org/klomp/snark/SnarkManager.java b/apps/i2psnark/java/src/org/klomp/snark/SnarkManager.java index 03d4b8dc0..688cf7e95 100644 --- a/apps/i2psnark/java/src/org/klomp/snark/SnarkManager.java +++ b/apps/i2psnark/java/src/org/klomp/snark/SnarkManager.java @@ -1315,11 +1315,12 @@ public class SnarkManager implements CompleteListener { running = false; } // Were we running last time? + String link = linkify(torrent); if (!dontAutoStart && shouldAutoStart() && running) { torrent.startTorrent(); - addMessage(_t("Torrent added and started: \"{0}\"", torrent.getBaseName())); + addMessageNoEscape(_t("Torrent added and started: {0}", link)); } else { - addMessage(_t("Torrent added: \"{0}\"", torrent.getBaseName())); + addMessageNoEscape(_t("Torrent added: {0}", link)); } } @@ -1982,7 +1983,7 @@ public class SnarkManager implements CompleteListener { if (shouldRemove) removeTorrentStatus(torrent); if (!wasStopped) - addMessage(_t("Torrent stopped: \"{0}\"", torrent.getBaseName())); + addMessageNoEscape(_t("Torrent stopped: {0}", linkify(torrent))); } return torrent; } @@ -2001,7 +2002,7 @@ public class SnarkManager implements CompleteListener { boolean wasStopped = torrent.isStopped(); torrent.stopTorrent(); if (!wasStopped) - addMessage(_t("Torrent stopped: \"{0}\"", torrent.getBaseName())); + addMessageNoEscape(_t("Torrent stopped: {0}", linkify(torrent))); if (shouldRemove) removeTorrentStatus(torrent); } @@ -2087,14 +2088,8 @@ public class SnarkManager implements CompleteListener { Storage storage = snark.getStorage(); if (meta == null || storage == null) return; - StringBuilder buf = new StringBuilder(256); - String base = DataHelper.escapeHTML(storage.getBaseName()); - buf.append("").append(base).append(""); if (snark.getDownloaded() > 0) - addMessageNoEscape(_t("Download finished: {0}", buf.toString())); // + " (" + _t("size: {0}B", DataHelper.formatSize2(len)) + ')'); + addMessageNoEscape(_t("Download finished: {0}", linkify(snark))); updateStatus(snark); } @@ -2150,7 +2145,7 @@ public class SnarkManager implements CompleteListener { _magnets.remove(snark.getName()); removeMagnetStatus(snark.getInfoHash()); addMessage(_t("Metainfo received for {0}", snark.getName())); - addMessage(_t("Starting up torrent {0}", storage.getBaseName())); + addMessageNoEscape(_t("Starting up torrent {0}", linkify(snark))); return name; } catch (IOException ioe) { addMessage(_t("Failed to copy torrent file to {0}", name)); @@ -2184,6 +2179,27 @@ public class SnarkManager implements CompleteListener { // End Snark.CompleteListeners + /** + * An HTML link to the file if complete and a single file, + * to the directory if not complete or not a single file, + * or simply the unlinkified name of the snark if a magnet + * + * @since 0.9.23 + */ + private String linkify(Snark snark) { + MetaInfo meta = snark.getMetaInfo(); + Storage storage = snark.getStorage(); + if (meta == null || storage == null) + return DataHelper.escapeHTML(snark.getBaseName()); + StringBuilder buf = new StringBuilder(256); + String base = DataHelper.escapeHTML(storage.getBaseName()); + buf.append("").append(base).append(""); + return buf.toString(); + } + /** * Add all magnets from the config file * @@ -2412,7 +2428,7 @@ public class SnarkManager implements CompleteListener { boolean connected = _util.connected(); if ((!connected) && !_util.isConnecting()) addMessage(_t("Opening the I2P tunnel")); - addMessage(_t("Starting up torrent {0}", snark.getBaseName())); + addMessageNoEscape(_t("Starting up torrent {0}", linkify(snark))); if (connected) { snark.startTorrent(); } else { @@ -2570,13 +2586,14 @@ public class SnarkManager implements CompleteListener { updateStatus(snark); if (_log.shouldWarn()) _log.warn("Finished recheck of " + snark.getBaseName() + " changed? " + changed); + String link = linkify(snark); if (changed) { int pieces = snark.getPieces(); double completion = (pieces - snark.getNeeded()) / (double) pieces; String complete = (new DecimalFormat("0.00%")).format(completion); - addMessage(_t("Finished recheck of torrent {0}, now {1} complete", snark.getBaseName(), complete)); + addMessageNoEscape(_t("Finished recheck of torrent {0}, now {1} complete", link, complete)); } else { - addMessage(_t("Finished recheck of torrent {0}, unchanged", snark.getBaseName())); + addMessageNoEscape(_t("Finished recheck of torrent {0}, unchanged", link)); } } catch (Exception e) { _log.error("Error rechecking " + snark.getBaseName(), e); diff --git a/history.txt b/history.txt index f04c70cac..08fdabe18 100644 --- a/history.txt +++ b/history.txt @@ -1,7 +1,18 @@ +2015-10-21 zzz + * i2psnark: More consistency and torrent links in messages + * Router: Increase timer thread priority + +2015-10-17 zzz + * Crypto: + - Consolidate duplicate unlimited strength crypto check code + - Disable TLS_DHE_DSS_WITH_AES_128_CBC_SHA + 2015-10-16 zzz + * Console: Add Java 6 warning to summary bar * i2psnark: - Fix deadlock (ticket #1432) - Add "smart sort" option, set sort based on language (tickets #637, #1303) + - Don't balloon files on ARM (ticket #1684) 2015-10-14 zzz * Update: diff --git a/router/java/src/net/i2p/router/RouterVersion.java b/router/java/src/net/i2p/router/RouterVersion.java index 80cfb9c84..5b1ba79e3 100644 --- a/router/java/src/net/i2p/router/RouterVersion.java +++ b/router/java/src/net/i2p/router/RouterVersion.java @@ -18,7 +18,7 @@ public class RouterVersion { /** deprecated */ public final static String ID = "Monotone"; public final static String VERSION = CoreVersion.VERSION; - public final static long BUILD = 18; + public final static long BUILD = 19; /** for example "-test" */ public final static String EXTRA = "";