I wrote a quick command line app to see if I had jgs with at least 500 bytes of trailing padding. I had 336, all since 2017.
Next step for me: since I have Tme Machine backups of this folder tree, is trimming back all such files to no more than 32 bytes of zero padding.
// Do I have any jpgs in my ~/Pictures or subdirectories such that they have more than 500 byts of trailing zero?
#import <Foundation/Foundation.h>
static BOOL HasEmptyTail(NSURL *url){
NSData *data = [NSData dataWithContentsOfURL:url];
if (501 < data.length) {
uint8_t *p = (uint8_t *)data.bytes;
p += data.length - 501;
for (int i = 0; i < 500; ++i) {
if (p[i]){
return NO;
}
}
return YES;
}
return NO;
}
static void TailZero() {
NSFileManager *fm = [NSFileManager defaultManager];
NSURL *url = [[fm URLsForDirectory:NSPicturesDirectory inDomains:NSUserDomainMask] firstObject];
NSArray<NSURL *> *items = [fm contentsOfDirectoryAtURL:url includingPropertiesForKeys:nil options:0 error:NULL];
for (NSURL *fileURL in items) {
NSString *ext = [[fileURL pathExtension] lowercaseString];
if ([ext isEqual:@"jpg"] || [ext isEqual:@"jpeg"]) {
@autoreleasepool {
if (HasEmptyTail(fileURL)) {
fprintf(stderr, "%s\n", fileURL.path.fileSystemRepresentation);
}
}
}
}
}
int main(int argc, const char * argv[]) {
@autoreleasepool {
TailZero();
}
return 0;
}