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: Sebastian Reitenbach
Subject: Re: [Gap-dev-discuss] GWorkspace umounting CD-Roms on OpenBSD
Date: Fri, 20 Jul 2012 01:38:51 +0200
User-agent: SOGoMail 1.3.16

 
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?

Sebastian


> 
> Sebastian
> 
> 
> 
> 
> $OpenBSD$
> 
> allow unmounting of CD-Rom devices
> 
> --- 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];
> -      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]