gap-dev-discuss
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Gap-dev-discuss] GWorkspace umounting CD-Roms on OpenBSD


From: Philippe Roussel
Subject: Re: [Gap-dev-discuss] GWorkspace umounting CD-Roms on OpenBSD
Date: Fri, 20 Jul 2012 08:22:54 +0200
User-agent: Mozilla/5.0 (X11; Linux i686; rv:14.0) Gecko/20120714 Thunderbird/14.0

Hi Sebastian,

Le 20/07/2012 01:38, Sebastian Reitenbach a écrit :
>  
> On Monday, July 16, 2012 18:56 CEST, "Sebastian Reitenbach" <address@hidden> 
> wrote: 
>  
>> Hi,
>>
>> at least with OpenBSD and allowing user mounts (sysctl kern.usermount=1), 
>> then, at least when mounting a CD-Rom, the mount point directory changes 
>> ownership to root:wheel. For USB sticks, the ownership of the mountpoint 
>> stays the same. manually on the console, I can umount the CD-Rom device.
>> But trying to drag 'n drop the cd-rom device into the trash, I get the 
>> error, that I must be root to do that.
>>
>> I changed the GWorkspace code, so that it just tries to umount the 
>> partition, and then, in case it fails, throws the error message.
>> Also I made the error message a bit more generic (there is usually no "root" 
>> user under Windows ;).
>>
>> What do you think about that?
> 
> Riccardo, any objection about the proposed change?

FWIW I think your patch should go in.
Just one note below.

Thanks,
Philippe

>> --- GWorkspace/Desktop/Dock/DockIcon.m.orig  Mon Jul 16 18:24:57 2012
>> +++ GWorkspace/Desktop/Dock/DockIcon.m       Mon Jul 16 18:42:14 2012
>> @@ -566,14 +566,7 @@ x += 6; \
>>      NSMutableArray *umountPaths = [NSMutableArray array];
>>      NSMutableDictionary *opinfo = [NSMutableDictionary dictionary];
>>      NSString *username = NSUserName();
>> -    BOOL iamRoot;
>>  
>> -      #ifdef __WIN32__
>> -              iamRoot = YES;
>> -      #else
>> -              iamRoot = (geteuid() == 0);
>> -      #endif
>> -    
>>      for (i = 0; i < [paths count]; i++) {
>>        NSString *srcpath = [paths objectAtIndex: i];
>>  
>> @@ -587,15 +580,12 @@ x += 6; \
>>      for (i = 0; i < [umountPaths count]; i++) {
>>        NSString *umpath = [umountPaths objectAtIndex: i];
>>          NSDictionary *attrs = [fm fileAttributesAtPath: umpath 
>> traverseLink: NO];

It seems this dictionary could be removed too, no ?

>> -      NSString *usr = [attrs objectForKey: NSFileOwnerAccountName];
>> -      BOOL isMyFile = ([username isEqual: usr]);
>>        
>> -      if (iamRoot || isMyFile) {
>> -        [ws unmountAndEjectDeviceAtPath: umpath];
>> -      } else {
>> -                NSString *err = NSLocalizedString(@"Error", @"");
>> -                NSString *msg = NSLocalizedString(@"You must be root to 
>> umount\n", @"");
>> -                NSString *buttstr = NSLocalizedString(@"Continue", @"");
>> +      if (![ws unmountAndEjectDeviceAtPath: umpath])
>> +      {
>> +        NSString *err = NSLocalizedString(@"Error", @"");
>> +        NSString *msg = NSLocalizedString(@"You are not allowed to 
>> umount\n", @"");
>> +        NSString *buttstr = NSLocalizedString(@"Continue", @"");
>>          NSRunAlertPanel(err, [NSString stringWithFormat: @"%@ 
>> \"address@hidden"!\n", msg, umpath], buttstr, nil, nil);         
>>        }
>>      }
>>




reply via email to

[Prev in Thread] Current Thread [Next in Thread]