Pastie now auto-senses if line-wrap is a bad or good idea. Feedback?
## mark a section (Learn more)
#include "RestoreInterface.h" int restore_mount(string *args, struct shell_state *sh) { mach_error_t retval; if( args[1] == "" || args[2] == "") { ifNotQuiet cout << "mount: please provide both arguments." << endl; set_rfr(1); return SHELL_CONTINUE; } D("allocating CFMutableDictionary"); CFMutableDictionaryRef req = CFDictionaryCreateMutable( kCFAllocatorDefault, 0, &kCFTypeDictionaryKeyCallBacks, &kCFTypeDictionaryValueCallBacks); D("setting values"); // CFDictionarySetValue(req, CFSTR("Operation"), CFSTR("Mount")); CFDictionarySetValue(req, CFSTR("Request"), CFSTR("Mount")); CFDictionarySetValue(req, CFSTR("DeviceName"), CFStringCreateWithCString(NULL, args[1].c_str(), kCFStringEncodingASCII)); CFDictionarySetValue(req, CFSTR("MountPoint"), CFStringCreateWithCString(NULL, args[2].c_str(), kCFStringEncodingASCII)); D("sending dictionary"); retval = performOperation(sh->restore_dev, req); ifVerbose cout << "mount: mounting '" << args[1] << "' at '" << args[2] << endl; // build a list of known error codes ifNotQuiet { switch (retval) { case 0: ifVerbose cout << "mount: Successful." << endl; break; case 6: cout << "mount: iPhone returned '6' - invalid argument." << endl; break; default: cout << "mount: iPhone returned '" << retval << "' - unknown error code." << endl; break; } } // set return function retval so we can break a script if this doesn't work for some reason set_rfr(retval); return SHELL_CONTINUE; } int restore_partition(string *args, struct shell_state *sh) { mach_error_t retval; D("allocating CFMutableDictionary"); CFMutableDictionaryRef req = CFDictionaryCreateMutable( kCFAllocatorDefault, 0, &kCFTypeDictionaryKeyCallBacks, &kCFTypeDictionaryValueCallBacks); D("setting values"); CFDictionarySetValue(req, CFSTR("Request"), CFSTR("Partition")); D("sending dictionary"); retval = performOperation(sh->restore_dev, req); ifVerbose cout << "partition: returned error code: " << retval << endl; // set return function retval so we can break a script if this doesn't work for some reason set_rfr(retval); return SHELL_CONTINUE; } int restore_erase(string *args, struct shell_state *sh) { mach_error_t retval; if( args[1] == "" || args[2] == "") { ifNotQuiet cout << "mount: please provide both arguments." << endl; set_rfr(1); return SHELL_CONTINUE; } D("allocating CFMutableDictionary"); CFMutableDictionaryRef req = CFDictionaryCreateMutable( kCFAllocatorDefault, 0, &kCFTypeDictionaryKeyCallBacks, &kCFTypeDictionaryValueCallBacks); D("setting values"); CFDictionarySetValue(req, CFSTR("Request"), CFSTR("Erase")); CFDictionarySetValue(req, CFSTR("DeviceName"), CFStringCreateWithCString(NULL, args[1].c_str(), kCFStringEncodingASCII) ); CFDictionarySetValue(req, CFSTR("VolumeName"), CFStringCreateWithCString(NULL, args[2].c_str(), kCFStringEncodingASCII) ); D("sending dictionary"); retval = performOperation(sh->restore_dev, req); ifVerbose cout << "erase: erasing device '" << args[1] << "' at volume '" << args[2] << "': " << retval << endl; // set return function retval so we can break a script if this doesn't work for some reason set_rfr(retval); return SHELL_CONTINUE; } int restore_ditto(string *args, struct shell_state *sh) { mach_error_t retval; if( args[1] == "" || args[2] == "") { ifNotQuiet cout << "ditto: please provide both arguments." << endl; set_rfr(1); return SHELL_CONTINUE; } D("allocating CFMutableDictionary"); CFMutableDictionaryRef req = CFDictionaryCreateMutable( kCFAllocatorDefault, 0, &kCFTypeDictionaryKeyCallBacks, &kCFTypeDictionaryValueCallBacks); D("setting values"); CFDictionarySetValue(req, CFSTR("Request"), CFSTR("Ditto")); CFDictionarySetValue(req, CFSTR("SourcePath"), CFStringCreateWithCString(NULL, args[1].c_str(), kCFStringEncodingASCII) ); CFDictionarySetValue(req, CFSTR("DestinationPath"), CFStringCreateWithCString(NULL, args[2].c_str(), kCFStringEncodingASCII) ); D("sending dictionary"); retval = performOperation(sh->restore_dev, req); ifVerbose cout << "ditto: copying file '" << args[1] << "' to '" << args[2] << "': " << retval << endl; // set return function retval so we can break a script if this doesn't work for some reason set_rfr(retval); return SHELL_CONTINUE; } int erica_foo(string *args, struct shell_state *sh) { mach_error_t retval; if( args[1] == "" ) { ifNotQuiet cout << "foo: please provide a request." << endl; set_rfr(1); return SHELL_CONTINUE; } D("allocating CFMutableDictionary"); CFMutableDictionaryRef req = CFDictionaryCreateMutable( kCFAllocatorDefault, 0, &kCFTypeDictionaryKeyCallBacks, &kCFTypeDictionaryValueCallBacks); D("setting values"); // Attempt to set arguments Tests // CFDictionarySetValue(req, CFSTR("MsgType"), CFSTR("QueryType")); // CFDictionarySetValue(req, CFSTR("MsgType"), CFStringCreateWithCString(NULL, args[1].c_str(), kCFStringEncodingASCII)); // CFDictionarySetValue(req, CFSTR("MountPoint"), // CFStringCreateWithCString(NULL, args[1].c_str(), kCFStringEncodingASCII) ); // CFDictionarySetValue(req, CFSTR("Operation"), CFSTR("Mount")); // CFDictionarySetValue(req, CFSTR("DeviceName"), CFSTR("/dev/disk0s1")); // CFDictionarySetValue(req, CFSTR("MountPoint"), CFSTR("/mnt1")); // CFDictionarySetValue(req, CFSTR("Request"), CFSTR("QueryType")); // CFDictionarySetValue(req, CFSTR("MsgType"), CFSTR("DataRequestMsg")); // CFStringCreateWithCString(NULL, args[1].c_str(), kCFStringEncodingASCII)); // REQUEST IS ARG1 // CFDictionarySetValue(req, CFSTR("Request"), CFSTR("QueryType")); // CFDictionarySetValue(req, CFSTR("Command"), CFSTR("Ditto")); CFDictionarySetValue(req, CFSTR("Request"), CFStringCreateWithCString(NULL, args[1].c_str(), kCFStringEncodingASCII)); CFDictionarySetValue(req, CFSTR("Type"), CFStringCreateWithCString(NULL, args[2].c_str(), kCFStringEncodingASCII)); // CFDictionarySetValue(req, CFSTR("MsgType"), CFSTR("StatusMsg")); D("sending dictionary"); retval = performOperation(sh->restore_dev, req); cout << "Testing: '" << args[1] << "': " << retval << endl; // set return function retval so we can break a script if this doesn't work for some reason set_rfr(retval); return SHELL_CONTINUE; } int restore_umount(string *args, struct shell_state *sh) { mach_error_t retval; if( args[1] == "" ) { ifNotQuiet cout << "umount: please provide an argument." << endl; set_rfr(1); return SHELL_CONTINUE; } D("allocating CFMutableDictionary"); CFMutableDictionaryRef req = CFDictionaryCreateMutable( kCFAllocatorDefault, 0, &kCFTypeDictionaryKeyCallBacks, &kCFTypeDictionaryValueCallBacks); D("setting values"); CFDictionarySetValue(req, CFSTR("Request"), CFSTR("Unmount")); CFDictionarySetValue(req, CFSTR("MountPoint"), CFStringCreateWithCString(NULL, args[1].c_str(), kCFStringEncodingASCII) ); D("sending dictionary"); retval = performOperation(sh->restore_dev, req); ifVerbose cout << "umount: Unmounting '" << args[1] << "': " << retval << endl; // set return function retval so we can break a script if this doesn't work for some reason set_rfr(retval); return SHELL_CONTINUE; } int restore_filesystemcheck(string *args, struct shell_state *sh) { mach_error_t retval; if( args[1] == "" ) { ifNotQuiet cout << "filesystemcheck: please provide a path to a disk to check." << endl; set_rfr(1); return SHELL_CONTINUE; } D("allocating CFMutableDictionary"); CFMutableDictionaryRef req = CFDictionaryCreateMutable( kCFAllocatorDefault, 0, &kCFTypeDictionaryKeyCallBacks, &kCFTypeDictionaryValueCallBacks); D("setting values"); CFDictionarySetValue(req, CFSTR("Request"), CFSTR("FilesystemCheck")); CFDictionarySetValue(req, CFSTR("DeviceName"), CFStringCreateWithCString(NULL, args[1].c_str(), kCFStringEncodingASCII) ); D("sending dictionary"); retval = performOperation(sh->restore_dev, req); ifVerbose cout << "FileSystemCheck: checking device '" << args[1] << "': " << retval << endl; //Here we should check for 'unknown device' error code to assume that anything else means //that fsck could not repair the disk, which we should alert the user to. // set return function retval so we can break a script if this doesn't work for some reason set_rfr(retval); return SHELL_CONTINUE; } int restore_mkdir(string *args, struct shell_state *sh) { mach_error_t retval; if( args[1] == "" || args[2] == "") { ifNotQuiet cout << "mkdir: please provide both arguments." << endl; set_rfr(1); return SHELL_CONTINUE; } D("allocating CFMutableDictionary"); CFMutableDictionaryRef req = CFDictionaryCreateMutable( kCFAllocatorDefault, 0, &kCFTypeDictionaryKeyCallBacks, &kCFTypeDictionaryValueCallBacks); D("setting values"); CFDictionarySetValue(req, CFSTR("Request"), CFSTR("MakeDirectory")); CFDictionarySetValue(req, CFSTR("Mode"), CFStringCreateWithCString(NULL, args[1].c_str(), kCFStringEncodingASCII) ); CFDictionarySetValue(req, CFSTR("Path"), CFStringCreateWithCString(NULL, args[2].c_str(), kCFStringEncodingASCII) ); D("sending dictionary"); retval = performOperation(sh->restore_dev, req); ifVerbose cout << "mkdir: creating directory with modes '" << args[1] << "' at location '" << args[2] << "': " << retval << endl; // set return function retval so we can break a script if this doesn't work for some reason set_rfr(retval); return SHELL_CONTINUE; } int restore_force(string *args, struct shell_state *sh) { mach_error_t retval; if( args[1] == "" ) { ifNotQuiet cout << "force: please provide a command." << endl; set_rfr(1); return SHELL_CONTINUE; } D("allocating CFMutableDictionary"); CFMutableDictionaryRef req = CFDictionaryCreateMutable( kCFAllocatorDefault, 0, &kCFTypeDictionaryKeyCallBacks, &kCFTypeDictionaryValueCallBacks); D("setting values"); CFDictionarySetValue(req, CFSTR("Request"), CFStringCreateWithCString(NULL, args[1].c_str(), kCFStringEncodingASCII) ); D("sending dictionary"); retval = performOperation(sh->restore_dev, req); ifVerbose cout << "force: sending operation: '" << args[1] << "'" << endl; ifNotQuiet { switch(retval) { case 0: ifVerbose cout << "force: Successful." << endl; break; case 8: cout << "force: Unknown command." << endl; break; default: cout << "force: Unknown error code '" << retval << "'. Please report." << endl; break; } } // set return function retval so we can break a script if this doesn't work for some reason set_rfr(retval); return SHELL_CONTINUE; } int restore_exit(string *args, struct shell_state *sh) { ifNotQuiet cout << "shell: exiting restore mode." << endl; ifVerbose cout << "shell: If connected, the phone may restart itself. Otherwise use button combo." << endl; set_rfr(0); return SHELL_WAIT; }
This paste will be private.
From the Design Piracy series on my blog: