[PATCH] Introduce the 'usertemp' filesystem type
Corinna Vinschen
corinna-cygwin@cygwin.com
Wed Oct 21 18:23:00 GMT 2015
Hi Johannes,
On Oct 20 13:47, Johannes Schindelin wrote:
> On Tue, 20 Oct 2015, Corinna Vinschen wrote:
> > On Sep 16 09:35, Johannes Schindelin wrote:
> > > * mount.cc (mount_info::from_fstab_line): support mounting the
> > > current user's temp folder as /tmp/. This is particularly
> > > useful a feature when Cygwin's own files are write-protected.
> > >
> > > * pathnames.xml: document the new usertemp file system type
>
> BTW I thought this would be the preferred form of the ChangeLog entry: as
> part of the commit message. At least that is how I interpreted this part:
>
> ChangeLogs should not be sent as "diffs". Just send the complete
> ChangeLog entry, which is ideally part of the output of
> `git format-patch' anyway.
>
> of https://cygwin.com/contrib.html
Duh, I missed that from your OP. Somehow I started reading with
"Detailed explanation:". Sorry about that.
> > > By specifying
> > >
> > > none /tmp usertemp binary,posix=0 0 0
> > >
> > > in /etc/fstab, the /tmp/ directory gets auto-mounted to the directory
> > > specified by the %TEMP% variable.
> >
> > In theory you could also utilize /etc/fstab.d/$USER, without the need to
> > implement a usertemp mount type.
>
> This is unfortunately not possible. The use case that triggered this patch
> is Git for Windows (which does not use Cygwin directly, but the MSys2
> runtime which is derived from Cygwin).
Editorial note:
It's a bit hard to understand why we need Git for Windows while there's
a full fledged git available as part of the Cygwin distro. It's also
very frustrating that a Git for Windows standalone tool gets a lot of
press coverage while nobody seems to care that Git for Windows under
Cygwin exists for ages. Sigh.
> Indeed. In Git for Windows' case, this is actually a feature. That way,
> different users' files are encapsulated from each other.
> [...]
> As I said, in a multi-user setting, or even worse: in a portable
> application, this is simply not possible other than via the strategy
> implemented by this patch.
Here's a question. If it's really only about git, why do you need
to redirect /tmp, rather than having git use $TMP directly? That would
be much less intrusive than having to change the underlying POSIX
layer, isn't it?
> > - The ChangeLog entry is missing.
>
> See above. Do you want me to include the diff to winsup/cygwin/ChangeLog?
No, my bad, sorry.
> [...]
> > > + char mb_tmp[len = sys_wcstombs (NULL, 0, tmp)];
> >
> > - len = sys_wcstombs() + 1
>
> Whoops. I always get that wrong.
>
> But... actually... Did you know that `sys_wcstombs()` returns something
> different than advertised? The documentation says:
>
> - dst == NULL; len is ignored, the return value is the number
> of bytes required for the string without the trailing NUL, just
> like the return value of the wcstombs function.
>
> But when I call
>
> small_printf("len of 1: %d\n", sys_wcstombs(NULL, 0, L"1"));
>
> it prints "len of 1: 2", i.e. the number of bytes requires for the string
> *with* the trailing NUL, disagreeing with the comment in strfuncs.cc.
Drat. You're right. As usual I wonder why nobody ever noticed this.
As soon as the nwc parameter is larger than the number of non-0 wchars
in the source string, sys_cp_wcstombs returns the length including the
trailing NUL.
And looking through the Cygwin sources the usage is rather erratic,
sometimes with, sometimes without + 1 :(
> How do you want to proceed from here? Should I fix sys_wcstombs() when the
> fourth parameter is -1? Or is this not a fix, but I would rather break
> things?
No, this needs fixing, but it also would break things. I have to take
a stab at fixing this throughout Cygwin first.
> > - What about adding a mount flags to allow fillout_mntent to print out
> > the mount type? This isn't essential, I'm just wondering if there
> > might be a good reason to see the type in mount(1) output.
>
> You mean something like this?
>
> -- snip --
Yes, that's what I had in mind.
Thanks,
Corinna
--
Corinna Vinschen Please, send mails regarding Cygwin to
Cygwin Maintainer cygwin AT cygwin DOT com
Red Hat
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 819 bytes
Desc: not available
URL: <http://cygwin.com/pipermail/cygwin-patches/attachments/20151021/57c437dc/attachment.sig>
More information about the Cygwin-patches
mailing list