]> git.saurik.com Git - cydia.git/commitdiff
Merge branch 'master' of saurik.com:cydia into url-tabbar
authorGrant Paul <chpwn@chpwn.com>
Wed, 5 Jan 2011 07:31:15 +0000 (23:31 -0800)
committerGrant Paul <chpwn@chpwn.com>
Wed, 5 Jan 2011 07:31:15 +0000 (23:31 -0800)
106 files changed:
MobileCydia.app/Default-Landscape.png
MobileCydia.app/Default-Portrait.png
MobileCydia.app/Icon-Small-50.png
MobileCydia.app/Icon-Small.png
MobileCydia.app/Icon-Small@2x.png
MobileCydia.app/Modes/DOWNGRADE.png
MobileCydia.app/Modes/INSTALL.png
MobileCydia.app/Modes/PURGE.png
MobileCydia.app/Modes/REINSTALL.png
MobileCydia.app/Modes/REMOVE.png
MobileCydia.app/Modes/UPGRADE.png
MobileCydia.app/Purposes/commercial.png
MobileCydia.app/Purposes/console.png
MobileCydia.app/Purposes/daemon.png
MobileCydia.app/Purposes/extension.png
MobileCydia.app/Purposes/library.png
MobileCydia.app/Purposes/uikit.png
MobileCydia.app/Purposes/x.png
MobileCydia.app/Sections/Addons.png
MobileCydia.app/Sections/Administration.png
MobileCydia.app/Sections/Archiving.png
MobileCydia.app/Sections/Blanks.png
MobileCydia.app/Sections/Books.png
MobileCydia.app/Sections/Carrier Bundles.png
MobileCydia.app/Sections/Communication.png
MobileCydia.app/Sections/Data Storage.png
MobileCydia.app/Sections/Development.png
MobileCydia.app/Sections/Dictionaries.png
MobileCydia.app/Sections/Education.png
MobileCydia.app/Sections/Entertainment.png
MobileCydia.app/Sections/Fonts.png
MobileCydia.app/Sections/Games.png
MobileCydia.app/Sections/Health and Fitness.png
MobileCydia.app/Sections/Imaging.png
MobileCydia.app/Sections/Java.png
MobileCydia.app/Sections/Keyboards.png
MobileCydia.app/Sections/Localization.png
MobileCydia.app/Sections/Messaging.png
MobileCydia.app/Sections/Multimedia.png
MobileCydia.app/Sections/Navigation.png
MobileCydia.app/Sections/Networking.png
MobileCydia.app/Sections/Packaging.png
MobileCydia.app/Sections/Productivity.png
MobileCydia.app/Sections/Repositories.png
MobileCydia.app/Sections/Ringtones.png
MobileCydia.app/Sections/Scripting.png
MobileCydia.app/Sections/Security.png
MobileCydia.app/Sections/Site-Specific Apps.png
MobileCydia.app/Sections/Social.png
MobileCydia.app/Sections/Soundboards.png
MobileCydia.app/Sections/System.png
MobileCydia.app/Sections/Terminal Support.png
MobileCydia.app/Sections/Text Editors.png
MobileCydia.app/Sections/Themes.png
MobileCydia.app/Sections/Toys.png
MobileCydia.app/Sections/Tweaks.png
MobileCydia.app/Sections/Utilities.png
MobileCydia.app/Sections/Wallpaper.png
MobileCydia.app/Sections/WebClips.png
MobileCydia.app/Sections/Widgets.png
MobileCydia.app/Sections/X Window.png
MobileCydia.app/Sources/cy.sosiphone.com.png [deleted file]
MobileCydia.app/Sources/iphone.hackndev.org.png [deleted file]
MobileCydia.app/Sources/iphonehe.com.png [deleted file]
MobileCydia.app/Sources/urbanfanatics.com.png [deleted file]
MobileCydia.app/Sources/www.zodttd.com.png [deleted file]
MobileCydia.app/changes@2x.png
MobileCydia.app/chevron@2x.png
MobileCydia.app/commercial.png
MobileCydia.app/console.png
MobileCydia.app/email.png
MobileCydia.app/expanded.png
MobileCydia.app/filesystem.png
MobileCydia.app/home-Selected@2x.png
MobileCydia.app/home@2x.png
MobileCydia.app/icon-72.png
MobileCydia.app/icon.png
MobileCydia.app/icon@2x.png
MobileCydia.app/iconClassic.png
MobileCydia.app/id.png
MobileCydia.app/install@2x.png
MobileCydia.app/installed.png
MobileCydia.app/installed@2x.png
MobileCydia.app/installing.png
MobileCydia.app/manage@2x.png
MobileCydia.app/menes/chevron.png
MobileCydia.app/menes/chevron@2x.png
MobileCydia.app/packages.png
MobileCydia.app/removing.png
MobileCydia.app/search@2x.png
MobileCydia.app/settings.png
MobileCydia.app/source.png
MobileCydia.app/source@2x.png
MobileCydia.app/sources.png
MobileCydia.app/star.png
MobileCydia.app/storage.png
MobileCydia.app/trusted.png
MobileCydia.app/unknown.png
MobileCydia.app/version.png
MobileCydia.app/warning.png
MobileCydia.app/web.png
MobileCydia.mm
UICaboodle/BrowserView.mm
UICaboodle/UCPlatform.h
makefile
pngcrush.sh [new file with mode: 0755]

index 878818619f6832d62c3881cf9b165c59637d708e..a3f43436efd290ebcb5ba9d3de602c166a3bc52d 100644 (file)
Binary files a/MobileCydia.app/Default-Landscape.png and b/MobileCydia.app/Default-Landscape.png differ
index 83a73af080f9241576ad720a0608a9a176c3d632..240b409b8db32d3ccb4f749b1738b24dcf512715 100644 (file)
Binary files a/MobileCydia.app/Default-Portrait.png and b/MobileCydia.app/Default-Portrait.png differ
index d27a6f7a5debe8c6ecdc9bf3dda412b37149f959..d7d28495b5f9efcc661ea4edfdd51b360619d80c 100644 (file)
Binary files a/MobileCydia.app/Icon-Small-50.png and b/MobileCydia.app/Icon-Small-50.png differ
index c7f61761e68872f61583267d712c6e9ad4c04142..af15d71e2be28dfcef09df19adcce3830ee87470 100644 (file)
Binary files a/MobileCydia.app/Icon-Small.png and b/MobileCydia.app/Icon-Small.png differ
index a741ddad35820122aa6ad889d283b851853ae94c..1a73ddb8a6c2c445e3112fc93d5a4d5831f65b59 100644 (file)
Binary files a/MobileCydia.app/Icon-Small@2x.png and b/MobileCydia.app/Icon-Small@2x.png differ
index 3c5576f7f34009bbdbd10d5278b3a0f521c5cf97..41c0d70ad0ab3224c2c1382e0b97d759e38cce9e 100644 (file)
Binary files a/MobileCydia.app/Modes/DOWNGRADE.png and b/MobileCydia.app/Modes/DOWNGRADE.png differ
index 55c5f180824dddec4c2287cd7e91042dd3c03dc1..a83f3543688df902c29ee30cace0256bf688e2a3 100644 (file)
Binary files a/MobileCydia.app/Modes/INSTALL.png and b/MobileCydia.app/Modes/INSTALL.png differ
index 3311df59579ce0b3f6fcea4381fb52ed0c5bddaa..795fa19317eb7d8ffce05744ec156fbf53e5edcf 100644 (file)
Binary files a/MobileCydia.app/Modes/PURGE.png and b/MobileCydia.app/Modes/PURGE.png differ
index a20037377f56e55b85eb3d1c0b5efde8685c91e6..0b7754cdcb36186295ff86c50d1f3560a0cf0674 100644 (file)
Binary files a/MobileCydia.app/Modes/REINSTALL.png and b/MobileCydia.app/Modes/REINSTALL.png differ
index 7408a167146625c4410edbc4b70a1088bab5d66b..1b2e691c8a564d007b29d5d7af5a04098b4f56a5 100644 (file)
Binary files a/MobileCydia.app/Modes/REMOVE.png and b/MobileCydia.app/Modes/REMOVE.png differ
index e74636eacba425ab08a98296172090a2caa37268..631b7ef323a046f2c0463ccdde0239f11e5db767 100644 (file)
Binary files a/MobileCydia.app/Modes/UPGRADE.png and b/MobileCydia.app/Modes/UPGRADE.png differ
index 5139ec452d848e94e95ee5784fda8ce894275363..9c411ccf35417eb9d232292fc6aaafba0991c4d8 100644 (file)
Binary files a/MobileCydia.app/Purposes/commercial.png and b/MobileCydia.app/Purposes/commercial.png differ
index 32afcb5d3989c474986e24b589b51df195bd1504..08d186924b16be71ab62e9b48c7d649249493b9a 100644 (file)
Binary files a/MobileCydia.app/Purposes/console.png and b/MobileCydia.app/Purposes/console.png differ
index f332f5d2438a14966b97fa3ef70b3ff2d171709e..896c9be304c64297486d32c8df770d3472db4ecb 100644 (file)
Binary files a/MobileCydia.app/Purposes/daemon.png and b/MobileCydia.app/Purposes/daemon.png differ
index a9cefa1f6b162ad04221a4041b4deb374e76c23a..59e051b52004ff14d6382b5f3379a0b0a773a67e 100644 (file)
Binary files a/MobileCydia.app/Purposes/extension.png and b/MobileCydia.app/Purposes/extension.png differ
index eca2032bd6db6362df7af2f835551ae15a7c8e78..e275e06e16b76198a750c1064d5d9a40b359918c 100644 (file)
Binary files a/MobileCydia.app/Purposes/library.png and b/MobileCydia.app/Purposes/library.png differ
index 03791b1ab5946878ef988289eae8fd8cb7b05137..694107f8e7ab1989e7e550acec3f01afa9edf4da 100644 (file)
Binary files a/MobileCydia.app/Purposes/uikit.png and b/MobileCydia.app/Purposes/uikit.png differ
index 48f57d32658f025287dc54a0f1e5a10be6dc04e4..2feac906af75968c15d0cdfb4051fb158855046e 100644 (file)
Binary files a/MobileCydia.app/Purposes/x.png and b/MobileCydia.app/Purposes/x.png differ
index 74c9c351a001170b957b376d7e735b965716f159..424f5658b2f36f1c685d40f28f5e808d70984ac1 100644 (file)
Binary files a/MobileCydia.app/Sections/Addons.png and b/MobileCydia.app/Sections/Addons.png differ
index 0d595d8f92c08bf661824acf5bf41a48e391c82f..65efd3ec71ee8e954a734c3e4a47325b9ed1b7ec 100644 (file)
Binary files a/MobileCydia.app/Sections/Administration.png and b/MobileCydia.app/Sections/Administration.png differ
index 4fa3711493151641795bde37aec4fa69056faef9..9efce5653c6b1f3db9386731079024658f022d75 100644 (file)
Binary files a/MobileCydia.app/Sections/Archiving.png and b/MobileCydia.app/Sections/Archiving.png differ
index bacf1a11c0e5ea80b37fa190b1028d7b8577694f..7c0c2a040e4ea4a28eafd67c7624c108800a21a8 100644 (file)
Binary files a/MobileCydia.app/Sections/Blanks.png and b/MobileCydia.app/Sections/Blanks.png differ
index 509eac531974a1041502c9d4a9b7908d3dd1e640..512c68b5edea25103dc1e165f623e016bce9c7c5 100644 (file)
Binary files a/MobileCydia.app/Sections/Books.png and b/MobileCydia.app/Sections/Books.png differ
index df25b3c665bc30b510612f1c31c07c2767662345..00f36f739b46e7d80322476523f9c450d3e09534 100644 (file)
Binary files a/MobileCydia.app/Sections/Carrier Bundles.png and b/MobileCydia.app/Sections/Carrier Bundles.png differ
index df25b3c665bc30b510612f1c31c07c2767662345..00f36f739b46e7d80322476523f9c450d3e09534 100644 (file)
Binary files a/MobileCydia.app/Sections/Communication.png and b/MobileCydia.app/Sections/Communication.png differ
index 5097038714ef94b570220b22d80cb55d20449c67..1bb23fedd0a071c80d29b6c9c8d4a1d1abcdbfbf 100644 (file)
Binary files a/MobileCydia.app/Sections/Data Storage.png and b/MobileCydia.app/Sections/Data Storage.png differ
index 57cffe61e29d1049b730f9b6a031cb0cf166269b..806b44218d5a7d096631a08f7c21241a647ca380 100644 (file)
Binary files a/MobileCydia.app/Sections/Development.png and b/MobileCydia.app/Sections/Development.png differ
index a5a85b5709e785231d7019153e1bea1611d926cd..e386e766b4047a897c9fbfad372ac178cefc9bf8 100644 (file)
Binary files a/MobileCydia.app/Sections/Dictionaries.png and b/MobileCydia.app/Sections/Dictionaries.png differ
index 549bf52bd2bc2747d64756ff57710e94f8c9ddd5..4a2a03fd0eebaf0ef67a0c240d8f7a9c3c053e73 100644 (file)
Binary files a/MobileCydia.app/Sections/Education.png and b/MobileCydia.app/Sections/Education.png differ
index 53d32aa4bd2091964de81cad2d2f8eaeb40608eb..69c8214fb23adcc839fdb41003f8d8abd8335608 100644 (file)
Binary files a/MobileCydia.app/Sections/Entertainment.png and b/MobileCydia.app/Sections/Entertainment.png differ
index 688929ae07c58b552c67fd5ccf2b555b2b7733c3..6fdab333d234509b04be4ad0442797313ebb05a6 100644 (file)
Binary files a/MobileCydia.app/Sections/Fonts.png and b/MobileCydia.app/Sections/Fonts.png differ
index 0f81c11e303d5e6aca46c6a2404718893bc10357..6e14c50958142f04f9a58078553d9a01a947037c 100644 (file)
Binary files a/MobileCydia.app/Sections/Games.png and b/MobileCydia.app/Sections/Games.png differ
index d44ffb3a2d729c5bc8449058119ab44a1de5fe6b..e2db0133303de14837678ca734859ae690e75251 100644 (file)
Binary files a/MobileCydia.app/Sections/Health and Fitness.png and b/MobileCydia.app/Sections/Health and Fitness.png differ
index bbaad32cdf929d4f398a63624aa4df7fa3cca04f..1e8f7fa84b47a1adf8f0fb094da7ac4cb59f9b10 100644 (file)
Binary files a/MobileCydia.app/Sections/Imaging.png and b/MobileCydia.app/Sections/Imaging.png differ
index e72e139424193d2878c2dba3442820f76222e2f5..e6bbc912b69019fef53967801b74898146f337c4 100644 (file)
Binary files a/MobileCydia.app/Sections/Java.png and b/MobileCydia.app/Sections/Java.png differ
index 8d748985530c8d557eef859fb3a4f0a89ace5b67..6b3df89563e4853fbaefd34761763bf3c08935ef 100644 (file)
Binary files a/MobileCydia.app/Sections/Keyboards.png and b/MobileCydia.app/Sections/Keyboards.png differ
index 5cb61dc0bd45642ef071900e48bc9df20130e9ce..80d41d3ebe5877973275b3d106703702c6e84278 100644 (file)
Binary files a/MobileCydia.app/Sections/Localization.png and b/MobileCydia.app/Sections/Localization.png differ
index b3722a15c75d141a9988a78ec17a83dc54530ea9..69d18e00dc2959bdbb257e3b89f84ccac9003dc7 100644 (file)
Binary files a/MobileCydia.app/Sections/Messaging.png and b/MobileCydia.app/Sections/Messaging.png differ
index 28caa85f7bcbc1d8b9cba2a0469d1015e9db5a01..42d0b5e9b5353ee0dd166b350346e90ec648b1f6 100644 (file)
Binary files a/MobileCydia.app/Sections/Multimedia.png and b/MobileCydia.app/Sections/Multimedia.png differ
index 0116be7cabe404bb28e78125f391c44262b06ad2..4829e6237bc55f76dd0b3d6959540297760603fd 100644 (file)
Binary files a/MobileCydia.app/Sections/Navigation.png and b/MobileCydia.app/Sections/Navigation.png differ
index 35ca61232dbcbd4b6c17a98d547b097bc67b7023..a4f04e3210ee19603c5a57ebbd02b309da0f452d 100644 (file)
Binary files a/MobileCydia.app/Sections/Networking.png and b/MobileCydia.app/Sections/Networking.png differ
index 6e798cae13fee75f64caa25e1624679879129484..d7d914ec9fe506e0930e1145bf63b7c25964ad82 100644 (file)
Binary files a/MobileCydia.app/Sections/Packaging.png and b/MobileCydia.app/Sections/Packaging.png differ
index 3508670aa1f20d774c53d924d99a54161a781719..c99c69d7a1ab5456202232bee97a2db219778ebc 100644 (file)
Binary files a/MobileCydia.app/Sections/Productivity.png and b/MobileCydia.app/Sections/Productivity.png differ
index 0fdaaffd1b6f963d774fc91e03723448bb8fa5ae..d6fe2678d6ba85b7014829a42abbbf52a45471c7 100644 (file)
Binary files a/MobileCydia.app/Sections/Repositories.png and b/MobileCydia.app/Sections/Repositories.png differ
index 4f4da7440656c3a414ff5d30120caa3e3757fb91..57fd660b7b395388faa88c7bd6588007d6262c4d 100644 (file)
Binary files a/MobileCydia.app/Sections/Ringtones.png and b/MobileCydia.app/Sections/Ringtones.png differ
index 2cac5c6d502da91dd67a79cd90633f7828a3836b..22285d25ffed21f7db1aa84c80359e4672138d6c 100644 (file)
Binary files a/MobileCydia.app/Sections/Scripting.png and b/MobileCydia.app/Sections/Scripting.png differ
index dce315dd3a8a1adfe9683f19b2cc6364d693dcd0..ae142eb3380605c88487ba2f519d6f3fc2b38069 100644 (file)
Binary files a/MobileCydia.app/Sections/Security.png and b/MobileCydia.app/Sections/Security.png differ
index 969036ca954401c6a31f79d29c41118b120a7134..6732d7b357fb3f6dbf8eb42b1ee169faeab1ad7e 100644 (file)
Binary files a/MobileCydia.app/Sections/Site-Specific Apps.png and b/MobileCydia.app/Sections/Site-Specific Apps.png differ
index 79d6e55a93d64b5926ca2890459f50bd49bb8643..6c0cfa4185b5d6a52852620e3127c75a1fd83d63 100644 (file)
Binary files a/MobileCydia.app/Sections/Social.png and b/MobileCydia.app/Sections/Social.png differ
index c91f9af36f1a807267b6353c99fe2f88006fa60e..accfcad2b53cc4fff61b6460cc39000ba12729a9 100644 (file)
Binary files a/MobileCydia.app/Sections/Soundboards.png and b/MobileCydia.app/Sections/Soundboards.png differ
index 3a70055144bb256f9337e2f67db80d844d2682ec..19d2c2249734021f718b832a914530fad057bc01 100644 (file)
Binary files a/MobileCydia.app/Sections/System.png and b/MobileCydia.app/Sections/System.png differ
index 3ab11035f4570b3e22cac18caad7ac73999da673..d6646184373594277e8e43d871148f7241d6fb1c 100644 (file)
Binary files a/MobileCydia.app/Sections/Terminal Support.png and b/MobileCydia.app/Sections/Terminal Support.png differ
index 5b4129af8fffa528caf94a84d07b537dd6c73726..5e65d46d84cc0d005baac800383ab996e3c5f193 100644 (file)
Binary files a/MobileCydia.app/Sections/Text Editors.png and b/MobileCydia.app/Sections/Text Editors.png differ
index 943ef4958fd9157988d77b952e237e2606afe333..e35b9481d1b0562d069cba1ad95f723eb2598bdf 100644 (file)
Binary files a/MobileCydia.app/Sections/Themes.png and b/MobileCydia.app/Sections/Themes.png differ
index fc56838aa7e640c523f1ba484d53fa1539ed2b7b..368eb4cd7381e2e1a4557a2dae15004fc5348bd3 100644 (file)
Binary files a/MobileCydia.app/Sections/Toys.png and b/MobileCydia.app/Sections/Toys.png differ
index 70a30f8b15e53e834ee8dea9da0cd51ec5bc44f9..4f588c68a0f63dab2989151816c94c6f5dbbb2a9 100644 (file)
Binary files a/MobileCydia.app/Sections/Tweaks.png and b/MobileCydia.app/Sections/Tweaks.png differ
index f7dd1e7968861ab4d240a4a96fddf50003594e01..fab5d329696f5498636cd79854a0825ae23f8738 100644 (file)
Binary files a/MobileCydia.app/Sections/Utilities.png and b/MobileCydia.app/Sections/Utilities.png differ
index 3d571014b1c5c8eb18f4d7275755922e784d60b9..1060fa0aa0edfb9282aaf6b1a1dd3bcd28d939f8 100644 (file)
Binary files a/MobileCydia.app/Sections/Wallpaper.png and b/MobileCydia.app/Sections/Wallpaper.png differ
index 7baaa68e6ded4d0690a508c39f2b6863bcbdb2c7..7ed4053c242e84d447b6d693e493f4fddf900415 100644 (file)
Binary files a/MobileCydia.app/Sections/WebClips.png and b/MobileCydia.app/Sections/WebClips.png differ
index df5e5ce296ce51ba03dd7d5ec4b95560ae22d21e..ca8c1efecc5a74254c4cf791a6409bb7a0c34a25 100644 (file)
Binary files a/MobileCydia.app/Sections/Widgets.png and b/MobileCydia.app/Sections/Widgets.png differ
index a81af8a769f8dbd541677ff538e7938fd6a96f1e..eac01e9439ea912ea119c4eda1d9b2744e0a0144 100644 (file)
Binary files a/MobileCydia.app/Sections/X Window.png and b/MobileCydia.app/Sections/X Window.png differ
diff --git a/MobileCydia.app/Sources/cy.sosiphone.com.png b/MobileCydia.app/Sources/cy.sosiphone.com.png
deleted file mode 100644 (file)
index b848d95..0000000
Binary files a/MobileCydia.app/Sources/cy.sosiphone.com.png and /dev/null differ
diff --git a/MobileCydia.app/Sources/iphone.hackndev.org.png b/MobileCydia.app/Sources/iphone.hackndev.org.png
deleted file mode 100644 (file)
index 1f701df..0000000
Binary files a/MobileCydia.app/Sources/iphone.hackndev.org.png and /dev/null differ
diff --git a/MobileCydia.app/Sources/iphonehe.com.png b/MobileCydia.app/Sources/iphonehe.com.png
deleted file mode 100644 (file)
index b20263e..0000000
Binary files a/MobileCydia.app/Sources/iphonehe.com.png and /dev/null differ
diff --git a/MobileCydia.app/Sources/urbanfanatics.com.png b/MobileCydia.app/Sources/urbanfanatics.com.png
deleted file mode 100644 (file)
index 9cf47c4..0000000
Binary files a/MobileCydia.app/Sources/urbanfanatics.com.png and /dev/null differ
diff --git a/MobileCydia.app/Sources/www.zodttd.com.png b/MobileCydia.app/Sources/www.zodttd.com.png
deleted file mode 100644 (file)
index 83a3b33..0000000
Binary files a/MobileCydia.app/Sources/www.zodttd.com.png and /dev/null differ
index 6485a243dfba90d6b681429aa337e8351089b57d..aa6a29aada7e85c8ab02f3bd9a92aab414c10fa9 100644 (file)
Binary files a/MobileCydia.app/changes@2x.png and b/MobileCydia.app/changes@2x.png differ
index 3851aafaa0559780f11aab9b691550238694be49..9905c17905156f5bfd933e01597ceebb4dcaca69 100644 (file)
Binary files a/MobileCydia.app/chevron@2x.png and b/MobileCydia.app/chevron@2x.png differ
index d89b3326cc4facd4f1438b865b750297c7ae9cdc..8599f48a6d0e7d1990528d01216eb6f7e80cf6ca 100644 (file)
Binary files a/MobileCydia.app/commercial.png and b/MobileCydia.app/commercial.png differ
index aa63739407aad8c68d13439691a0b9a4f0777df0..dba37880cac9b40faa030b6dfd8e6f1ffb4822a5 100644 (file)
Binary files a/MobileCydia.app/console.png and b/MobileCydia.app/console.png differ
index abc76d157e041b14d8289c4ee43127a5af57e5d2..1aa20b399b46bc6ea47096837f2a7a15a524ce92 100644 (file)
Binary files a/MobileCydia.app/email.png and b/MobileCydia.app/email.png differ
index 4fa3711493151641795bde37aec4fa69056faef9..9efce5653c6b1f3db9386731079024658f022d75 100644 (file)
Binary files a/MobileCydia.app/expanded.png and b/MobileCydia.app/expanded.png differ
index 5097038714ef94b570220b22d80cb55d20449c67..1bb23fedd0a071c80d29b6c9c8d4a1d1abcdbfbf 100644 (file)
Binary files a/MobileCydia.app/filesystem.png and b/MobileCydia.app/filesystem.png differ
index e5138fdc6335dec0267c3b2ea1ff6e2ba6326500..748be33383ef85718d47be71bb87acafee7797ed 100644 (file)
Binary files a/MobileCydia.app/home-Selected@2x.png and b/MobileCydia.app/home-Selected@2x.png differ
index 4c5ff62904843fb1beb305317896ee70bc438983..72b7297dcee42e4c08025648a89c0547338558f3 100644 (file)
Binary files a/MobileCydia.app/home@2x.png and b/MobileCydia.app/home@2x.png differ
index 1f5a1ded0eabe1596cca06befdee478a6622405c..1dbce13bfdee283faeff878740854aaa9cbf7a2a 100644 (file)
Binary files a/MobileCydia.app/icon-72.png and b/MobileCydia.app/icon-72.png differ
index db7616d0f3cac0b413107cfd4c30ac8ecdf16648..61d51dd17d48c5b80a2c096babb39a920546d0c6 100644 (file)
Binary files a/MobileCydia.app/icon.png and b/MobileCydia.app/icon.png differ
index cfe44a2fcf813cb8a0e6d5e62055e100bfbea6b0..1ec010c822f3c46cebd4ac55d8b60358a4a07a5c 100644 (file)
Binary files a/MobileCydia.app/icon@2x.png and b/MobileCydia.app/icon@2x.png differ
index 37bdfbc6d7ede0dc5fa10133c6c12e66490799e5..384c582374de80522ee49d77e4dbedd98d216376 100644 (file)
Binary files a/MobileCydia.app/iconClassic.png and b/MobileCydia.app/iconClassic.png differ
index 26d61652f306032f2c8b9436db2a9a10483a7486..f168812361b53e16f8f08dd103a93de7c6625950 100644 (file)
Binary files a/MobileCydia.app/id.png and b/MobileCydia.app/id.png differ
index 6b2ea992fe5938ccb5ca818a5dca9e170796c245..dfb8212bb8833479c8004ee29fd5202c0aa6060d 100644 (file)
Binary files a/MobileCydia.app/install@2x.png and b/MobileCydia.app/install@2x.png differ
index 89017d86e007bbb269a0bdbf4db60f0ec1457cbb..2f86f0ae6bb797bf29700cb1d0d93e5e30a4e72b 100644 (file)
Binary files a/MobileCydia.app/installed.png and b/MobileCydia.app/installed.png differ
index 8d6bc3f51ed24a7058b4c1520d15633394e868f5..ab86df2f5872b0126a27b09d5e711db515d4e301 100644 (file)
Binary files a/MobileCydia.app/installed@2x.png and b/MobileCydia.app/installed@2x.png differ
index aa27d7cd2d20cdb1c21b6fd8663d91d1b95dde40..6332fefea4be19eeadf211b0b202b272e8564898 100644 (file)
Binary files a/MobileCydia.app/installing.png and b/MobileCydia.app/installing.png differ
index d2f9b7c81c2ed4744a4b97c766ece2dea11f398e..cfb8c1342f7a43ba79bb3116d091d02070e3163b 100644 (file)
Binary files a/MobileCydia.app/manage@2x.png and b/MobileCydia.app/manage@2x.png differ
index 1bfefe6e92eef9c29550027a457c39403770be4a..6ff82054758572fc3d5b9e391f8449ef5ceb515a 100644 (file)
Binary files a/MobileCydia.app/menes/chevron.png and b/MobileCydia.app/menes/chevron.png differ
index 3851aafaa0559780f11aab9b691550238694be49..9905c17905156f5bfd933e01597ceebb4dcaca69 100644 (file)
Binary files a/MobileCydia.app/menes/chevron@2x.png and b/MobileCydia.app/menes/chevron@2x.png differ
index d5dde3ce4b8240bc021f42a8a035b6fcab00ff45..404fe0cd2e9e9ec05ec309a9b2799b5733d68320 100644 (file)
Binary files a/MobileCydia.app/packages.png and b/MobileCydia.app/packages.png differ
index 2fdb27229fbf802c595faa6c2f201e7467fab9c1..935d4c7ea279eb3dc1ca980490641185bd43a633 100644 (file)
Binary files a/MobileCydia.app/removing.png and b/MobileCydia.app/removing.png differ
index a7b17f3da950c260b55c8dbbbb992ddd827236a5..74d638114f8b0267e44308e61f14acca394fabaa 100644 (file)
Binary files a/MobileCydia.app/search@2x.png and b/MobileCydia.app/search@2x.png differ
index e2774937cb0d0ad4e38fab098ecd2da4c73ab8b7..86f4e782aed49711288ee08e5309661b1be2d3b1 100644 (file)
Binary files a/MobileCydia.app/settings.png and b/MobileCydia.app/settings.png differ
index b101a996369ff793de024adb7fa6042323341a9f..2dcfdbc6a5d93bb33786f2c22e240f346fa948b3 100644 (file)
Binary files a/MobileCydia.app/source.png and b/MobileCydia.app/source.png differ
index 7613b1f8f2af21156daad9acbbe559a0cfb19959..65d70c3a12ed8dd8bb883a04fe73a7b279fe4322 100644 (file)
Binary files a/MobileCydia.app/source@2x.png and b/MobileCydia.app/source@2x.png differ
index 88398f21a20ecef1a30e81377408747a2637ce66..e8422e496ff6cc1ca2baa118ee03d68c15cf6abf 100644 (file)
Binary files a/MobileCydia.app/sources.png and b/MobileCydia.app/sources.png differ
index 06953031758e11017bf5091d4629b0c45844acb4..f762a24bcbb70ca2226d1d7bddaac49eea957e62 100644 (file)
Binary files a/MobileCydia.app/star.png and b/MobileCydia.app/star.png differ
index 5c93ee6c56c37e6986c0251aa1e25efe1c3adf87..3cefef07af2cf81500a35c219f11a043a158bcca 100644 (file)
Binary files a/MobileCydia.app/storage.png and b/MobileCydia.app/storage.png differ
index ac6aa0cf5f0ae5ebde075bafb0a10bff4a27166b..de249ebd880fe7cafd181ecf165eed43fec6d0bf 100644 (file)
Binary files a/MobileCydia.app/trusted.png and b/MobileCydia.app/trusted.png differ
index e0ff4b2c69662477b2b0716fdb3406f6283ead23..92d7338ad46bcdcee712b31e0b0115787bc99148 100644 (file)
Binary files a/MobileCydia.app/unknown.png and b/MobileCydia.app/unknown.png differ
index b03fc579583d8ecf0d0f82c656dd9c82d7ceb176..fd1eec19ee9f7486d5e94a45c0aa9524cf49593c 100644 (file)
Binary files a/MobileCydia.app/version.png and b/MobileCydia.app/version.png differ
index bf06412a06c61ae7fa0562511b8ad4f0ac2b8039..8d3e5df04781628539abc327c1d5ad950782f587 100644 (file)
Binary files a/MobileCydia.app/warning.png and b/MobileCydia.app/warning.png differ
index 35ca61232dbcbd4b6c17a98d547b097bc67b7023..a4f04e3210ee19603c5a57ebbd02b309da0f452d 100644 (file)
Binary files a/MobileCydia.app/web.png and b/MobileCydia.app/web.png differ
index 57643ee08d653ba8bcfbe0fd404ab8d856d5a7e3..71f000643fdc2243e4c9c88fc16a8f0bc82c5d1c 100644 (file)
@@ -1345,6 +1345,7 @@ typedef std::map< unsigned long, _H<Source> > SourceMap;
     pkgSourceList *list_;
 
     SourceMap sources_;
+    CFMutableArrayRef deadSources_;
     CFMutableArrayRef packages_;
 
     _transient NSObject<ConfigurationDelegate, ProgressDelegate> *delegate_;
@@ -1354,6 +1355,8 @@ typedef std::map< unsigned long, _H<Source> > SourceMap;
     int cydiafd_;
     int statusfd_;
     FILE *input_;
+
+    std::map<const char *, _H<NSString> > sections_;
 }
 
 + (Database *) sharedInstance;
@@ -1387,6 +1390,9 @@ typedef std::map< unsigned long, _H<Source> > SourceMap;
 
 - (void) setDelegate:(id)delegate;
 - (Source *) getSource:(pkgCache::PkgFileIterator)file;
+
+- (NSString *) mappedSectionForPointer:(const char *)pointer;
+
 @end
 /* }}} */
 /* Delegate Helpers {{{ */
@@ -1824,7 +1830,8 @@ struct ParsedPackage {
 };
 
 @interface Package : NSObject {
-    uint32_t era_ : 29;
+    uint32_t era_ : 26;
+    uint32_t role_ : 3;
     uint32_t essential_ : 1;
     uint32_t obsolete_ : 1;
     uint32_t ignored_ : 1;
@@ -1843,7 +1850,7 @@ struct ParsedPackage {
     CYString latest_;
     CYString installed_;
 
-    CYString section_;
+    const char *section_;
     _transient NSString *section$_;
 
     Source *source_;
@@ -1852,7 +1859,6 @@ struct ParsedPackage {
     ParsedPackage *parsed_;
 
     NSMutableArray *tags_;
-    NSString *role_;
 }
 
 - (Package *) initWithVersion:(pkgCache::VerIterator)version withZone:(NSZone *)zone inPool:(apr_pool_t *)pool database:(Database *)database;
@@ -1914,7 +1920,6 @@ struct ParsedPackage {
 - (NSArray *) applications;
 
 - (Source *) source;
-- (NSString *) role;
 
 - (BOOL) matches:(NSString *)text;
 
@@ -2075,15 +2080,10 @@ struct PackageNameOrdering :
 - (void) dealloc {
     if (parsed_ != NULL)
         delete parsed_;
-
     if (source_ != nil)
         [source_ release];
-
     if (tags_ != nil)
         [tags_ release];
-    if (role_ != nil)
-        [role_ release];
-
     [super dealloc];
 }
 
@@ -2217,8 +2217,18 @@ struct PackageNameOrdering :
                     const char *name(tag.Name());
                     [tags_ addObject:[(NSString *)CYStringCreate(name) autorelease]];
 
-                    if (role_ == nil && strncmp(name, "role::", 6) == 0 /*&& strcmp(name, "role::leaper") != 0*/)
-                        role_ = (NSString *) CYStringCreate(name + 6);
+                    if (role_ == 0 && strncmp(name, "role::", 6) == 0 /*&& strcmp(name, "role::leaper") != 0*/) {
+                        if (strcmp(name + 6, "enduser") == 0)
+                            role_ = 1;
+                        else if (strcmp(name + 6, "hacker") == 0)
+                            role_ = 2;
+                        else if (strcmp(name + 6, "developer") == 0)
+                            role_ = 3;
+                        else if (strcmp(name + 6, "cydia") == 0)
+                            role_ = 7;
+                        else
+                            role_ = 4;
+                    }
 
                     if (strncmp(name, "cydia::", 7) == 0) {
                         if (strcmp(name + 7, "essential") == 0)
@@ -2266,7 +2276,7 @@ struct PackageNameOrdering :
         _end
 
         _profile(Package$initWithVersion$Section)
-            section_.set(NULL, iterator.Section());
+            section_ = iterator.Section();
         _end
 
         _profile(Package$initWithVersion$Flags)
@@ -2314,13 +2324,11 @@ struct PackageNameOrdering :
 
 - (NSString *) section {
     if (section$_ == nil) {
-        if (section_.empty())
+        if (section_ == NULL)
             return nil;
 
-        _profile(Package$section)
-            std::replace(section_.data(), section_.data() + section_.size(), '_', ' ');
-            NSString *name(section_);
-            section$_ = [SectionMap_ objectForKey:name] ?: name;
+        _profile(Package$section$mappedSectionForPointer)
+            section$_ = [database_ mappedSectionForPointer:section_];
         _end
     } return section$_;
 }
@@ -2470,12 +2478,12 @@ struct PackageNameOrdering :
 
 - (BOOL) unfiltered {
     _profile(Package$unfiltered$obsolete)
-        if (obsolete_)
+        if (_unlikely(obsolete_))
             return false;
     _end
 
     _profile(Package$unfiltered$hasSupportingRole)
-        if (![self hasSupportingRole])
+        if (_unlikely(![self hasSupportingRole]))
             return false;
     _end
 
@@ -2486,7 +2494,11 @@ struct PackageNameOrdering :
     if (![self unfiltered])
         return false;
 
-    NSString *section([self section]);
+    NSString *section;
+
+    _profile(Package$visible$section)
+        section = [self section];
+    _end
 
     _profile(Package$visible$isSectionVisible)
         if (section != nil && !isSectionVisible(section))
@@ -2709,10 +2721,6 @@ struct PackageNameOrdering :
     return source_ == (Source *) [NSNull null] ? nil : source_;
 }
 
-- (NSString *) role {
-    return role_;
-}
-
 - (BOOL) matches:(NSString *)text {
     if (text == nil)
         return NO;
@@ -2735,17 +2743,17 @@ struct PackageNameOrdering :
 }
 
 - (bool) hasSupportingRole {
-    if (role_ == nil)
+    if (role_ == 0)
         return true;
-    if ([role_ isEqualToString:@"enduser"])
+    if (role_ == 1)
         return true;
     if ([Role_ isEqualToString:@"User"])
         return false;
-    if ([role_ isEqualToString:@"hacker"])
+    if (role_ == 2)
         return true;
     if ([Role_ isEqualToString:@"Hacker"])
         return false;
-    if ([role_ isEqualToString:@"developer"])
+    if (role_ == 3)
         return true;
     if ([Role_ isEqualToString:@"Developer"])
         return false;
@@ -2867,7 +2875,7 @@ struct PackageNameOrdering :
 }
 
 - (bool) isInstalledAndUnfiltered:(NSNumber *)number {
-    return ![self uninstalled] && (![number boolValue] && ![role_ isEqualToString:@"cydia"] || [self unfiltered]);
+    return ![self uninstalled] && (![number boolValue] && role_ != 7 || [self unfiltered]);
 }
 
 - (bool) isVisibleInSection:(NSString *)name {
@@ -3032,6 +3040,8 @@ static NSString *Warning_;
 - (void) dealloc {
     // XXX: actually implement this thing
     _assert(false);
+    if (deadSources_)
+           CFRelease(deadSources_);
     [self releasePackages];
     apr_pool_destroy(pool_);
     NSRecycleZone(zone_);
@@ -3149,6 +3159,7 @@ static NSString *Warning_;
             capacity += 1024;
 
         packages_ = CFArrayCreateMutable(kCFAllocatorDefault, capacity, NULL);
+        deadSources_ = CFArrayCreateMutable(kCFAllocatorDefault, 0, &kCFTypeArrayCallBacks);
 
         int fds[2];
 
@@ -3223,6 +3234,7 @@ static NSString *Warning_;
     NSMutableArray *sources([NSMutableArray arrayWithCapacity:sources_.size()]);
     for (SourceMap::const_iterator i(sources_.begin()); i != sources_.end(); ++i)
         [sources addObject:i->second];
+    [sources addObjectsFromArray:(NSArray *)deadSources_];
     return sources;
 }
 
@@ -3329,7 +3341,9 @@ static NSString *Warning_;
     ++era_;
 
     [self releasePackages];
+
     sources_.clear();
+    CFArrayRemoveAllValues(deadSources_);
 
     _error->Discard();
 
@@ -3419,14 +3433,19 @@ static NSString *Warning_;
     }
 
     for (pkgSourceList::const_iterator source = list_->begin(); source != list_->end(); ++source) {
+        bool found = false;
         std::vector<pkgIndexFile *> *indices = (*source)->GetIndexFiles();
         for (std::vector<pkgIndexFile *>::const_iterator index = indices->begin(); index != indices->end(); ++index)
             // XXX: this could be more intelligent
             if (dynamic_cast<debPackagesIndex *>(*index) != NULL) {
                 pkgCache::PkgFileIterator cached((*index)->FindInCache(cache_));
-                if (!cached.end())
+                if (!cached.end()) {
                     sources_[cached->ID] = [[[Source alloc] initWithMetaIndex:*source inPool:pool_] autorelease];
+                    found = true;
+                }
             }
+        if (!found)
+            CFArrayAppendValue(deadSources_, [[[Source alloc] initWithMetaIndex:*source inPool:pool_] autorelease]);
     }
 
     {
@@ -3676,6 +3695,37 @@ static NSString *Warning_;
     return i == sources_.end() ? nil : i->second;
 }
 
+- (NSString *) mappedSectionForPointer:(const char *)section {
+    _H<NSString> *mapped;
+
+    _profile(Database$mappedSectionForPointer$Cache)
+        mapped = &sections_[section];
+    _end
+
+    if (*mapped == NULL) {
+        size_t length(strlen(section));
+        char spaced[length + 1];
+
+        _profile(Database$mappedSectionForPointer$Replace)
+            for (size_t index(0); index != length; ++index)
+                spaced[index] = section[index] == '_' ? ' ' : section[index];
+            spaced[length] = '\0';
+        _end
+
+        NSString *string;
+
+        _profile(Database$mappedSectionForPointer$stringWithUTF8String)
+            string = [NSString stringWithUTF8String:spaced];
+        _end
+
+        _profile(Database$mappedSectionForPointer$Map)
+            string = [SectionMap_ objectForKey:string] ?: string;
+        _end
+
+        *mapped = string;
+    } return *mapped;
+}
+
 @end
 /* }}} */
 
@@ -5180,7 +5230,7 @@ bool DepSubstrate(const pkgCache::VerIterator &iterator) {
 }
 
 - (void) drawContentRect:(CGRect)rect {
-    bool highlighted(highlighted_);
+    bool highlighted(highlighted_ && !editing_);
 
     [icon_ drawInRect:CGRectMake(8, 7, 32, 32)];
 
@@ -7505,7 +7555,10 @@ bool DepSubstrate(const pkgCache::VerIterator &iterator) {
     if ([database_ era] != era_)
         return nil;
 
-    Section *section([sections_ objectAtIndex:[path section]]);
+    NSUInteger sectionIndex([path section]);
+    if (sectionIndex >= [sections_ count])
+        return nil;
+    Section *section([sections_ objectAtIndex:sectionIndex]);
     NSInteger row([path row]);
     return [[[self packageAtIndex:([section row] + row)] retain] autorelease];
 } }
@@ -7564,22 +7617,27 @@ bool DepSubstrate(const pkgCache::VerIterator &iterator) {
 }
 
 - (void) _reloadPackages:(NSArray *)packages {
-    _trace();
-    for (Package *package in packages)
-        if ([package upgradableAndEssential:YES] || [package visible])
-            CFArrayAppendValue(packages_, package);
+    CFRelease(packages_);
+    packages_ = CFArrayCreateMutable(kCFAllocatorDefault, [packages count], NULL);
 
     _trace();
-    [(NSMutableArray *) packages_ radixSortUsingFunction:reinterpret_cast<SKRadixFunction>(&PackageChangesRadix) withContext:NULL];
+    _profile(ChangesController$_reloadPackages$Filter)
+        for (Package *package in packages)
+            if ([package upgradableAndEssential:YES] || [package visible])
+                CFArrayAppendValue(packages_, package);
+    _end
+    _trace();
+    _profile(ChangesController$_reloadPackages$radixSort)
+        [(NSMutableArray *) packages_ radixSortUsingFunction:reinterpret_cast<SKRadixFunction>(&PackageChangesRadix) withContext:NULL];
+    _end
     _trace();
 }
 
 - (void) reloadData {
+@synchronized (database_) {
     era_ = [database_ era];
     NSArray *packages = [database_ packages];
 
-    CFArrayRemoveAllValues(packages_);
-
     [sections_ removeAllObjects];
 
 #if 1
@@ -7669,7 +7727,9 @@ bool DepSubstrate(const pkgCache::VerIterator &iterator) {
             target:self
             action:@selector(refreshButtonClicked)
         ] autorelease]];
-}
+
+    PrintTimes();
+} }
 
 @end
 /* }}} */
@@ -7866,6 +7926,8 @@ bool DepSubstrate(const pkgCache::VerIterator &iterator) {
         [ignoredCell_ setText:UCLocalize("IGNORE_UPGRADES")];
         [ignoredCell_ setAccessoryView:ignoredSwitch_];
         [ignoredCell_ setSelectionStyle:UITableViewCellSelectionStyleNone];
+        // FIXME: Ignored state is not saved.
+        [ignoredCell_ setUserInteractionEnabled:NO];
 
         [table_ setDataSource:self];
         [table_ setDelegate:self];
@@ -8952,6 +9014,9 @@ typedef enum {
 _trace();
     CydiaApp = self;
 
+    if ([self respondsToSelector:@selector(setApplicationSupportsShakeToEdit:)])
+        [self setApplicationSupportsShakeToEdit:NO];
+
     [NSURLCache setSharedURLCache:[[[SDURLCache alloc]
         initWithMemoryCapacity:524288
         diskCapacity:10485760
index 921e6aade8e97aab7b6800b0f19183e7c7db01bd..2abc02ecc607b3c968bbf2c656260fb490b10b70 100644 (file)
@@ -835,19 +835,13 @@ static void $UIWebViewWebViewDelegate$webViewClose$(UIWebViewWebViewDelegate *se
 
         [alert dismissWithClickedButtonIndex:-1 animated:YES];
     } else if ([context isEqualToString:@"submit"]) {
-        switch (button) {
-            case 1:
-            break;
-
-            case 2:
-                if (request_ != nil) {
-                    WebThreadLock();
-                    [webview_ loadRequest:request_];
-                    WebThreadUnlock();
-                }
-            break;
-
-            _nodefault
+        if (button == [alert cancelButtonIndex]) {
+        } else if (button == [alert firstOtherButtonIndex]) {
+            if (request_ != nil) {
+                WebThreadLock();
+                [webview_ loadRequest:request_];
+                WebThreadUnlock();
+            }
         }
 
         [alert dismissWithClickedButtonIndex:-1 animated:YES];
index 4f2169e4c475b11f2f9b4f0b4efe465c3731ae28..c2412329e0376d16da0c1e652c4ee4c88414bbc7 100644 (file)
@@ -54,3 +54,9 @@ while (false)
     default: \
         _assume(false); \
         throw;
+
+#define _likely(expr) \
+    __builtin_expect(expr, 1)
+
+#define _unlikely(expr) \
+    __builtin_expect(expr, 0)
index 095831ec04240e46d6b171ca1fe217504834bfc4..9a1145dcf42b5ccd2466cf6f8457c7af8af4ba9f 100644 (file)
--- a/makefile
+++ b/makefile
@@ -12,8 +12,16 @@ endif
 flags := 
 link := 
 
-#dpkg := /Library/Cydia/bin/dpkg-deb -Zlzma
+ifeq (o,O) # gzip is actually better
+dpkg := /Library/Cydia/bin/dpkg-deb
+ifeq ($(wildcard $(dpkg)),$(dpkg))
+dpkg := $(dpkg) -zlzma
+else
+dpkg := dpkg-deb -zbzip2
+endif
+else
 dpkg := dpkg-deb
+endif
 
 sdk := $(sdks)/iPhoneOS$(ios).sdk
 
@@ -50,7 +58,7 @@ backrow += -FAppleTV -framework BackRow -framework AppleTV
 
 #cycc = cycc -r4.2 -i$(ios) -o$@
 gxx := /Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/g++-$(gcc)
-cycc = $(gxx) -arch armv6 -o $@ -mcpu=arm1176jzf-s -miphoneos-version-min=2.0 -isysroot $(sdk) -idirafter /usr/include -F/Library/Frameworks
+cycc = $(gxx) -mthumb -arch armv6 -o $@ -mcpu=arm1176jzf-s -miphoneos-version-min=2.0 -isysroot $(sdk) -idirafter /usr/include -F/Library/Frameworks
 
 all: MobileCydia
 
@@ -92,6 +100,8 @@ package: MobileCydia
        mkdir -p _/DEBIAN
        ./control.sh _ >_/DEBIAN/control
        
+       find _ -name '*.png' -exec ./pngcrush.sh '{}' ';'
+       
        sudo chown -R 0 _
        sudo chgrp -R 0 _
        sudo chmod 6755 _/Applications/Cydia.app/MobileCydia
@@ -99,6 +109,6 @@ package: MobileCydia
        mkdir -p debs
        ln -sf debs/cydia_$$(./version.sh)_iphoneos-arm.deb Cydia.deb
        $(dpkg) -b _ Cydia.deb
-       readlink Cydia.deb
+       @echo "$$(stat -L -f "%z" Cydia.deb) $$(stat -f "%Y" Cydia.deb)"
 
 .PHONY: all clean sign
diff --git a/pngcrush.sh b/pngcrush.sh
new file mode 100755 (executable)
index 0000000..69715fb
--- /dev/null
@@ -0,0 +1,40 @@
+#!/bin/bash
+
+png=$1
+steps=()
+
+function step() {
+    "$@"
+    mv -f {_,}_.png
+    steps+=($(stat -f "%z" _.png))
+}
+
+pngcrush=/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/pngcrush
+
+grep CgBI "${png}" &>/dev/null && exit 0
+
+step cp -fa "${png}" __.png
+
+#step "${pngcrush}" -q -rem alla -reduce -brute -iphone {,_}_.png
+
+#step "${pngcrush}" -q -rem alla -reduce -brute {,_}_.png
+#step pincrush {,_}_.png
+
+step "${pngcrush}" -q -rem alla -reduce -iphone {,_}_.png
+
+#"${pngcrush}" -q -rem alla -reduce -brute -iphone "${png}" 1.png
+#"${pngcrush}" -q -iphone _.png 2.png
+#ls -la 1.png 2.png
+
+mv -f _.png "${png}"
+
+echo -n "${png##*/} "
+for ((i = 0; i != ${#steps[@]}; ++i)); do
+    if [[ $i != 0 ]]; then
+        echo -n " "
+    fi
+
+    echo -n "${steps[i]}"
+done
+
+printf $' %.0f%%\n' "$((steps[${#steps[@]}-1] * 100 / steps[0]))"