forked from r-plus/substrate
-
Notifications
You must be signed in to change notification settings - Fork 0
/
postrm.mm
68 lines (54 loc) · 2.13 KB
/
postrm.mm
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
/* Cydia Substrate - Powerful Code Insertion Platform
* Copyright (C) 2008-2011 Jay Freeman (saurik)
*/
/* GNU Lesser General Public License, Version 3 {{{ */
/*
* Substrate is free software: you can redistribute it and/or modify it under
* the terms of the GNU Lesser General Public License as published by the
* Free Software Foundation, either version 3 of the License, or (at your
* option) any later version.
*
* Substrate is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
* License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with Substrate. If not, see <http://www.gnu.org/licenses/>.
**/
/* }}} */
#include <string.h>
#include <stdbool.h>
#include <unistd.h>
#include <Foundation/Foundation.h>
#include <stdlib.h>
#include "Cydia.hpp"
#include "LaunchDaemons.hpp"
int main(int argc, char *argv[]) {
if (argc < 2 || (
strcmp(argv[1], "abort-install") != 0 &&
strcmp(argv[1], "remove") != 0 &&
true)) return 0;
NSAutoreleasePool *pool([[NSAutoreleasePool alloc] init]);
NSFileManager *manager([NSFileManager defaultManager]);
NSError *error;
if (NSString *config = [NSString stringWithContentsOfFile:@ SubstrateLaunchConfig_ encoding:NSNonLossyASCIIStringEncoding error:&error]) {
NSArray *lines([config componentsSeparatedByString:@"\n"]);
NSMutableArray *copy([lines mutableCopy]);
[copy removeObject:@""];
[copy removeObject:@ SubstrateBootstrapExecute_];
if ([copy count] == 0)
[manager removeItemAtPath:@ SubstrateLaunchConfig_ error:&error];
else {
[copy addObject:@""];
if (![copy isEqualToArray:lines])
[[copy componentsJoinedByString:@"\n"] writeToFile:@ SubstrateLaunchConfig_ atomically:YES encoding:NSNonLossyASCIIStringEncoding error:&error];
}
}
#ifdef __arm__
if (MSClearLaunchDaemons())
FinishCydia("reboot");
#endif
[pool release];
return 0;
}