not entirely true again the error in the current code is
S -> SR = SR H -> HR = HR which should be S -> SR = S H -> HR = H that's all. Still simplifies the code. Index: open.c =================================================================== RCS file: /cvsroot/samba/source/smbd/open.c,v retrieving revision 1.128 diff -u -r1.128 open.c --- open.c 8 Jan 2003 02:09:14 -0000 1.128 +++ open.c 8 Jan 2003 09:51:50 -0000 @@ -717,20 +717,19 @@ * the file attributes need to be changed. */ - *returned_mode = (mode_t)0; + if(old_dos_mode == (mode_t)0 && new_dos_mode != (mode_t)0) + *returned_mode = new_dos_mode; + else + *returned_mode = (mode_t)0; /* If we're mapping SYSTEM and HIDDEN ensure they match. */ if (lp_map_system(SNUM(conn))) { if ((old_dos_mode & FILE_ATTRIBUTE_SYSTEM) && !(new_dos_mode & FILE_ATTRIBUTE_SYSTEM)) return False; - if (!(old_dos_mode & FILE_ATTRIBUTE_SYSTEM) && (new_dos_mode & FILE_ATTRIBUTE_SYSTEM)) - *returned_mode = new_mode; } if (lp_map_hidden(SNUM(conn))) { if ((old_dos_mode & FILE_ATTRIBUTE_HIDDEN) && !(new_dos_mode & FILE_ATTRIBUTE_HIDDEN)) return False; - if (!(old_dos_mode & FILE_ATTRIBUTE_HIDDEN) && (new_dos_mode & FILE_ATTRIBUTE_HIDDEN)) - *returned_mode = new_mode; } return True; } > -----Oorspronkelijk bericht----- > Van: [EMAIL PROTECTED] > [mailto:[EMAIL PROTECTED]]Namens Steve Hardy > Verzonden: Wednesday, January 08, 2003 10:42 AM > Aan: [EMAIL PROTECTED] > CC: [EMAIL PROTECTED] > Onderwerp: RE: permission upgrade during O_TRUNC > > > Yeah I thought about implementing it the way it's in CVS now > but didn't dare > touch your code :P, although I just found another instance of > attributes > changing.... the whole story goes for READONLY as well ... > > hmm let me make a table > > - H -> H > - S -> S > - R -> R > - RH -> RH > - SH -> SH > H * -> H > S * -> S > R * -> R > > So it seems you can only upgrade the attributes if NONE of > the original > attributes were set, and if so, you take all of the new attributes. > Currently the code always takes the new attributes if you're upgrading > system or hidden so you'd get > > S H -> H > H S -> S > and worse: > S HR -> HR > H SR -> SR > > It probably doesn't make much of a difference but hey, you > never know :) > Makes the code easier too 'cause you get > > if(old_dos_mode == 0 && new_dos_mode != 0) > *returned_mode = new_dos_mode > > Which is even easier (yay!). Sorry for the part > misinformation in previous > posts :) > > grtz, > Steve > > > -----Oorspronkelijk bericht----- > > Van: [EMAIL PROTECTED] > > [mailto:[EMAIL PROTECTED]]Namens > [EMAIL PROTECTED] > > Verzonden: Wednesday, January 08, 2003 3:10 AM > > Aan: [EMAIL PROTECTED] > > CC: [EMAIL PROTECTED] > > Onderwerp: Re: permission upgrade during O_TRUNC > > > > > > On Tue, Jan 07, 2003 at 10:53:41AM +0100, > [EMAIL PROTECTED] wrote: > > > Hey there, I posted a quick fix for a problem I found with > > all samba's up > > > to 2.2.7a on the general samba list, which describes the following > > > problem: > > > > > > In Windows, if you create a file with NORMAL attributes and > > ALWAYS_CREATE, > > > close the file and then re-create it with, say, HIDDEN and > > ALWAYS_CREATE, > > > the file *should* be upgraded to HIDDEN. The other way around, ie. > > > starting with HIDDEN and re-creating with NORMAL should > > keep the file as > > > HIDDEN. Currently, samba always keep the original > > attributes. This causes > > > windows to incorrectly store hidden and system files from > > in a roaming > > > profile which gets you that stupid popping-up Desktop.ini > > in new profiles > > > after the second login (because the files are not hidden on > > the profile > > > directory). Why windows opens the files as non-hidden first > > is unknown to > > > me :) Anyways, here is a patch that fixes it. I have tried > > my best to make > > > it as clean as possible but as I know little of samba > > internals it may be > > > wrong ... > > > > > > This works for me, and stops Desktop.ini appearing all over > > the place. I > > > haven't found any problems with it yet. > > > > Thanks for this - I didn't apply exactly this patch but it > inspired me > > to write something I believe is correct. I applied it to > HEAD and 3.0, > > and will back-port to 2.2.x. > > > > Thanks once again ! > > > > Jeremy. > > > > PS. Andrew Bartlett - we now pass the torture test OPEN #9 when map > > hidden and map system are set :-). >