[delegate_ repairWithSelector:@selector(configure)];
         else if (error == "The package lists or status file could not be parsed or opened.")
             [delegate_ repairWithSelector:@selector(update)];
-        else if (error == "Could not get lock /var/lib/dpkg/lock - open (35 Resource temporarily unavailable)")
-            [delegate_ repairWithSelector:@selector(unlock)];
-        //else if (error == "The list of sources could not be read.")
+        // else if (error == "Could not open lock file /var/lib/dpkg/lock - open (13 Permission denied)")
+        // else if (error == "Could not get lock /var/lib/dpkg/lock - open (35 Resource temporarily unavailable)")
+        // else if (error == "The list of sources could not be read.")
         else _assert(false);
 
         return;
     [packages_ sortUsingSelector:@selector(compareByName:)];
 }
 
-- (void) unlock {
-    system("killall dpkg");
-}
-
 - (void) configure {
     NSString *dpkg = [NSString stringWithFormat:@"dpkg --configure -a --status-fd %u", statusfd_];
     system([dpkg UTF8String]);
         CGRect bounds = [overlay_ bounds];
 
         navbar_ = [[UINavigationBar alloc] initWithFrame:navrect];
-        [navbar_ setBarStyle:1];
+        if (Advanced_)
+            [navbar_ setBarStyle:1];
         [navbar_ setDelegate:self];
 
         UINavigationItem *navitem = [[[UINavigationItem alloc] initWithTitle:@"Confirm"] autorelease];
         package_ = [package retain];
         name_ = [[package id] retain];
 
-        NSString *list = [NSString
-            stringWithContentsOfFile:[NSString stringWithFormat:@"/var/lib/dpkg/info/%@.list", name_]
-            encoding:kCFStringEncodingUTF8
-            error:NULL
-        ];
+        NSString *path = [NSString stringWithFormat:@"/var/lib/dpkg/info/%@.list", name_];
+
+        {
+            std::ifstream fin([path UTF8String]);
+            std::string line;
+            while (std::getline(fin, line))
+                [files_ addObject:[NSString stringWithUTF8String:line.c_str()]];
+        }
 
-        if (list != nil) {
-            [files_ addObjectsFromArray:[list componentsSeparatedByString:@"\n"]];
-            [files_ removeLastObject];
-            [files_ removeObjectAtIndex:0];
+        if ([files_ count] != 0) {
+            if ([[files_ objectAtIndex:0] isEqualToString:@"/."])
+                [files_ removeObjectAtIndex:0];
             [files_ sortUsingSelector:@selector(compareByPath:)];
 
             NSMutableArray *stack = [NSMutableArray arrayWithCapacity:8];
         [buttons addObject:@"Cancel"];
 
         [delegate_ slideUp:[[[UIAlertSheet alloc]
-            initWithTitle:@"Manage Package"
+            initWithTitle:nil
             buttons:buttons
             defaultButtonIndex:2
             delegate:self
 }
 
 - (void) slideUp:(UIAlertSheet *)alert {
-    [alert presentSheetFromButtonBar:buttonbar_];
+    [alert presentSheetInView:overlay_];
 }
 
 @end