diff options
-rw-r--r-- | Cydia.mm | 28 | ||||
-rwxr-xr-x | Library/move.sh | 59 |
2 files changed, 81 insertions, 6 deletions
@@ -937,6 +937,8 @@ void AddTextView(NSMutableDictionary *fields, NSMutableArray *packages, NSString NSString *type_; NSString *version_; + NSString *defaultIcon_; + BOOL trusted_; } @@ -954,6 +956,8 @@ void AddTextView(NSMutableDictionary *fields, NSMutableArray *packages, NSString - (NSString *) label; - (NSString *) origin; - (NSString *) version; + +- (NSString *) defaultIcon; @end @implementation Source @@ -1001,7 +1005,9 @@ void AddTextView(NSMutableDictionary *fields, NSMutableArray *packages, NSString while (!value.empty() && value[0] == ' ') value = value.substr(1); - if (name == "Description") + if (name == "Default-Icon") + defaultIcon_ = [[NSString stringWithCString:value.c_str()] retain]; + else if (name == "Description") description_ = [[NSString stringWithCString:value.c_str()] retain]; else if (name == "Label") label_ = [[NSString stringWithCString:value.c_str()] retain]; @@ -1046,6 +1052,10 @@ void AddTextView(NSMutableDictionary *fields, NSMutableArray *packages, NSString return version_; } +- (NSString *) defaultIcon { + return defaultIcon_; +} + @end /* }}} */ /* Package Class {{{ */ @@ -1707,7 +1717,7 @@ NSString *Scour(const char *field, const char *begin, const char *end) { [description_ setBackgroundColor:clear]; [description_ setFont:small]; - source_ = [[UITextLabel alloc] initWithFrame:CGRectMake(12, 72, 150, 20)]; + source_ = [[UITextLabel alloc] initWithFrame:CGRectMake(12, 72, 225, 20)]; [source_ setBackgroundColor:clear]; [source_ setFont:large]; @@ -1734,9 +1744,13 @@ NSString *Scour(const char *field, const char *begin, const char *end) { } - (void) setPackage:(Package *)package { + Source *source = [package source]; + UIImage *image = nil; if (NSString *icon = [package icon]) image = [UIImage imageAtPath:[icon substringFromIndex:6]]; + if (image == nil) if (NSString *icon = [source defaultIcon]) + image = [UIImage imageAtPath:[icon substringFromIndex:6]]; if (image == nil) image = [UIImage applicationImageNamed:@"unknown.png"]; @@ -1748,16 +1762,18 @@ NSString *Scour(const char *field, const char *begin, const char *end) { [version_ setText:[package latest]]; [description_ setText:[package tagline]]; - Source *source = [package source]; NSString *label; bool trusted; - if (source == nil) { + if (source != nil) { + label = [source label]; + trusted = [source trusted]; + } else if ([[package id] isEqualToString:@"firmware"]) { label = @"Apple"; trusted = false; } else { - label = [source label]; - trusted = [source trusted]; + label = @"Unknown/Local"; + trusted = false; } [source_ setText:[NSString stringWithFormat:@"from %@", label]]; diff --git a/Library/move.sh b/Library/move.sh new file mode 100755 index 0000000..31c89e4 --- /dev/null +++ b/Library/move.sh @@ -0,0 +1,59 @@ +#!/bin/bash + +shopt -s extglob nullglob + +function df_() { + free=$(df -B1 "$1") + free=${free% *%*} + free=${free%%*( )} + free=${free##* } + echo "${free}" +} + +function mv_() { + src=$1 + dst=$2 + + if [[ -e ${dst} ]]; then + dst=$(mktemp -d /var/cydia.XXXXXX) + else + mkdir -p "${dst}" + fi + + if [[ -e ${src} ]]; then + chmod --reference="${src}" "${dst}" + chown --reference="${src}" "${dst}" + + cp -aT "${src}" "${dst}" || { + rm -rf "${dst}" + exit 1 + } + + rm -rf "${src}" + else + chmod 775 "${dst}" + chown root.admin "${dst}" + fi + + ln -s "${dst}" "${src}" +} + +function shift_() { + dir=$1 + dst=$2 + + if [[ -d ${dir} && ! -h ${dir} ]]; then + used=$(du -bs "${dir}") + used=${used%%$'\t'*} + free=$(df_ /var) + + if [[ $((used + 524288)) -lt ${free} ]]; then + mv_ "${dir}" "${dst}" + fi + elif [[ -h ${dir} && ! -e ${dir} ]]; then + rm -f "${dir}" + mv_ "${dir}" "${dst}" + fi +} + +shift_ "$@" |