diff options
author | Jay Freeman (saurik) <saurik@saurik.com> | 2011-12-27 00:42:39 +0000 |
---|---|---|
committer | Jay Freeman (saurik) <saurik@saurik.com> | 2011-12-27 00:45:27 +0000 |
commit | 4ab17bc29f65d1259559c7cf60a0f3ace2e7bb56 (patch) | |
tree | 39ece1a8b5df896ad6a24185e69c6cf3deb74ebf | |
parent | e67aeed974c631c8152e6c36c3d97a7b6836f3d5 (diff) |
Attempt to fix sbreload on 5.x.v1.1.3
-rw-r--r-- | sbreload.c | 18 |
1 files changed, 15 insertions, 3 deletions
@@ -121,10 +121,12 @@ void stop() { sleep(1); } +#define SpringBoard_plist "/System/Library/LaunchDaemons/com.apple.SpringBoard.plist" + int main(int argc, const char *argv[]) { _assert(argc == 1, "usage: sbreload"); - CFDictionaryRef plist = CreateMyPropertyListFromFile("/System/Library/LaunchDaemons/com.apple.SpringBoard.plist"); + CFDictionaryRef plist = CreateMyPropertyListFromFile(SpringBoard_plist); _assert(plist != NULL, "CreateMyPropertyListFromFile() == NULL"); launch_data_t job = CF2launch_data(plist); @@ -157,8 +159,18 @@ int main(int argc, const char *argv[]) { launch_data_free(response); - fprintf(stderr, "notify_post(com.apple.mobile.springboard_teardown)\n"); - notify_post("com.apple.mobile.springboard_teardown"); + // 600 is being used to approximate 4.x/5.x boundary + if (kCFCoreFoundationVersionNumber < 600) { + fprintf(stderr, "notify_post(com.apple.mobile.springboard_teardown)\n"); + notify_post("com.apple.mobile.springboard_teardown"); + } else { + // XXX: this code is preferable to launchctl unoad but it requires libvproc? :( + //vproc_err_t *error = _vproc_send_signal_by_label(label, VPROC_MAGIC_UNLOAD_SIGNAL); + //_assert(error == NULL, "_vproc_send_signal_by_label(UNLOAD) != NULL"); + + fprintf(stderr, "launchctl unload SpringBoard.plist\n"); + system("launchctl unload " SpringBoard_plist); + } if (pid != -1) { fprintf(stderr, "waiting for kill(%u) != 0...\n", pid); |