[17:01:33] * saurik has the category overlay stuff in place for WinterBoard, and just needs to fill out the functionality[17:01:37] <nvr> heh thatd be great news if installer became pay only[17:01:49] <nvr> lol[17:01:52] <francis> installer wont, its nullriver's honeypot of donations[17:01:53] <_BigBoss_> not intsaller, summerboard[17:01:58] <nvr> ohh[17:02:03] <francis> but bigboss[17:02:07] <francis> with customize 2.0[17:02:13] * saurik (also has a slightly better attack at redirecting methods than he believes summerboard was capable of, which should make development easier)[17:02:14] <francis> how can a non-free summerboard compete?[17:02:32] <_BigBoss_> francis easy when there's nothing else and only pay ver[17:02:40] <francis> customize 2.0[17:02:40] <saurik> (like, as far as being able to rapidly attack catepiller/kate features)[17:02:46] <francis> and winterboard soon[17:02:49] <_BigBoss_> customize isnt a summerboard replacement[17:02:57] <_BigBoss_> and will those solve 80 app limit?[17:03:09] <francis> ask saurik :P[17:03:12] <saurik> what is the 80 app limit, btw?[17:03:22] <francis> springboard doesnt like having more than 80apps[17:03:28] <francis> it does not start[17:03:30] <saurik> does anything currently solve that?[17:03:33] <_BigBoss_> put 80 apps on yoru phone and springboard goes into a crash loop[17:03:34] <francis> summerboard[17:03:37] <nvr> interesting[17:03:43] <eggy> heh[17:03:52] <eggy> fail[17:03:55] <nvr> so winterboard will have to fix that too[17:03:57] <saurik> ok, if summerboard does it, then it should be easy to resolve[17:04:11] <nvr> yep cant be that hard[17:04:49] <_BigBoss_> "cant be that hard" does anyone know where to start?[17:04:55] <_BigBoss_> If not, it's infinitely difficult[17:05:19] <nvr> if they did it we know it can be done[17:05:34] <_BigBoss_> it doesnt matter if it was done. If you dont know how to do it you cant say "it cant be that hard"[17:06:07] <nvr> yes your correct but at least we know its possible[17:06:25] <_BigBoss_> then say "its possible" not "it cant be that hard". That's a big peeve of mine[17:06:28] <francis> LuLz[17:06:37] <_BigBoss_> I get app req's "can yo umake this, it cant be that hard" by someone that cant even code[17:06:38] <saurik> _BigBoss_: summerboard overrides like 15 methods[17:06:40] <nvr> k sorry[17:06:43] <saurik> _BigBoss_: it has to be one of those[17:07:02] <_BigBoss_> ok[17:07:04] <francis> _BigBoss_: it can't be hard to avoid saying it cant be hard[17:07:27] Quit Lazarus has left this server (Ping timeout).[17:07:30] <_BigBoss_> how does summerboard insert itself?[17:07:52] <saurik> it uses a category[17:07:55] <saurik> http://svn.saurik.com/repos/menes/trunk/winterboard/[17:08:16] <saurik> that does the same thing, right now to override something in the bluetooth manager for one of Okori's clients (won't be in an actual released WinterBoard)[17:08:15] <_BigBoss_> what is "a category"?[17:08:31] <saurik> it's an objective-c feature that lets you extend an existing class by providing new messages[17:08:45] <saurik> if you have a message with the same name, the last category to get added wins[17:08:56] <saurik> so winterboard/summerboard compile two files[17:08:58] <saurik> a dylib and a bundle[17:09:07] <saurik> the dylib is inserted using DYLIB_INSERT_LIBRARIES[17:09:13] <saurik> here is the code for my dylib:[17:09:14] <saurik> http://svn.saurik.com/repos/menes/trunk/winterboard/Initialization.m[17:09:30] <saurik> it just verifies it is in springboard, disables itself for it's children (removes from DYLIB_...)[17:09:35] <saurik> and then loads the bundle[17:09:46] <saurik> I also take the time in there to rename some existing messages[17:09:50] <saurik> as categories really _replace_[17:09:53] <saurik> they don't just overlap[17:09:56] <saurik> the original is gone[17:10:12] <saurik> currently my bundle just has that aforementioned bluetooth hack[17:10:21] <saurik> (make a file on the filesystem if a bluetooth headset is connected)[17:10:24] <saurik> http://svn.saurik.com/repos/menes/trunk/winterboard/DevEngine.mm[17:10:46] <saurik> the first @interface is just to name the renamed method (as I needed to be able to call through to the original)[17:10:50] <saurik> it doesn't do anything[17:10:56] <_BigBoss_> sounds cool. I didnt know about categories or insert libraries[17:10:58] <saurik> the latter @implementation block overrides the method[17:11:15] <saurik> the fact that it is a "category" is due to the name in () after the class name[17:11:51] <saurik> all summerboard is then doing is replacing some simple methods[17:11:52] <saurik> example:[17:11:58] <saurik> [SBApplicationIcon(SummerBoard) icon][17:12:11] <saurik> that is probably some accessor that probably returns a UIImage * or something for the icon[17:12:56] <saurik> all you then have to do is classdump springboard[17:13:19] <saurik> and it's actually a pretty simple/fun party to start hacking the existing application[17:13:49] <saurik> (the latest include- contains my class dump of springboard which has some fixes for the #include paths, but you can do that yourself pretty quickly)[17:15:55] <_BigBoss_> cool it does sound fun[17:15:57] <saurik> oh, and you have to compile your .dylib with a "module initializer"[17:16:06] <saurik> you can see that in the makefile[17:16:44] <saurik> and the bundle needs to be compiled with a fairly standard (for bundles) -flat_namespace -undefined suppress in order to let it bind to the objective-c symbols exported by the executable[17:16:52] <saurik> (as you can't pass springboard back into the link line to link against it)[...][17:20:56] <saurik> _BigBoss_: well, I'm definitely not attached to being "the guy" for winterboard, so if you'd like to work on that with me, I'd love that (and can give you svn commit access); also, if you'd like to use that setup code in your own programs, go ahead (in case that wasn't obvious, as I think I haven't put my standard BSD license at the top of those files yet)[17:21:20] <_BigBoss_> saurik i may be interested in that task[...][18:01:02] <saurik> the way summerboard works isn't to attach to an existing process[18:01:16] <saurik> (which is possible, but /is/ somewhat hard if you don't know enough assembly)[18:01:28] <saurik> but instead to insert the dylib using DYLD_INSERT_LIBRARIES[18:01:51] <spicychicken> yeah, so I was working on it both ways[18:03:17] <spicychicken> so what does the code you have now *do*?[18:03:40] <saurik> it injects itself into springboard; i.e., all the bootstrapping parrts[18:04:41] <saurik> right now the only thing it's replacing is something temporary: a hack to detect that a bluetooth headset is attached, for one of my clienets[18:04:45] <saurik> clienets -> clients[18:06:38] * saurik (needed, last thursday or something, on very short notice that feature, so he spent the hour to write the .dylib/bundle injection as WinterBoard and then used it for his client by adding the bluetooth code)[18:07:20] <spicychicken> nice