[Top][All Lists]
[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);
> }
> }
>