all messages for Emacs-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
* Re: copy-directory
       [not found] ` <83zl87nw88.fsf@gnu.org>
@ 2009-10-04 16:41   ` Stefan Monnier
  2009-10-04 20:02     ` copy-directory Michael Albinus
  2009-10-04 19:58   ` copy-directory Michael Albinus
  1 sibling, 1 reply; 9+ messages in thread
From: Stefan Monnier @ 2009-10-04 16:41 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: Michael Albinus, emacs-devel

> Please don't rely on the `chown' command being available for the
> preserve-uid-gid option.

Especially since chown only works for root anyway, and since I don't
think we should cater specially for root-uses of Emacs (I rather
discourage the use of Emacs when running as root), I'd rather we don't
touch the uid.


        Stefan




^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: copy-directory
       [not found] ` <83zl87nw88.fsf@gnu.org>
  2009-10-04 16:41   ` copy-directory Stefan Monnier
@ 2009-10-04 19:58   ` Michael Albinus
  2009-10-04 21:31     ` copy-directory Eli Zaretskii
  1 sibling, 1 reply; 9+ messages in thread
From: Michael Albinus @ 2009-10-04 19:58 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: emacs-devel

Eli Zaretskii <eliz@gnu.org> writes:

> Please don't rely on the `chown' command being available for the
> preserve-uid-gid option.  It is only available on Posix platforms.
> Instead, please add a primitive to do this from within Emacs.

I know that. But I do not know how important it is on W32.

> And one more comment about the code:
>
>       (mapc
>        (lambda (file)
> 	 (if (file-directory-p file)
> 	     (copy-directory file newname keep-time preserve-uid-gid parents)
> 	   (copy-file file newname t keep-time preserve-uid-gid)))
>        ;; We do not want to delete "." and "..".
>        (directory-files
> 	directory 'full "^\\([^.]\\|\\.\\([^.]\\|\\..\\)\\).*"))
>
> Instead of this complicated regexp, isn't it easier to just filter out
> "." and ".." by adding a suitable comparison to the function you map
> of the files?  I find it not easy to convince myself that the regexp
> indeed matches every valid file name but those two.

I've stolen it from `dired-re-no-dot'. One option would be to add a
similar regexp to files.el, given that I have used it also in
`delete-directory'? (And I will need it also in Tramp)

Best regards, Michael.




^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: copy-directory
  2009-10-04 16:41   ` copy-directory Stefan Monnier
@ 2009-10-04 20:02     ` Michael Albinus
  2009-10-05  3:13       ` copy-directory Stefan Monnier
  0 siblings, 1 reply; 9+ messages in thread
From: Michael Albinus @ 2009-10-04 20:02 UTC (permalink / raw)
  To: Stefan Monnier; +Cc: Eli Zaretskii, emacs-devel

Stefan Monnier <monnier@iro.umontreal.ca> writes:

>> Please don't rely on the `chown' command being available for the
>> preserve-uid-gid option.
>
> Especially since chown only works for root anyway, and since I don't
> think we should cater specially for root-uses of Emacs (I rather
> discourage the use of Emacs when running as root), I'd rather we don't
> touch the uid.

I've tried to be as close as possible to `copy-file'. There is the code

#ifndef MSDOS
  /* Preserve the original file modes, and if requested, also its
     owner and group.  */
  if (input_file_statable_p)
    {
      if (! NILP (preserve_uid_gid))
	fchown (ofd, st.st_uid, st.st_gid);
      fchmod (ofd, st.st_mode & 07777);
    }
#endif	/* not MSDOS */

Shall we add a subroutine function for this, as proposed by Eli? Or
shall we remove PRESERVE-UID-GID from `copy-directory'?

>         Stefan

Best regards, Michael.




^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: copy-directory
  2009-10-04 19:58   ` copy-directory Michael Albinus
@ 2009-10-04 21:31     ` Eli Zaretskii
  0 siblings, 0 replies; 9+ messages in thread
From: Eli Zaretskii @ 2009-10-04 21:31 UTC (permalink / raw)
  To: Michael Albinus; +Cc: emacs-devel

> From: Michael Albinus <michael.albinus@gmx.de>
> Cc: emacs-devel@gnu.org
> Date: Sun, 04 Oct 2009 21:58:51 +0200
> 
> Eli Zaretskii <eliz@gnu.org> writes:
> 
> > Please don't rely on the `chown' command being available for the
> > preserve-uid-gid option.  It is only available on Posix platforms.
> > Instead, please add a primitive to do this from within Emacs.
> 
> I know that. But I do not know how important it is on W32.

NTFS, the native filesystem of Windows 2K/XP/Vista supports file
ownership, so it's at least as important as on Posix.




^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: copy-directory
  2009-10-04 20:02     ` copy-directory Michael Albinus
@ 2009-10-05  3:13       ` Stefan Monnier
  2009-10-05  7:22         ` copy-directory Michael Albinus
  2009-10-05  7:57         ` copy-directory David Kastrup
  0 siblings, 2 replies; 9+ messages in thread
From: Stefan Monnier @ 2009-10-05  3:13 UTC (permalink / raw)
  To: Michael Albinus; +Cc: Eli Zaretskii, emacs-devel

> Or shall we remove PRESERVE-UID-GID from `copy-directory'?

I guess we can remove it for now,


        Stefan




^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: copy-directory
  2009-10-05  3:13       ` copy-directory Stefan Monnier
@ 2009-10-05  7:22         ` Michael Albinus
  2009-10-05  7:57         ` copy-directory David Kastrup
  1 sibling, 0 replies; 9+ messages in thread
From: Michael Albinus @ 2009-10-05  7:22 UTC (permalink / raw)
  To: Stefan Monnier; +Cc: Eli Zaretskii, emacs-devel@gnu.org

Stefan Monnier <monnier@iro.umontreal.ca> writes:

>> Or shall we remove PRESERVE-UID-GID from `copy-directory'?
>
> I guess we can remove it for now,

OK, I'll do so.

>         Stefan

Best regards, Michael.




^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: copy-directory
  2009-10-05  3:13       ` copy-directory Stefan Monnier
  2009-10-05  7:22         ` copy-directory Michael Albinus
@ 2009-10-05  7:57         ` David Kastrup
  2009-10-06 17:26           ` copy-directory Michael Albinus
  1 sibling, 1 reply; 9+ messages in thread
From: David Kastrup @ 2009-10-05  7:57 UTC (permalink / raw)
  To: emacs-devel

Stefan Monnier <monnier@iro.umontreal.ca> writes:

>> Or shall we remove PRESERVE-UID-GID from `copy-directory'?
>
> I guess we can remove it for now,

I think that UID/GID should transparently be preserved when copying
directories whenever possible (in particular when using /sudo:: methods
or similar).  I don't think that there is an important usage case for
"don't preserve UID/GID even if you could": it would likely imply
copying a tree and turning it into root/root possession on today's
systems.

I would like to add that before the time of disk quotas, the owner of a
file was always able to do chown/chgrp on files (this cleared the setuid
bit for security reasons, but that was it).  It was the usual way of
passing data to somebody else (and nobody other).

-- 
David Kastrup





^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: copy-directory
  2009-10-05  7:57         ` copy-directory David Kastrup
@ 2009-10-06 17:26           ` Michael Albinus
  2009-10-06 18:50             ` copy-directory Eli Zaretskii
  0 siblings, 1 reply; 9+ messages in thread
From: Michael Albinus @ 2009-10-06 17:26 UTC (permalink / raw)
  To: emacs-devel

David Kastrup <dak@gnu.org> writes:

> Stefan Monnier <monnier@iro.umontreal.ca> writes:
>
>>> Or shall we remove PRESERVE-UID-GID from `copy-directory'?
>>
>> I guess we can remove it for now,
>
> I think that UID/GID should transparently be preserved when copying
> directories whenever possible (in particular when using /sudo:: methods
> or similar).  I don't think that there is an important usage case for
> "don't preserve UID/GID even if you could": it would likely imply
> copying a tree and turning it into root/root possession on today's
> systems.

Although it is not on my top priority, I would second David. A primitive
function `set-file-owner' would not harm, if it is explicitely said in
the docstring, that it works only in the cases the underlying OS
supports it.

And a Tramp file name handler could be called for this, useful at least
for "su" and "sudo" connections.

What I'm curious: does change ownership work for other systems, like
Win32? The smbclient, used in Tramp for "smb" connections, offers a
chown subcommand ... maybe it is applicable only, if there is a Samba
server at the other end.

Best regards, Michael.




^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: copy-directory
  2009-10-06 17:26           ` copy-directory Michael Albinus
@ 2009-10-06 18:50             ` Eli Zaretskii
  0 siblings, 0 replies; 9+ messages in thread
From: Eli Zaretskii @ 2009-10-06 18:50 UTC (permalink / raw)
  To: Michael Albinus; +Cc: emacs-devel

> From: Michael Albinus <michael.albinus@gmx.de>
> Date: Tue, 06 Oct 2009 19:26:36 +0200
> 
> What I'm curious: does change ownership work for other systems, like
> Win32?

Yes, it does, if the process who calls the appropriate APIs has the
required privileges.




^ permalink raw reply	[flat|nested] 9+ messages in thread

end of thread, other threads:[~2009-10-06 18:50 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
     [not found] <8763avuyt3.fsf@gmx.de>
     [not found] ` <83zl87nw88.fsf@gnu.org>
2009-10-04 16:41   ` copy-directory Stefan Monnier
2009-10-04 20:02     ` copy-directory Michael Albinus
2009-10-05  3:13       ` copy-directory Stefan Monnier
2009-10-05  7:22         ` copy-directory Michael Albinus
2009-10-05  7:57         ` copy-directory David Kastrup
2009-10-06 17:26           ` copy-directory Michael Albinus
2009-10-06 18:50             ` copy-directory Eli Zaretskii
2009-10-04 19:58   ` copy-directory Michael Albinus
2009-10-04 21:31     ` copy-directory Eli Zaretskii

Code repositories for project(s) associated with this external index

	https://git.savannah.gnu.org/cgit/emacs.git
	https://git.savannah.gnu.org/cgit/emacs/org-mode.git

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.