View Single Post
Old 12-26-2009, 09:53 AM   #5
nrapallo
GuteBook/Mobi2IMP Creator
nrapallo ought to be getting tired of karma fortunes by now.nrapallo ought to be getting tired of karma fortunes by now.nrapallo ought to be getting tired of karma fortunes by now.nrapallo ought to be getting tired of karma fortunes by now.nrapallo ought to be getting tired of karma fortunes by now.nrapallo ought to be getting tired of karma fortunes by now.nrapallo ought to be getting tired of karma fortunes by now.nrapallo ought to be getting tired of karma fortunes by now.nrapallo ought to be getting tired of karma fortunes by now.nrapallo ought to be getting tired of karma fortunes by now.nrapallo ought to be getting tired of karma fortunes by now.
 
nrapallo's Avatar
 
Posts: 2,958
Karma: 2530691
Join Date: Dec 2007
Location: Toronto, Canada
Device: REB1200 EBW1150 Device: T1 NSTG iLiad_v2 NC Device: Asus_TF Next1 WPDN
Quote:
Originally Posted by nrapallo View Post
Now what else could be hacked?
Let's see what else, within that mobipocket.jar (system v2.12), looks interesting:

be.class - file-types supported
Code:
    public final Vector ck() {
	String[] strings
	    = { ".prc", ".pdb", ".mobi", ".txt", ".htm", ".html" };
	return a(hF, strings);
    }
Q.class - guide items supported
Code:
    private void W() {
	cw = null;
	cx = null;
	aQ[] var_aQs;
	if (ac.aw().as().Z()
	    && ((var_aQs = cu.dW.cQ()) != null && var_aQs.length != 0)) {
	    System.out.println("find the guide icons,guide items number:"
			       + var_aQs.length);
	    for (int i = 0; i < var_aQs.length; i++) {
		System.out.println("GuideItem:name=[" + var_aQs[i].gz
				   + "],title=[" + var_aQs[i].A + "]");
		if (var_aQs[i].gz.equalsIgnoreCase("toc")
		    || var_aQs[i].A.equalsIgnoreCase("Table of Contents"))
		    cw = var_aQs[i];
		if (var_aQs[i].gz.equalsIgnoreCase("start")
		    || var_aQs[i].gz.equalsIgnoreCase("other.ms-firstpage")
		    || var_aQs[i].A.toUpperCase().startsWith("START READING")
		    || var_aQs[i].A.toUpperCase().startsWith("BEGIN READING"))
		    cx = var_aQs[i];
	    }
	}
    }
k.class - search dictionary pop-up
Code:
    public final void p() {
	if (hD == null) {
	    hD = new bz(hE.getGraphics(), "test", bv.il, null);
	    ap = new L("words list", new Dimension(704, 560),
		       new Point(32, 32), new w());
	    ap.ai();
	    aq = new bc(null,
			"/com/irex/mobipocket/resources/btn_start_search.png",
			true, hE, new Dimension(102, 44), new Point(634, 610));
	    aq.q(2);
	    as = new bm(X.getString("Search String: "), new Dimension(588, 44),
			new Point(32, 610));
	    as.q(2);
	    as.ai();
	    at = (new cA
		  ((X.getString
		    ("Enter the first characters of a word and click on the search button")),
		   new Dimension(704, 12), new Point(32, 662)));
...
X.class - load initial mobipocket settings
Code:
    public static boolean ah() {
	Properties properties = new Properties();
	try {
	    properties.load(new FileInputStream("mobi.properties"));
	} catch (Exception exception) {
	    Exception exception_24_;
	    (exception_24_ = exception).printStackTrace();
	    return false;
	}
	dq = properties.getProperty("reader_default_font");
	if (dq == null)
	    dq = "Sans";
	String string;
	if ((string = properties.getProperty("baseclass_res_reader"))
	    == null) {
	    System.out.println
		("can't find the key [baseclass_res_reader] in property file:mobi.properties");
	    return false;
	}
...
bK.class - hmmm, ... what's an oeb:livebook?
Code:
    private boolean b(cB var_cB) {
	if ((b = var_cB.m((short) 59)) != -1) {
	    ai = 3;
	    return true;
	}
	if ((gg = var_cB.n((short) 97)) != null) {
	    String string;
	    if ((string = gg.toLowerCase()).startsWith("http")) {
		ai = 1;
		return true;
	    }
	    if (string.length() > 0 && string.charAt(0) == '$') {
		ai = 30;
		return true;
	    }
	    if (string.startsWith("oeb:livebook")) {
		ai = 12;
		return true;
	    }
	}
That's it for now!

I'm really looking forward to finding the HTML "table" processing code within one of those classes so that I can attempt to CORRECT a bug when internal hyperlinks are within a table i.e like a 'Table of Contents' in many Gutenberg ebooks. In this mobipocket java reader, those hyperlinks DO NOT work and since there is no reason that they shouldn't work, this may be my Number One hacking priority... if I can locate it, that is...
nrapallo is offline   Reply With Quote