I did this in a May 17th cut of in 2.2.x, which was right around the 2.2.4 release. I didn't submit a patch, because I didn't think there were that many people using a file system that has extended attributes.
NOTE: Need to define lp_store_dos_mode config option and pick a name for DOSMODE_ATTR_NAME for this code to work. This is how I did it in 2.2: sambma/source/smbd/dosmode.c: /*************************************************************************** * change a unix mode to a dos mode **************************************************************************** / int dos_mode(connection_struct *conn,char *path,SMB_STRUCT_STAT *sbuf) { int result = 0; DEBUG(8,("dos_mode: %s\n", path)); + /* Load dos mode from EAs if enabled */ + if (lp_store_dos_mode()) { + + int size = sizeof(result); + if (conn->vfs_ops.get_ea(conn, path, DOSMODE_ATTR_NAME, (char*)&result, &size) == -1) { + + if (S_ISDIR(sbuf->st_mode)) { + result = FILE_ATTRIBUTE_DIRECTORY; + } + else { + result = FILE_ATTRIBUTE_ARCHIVE; + } + } + } + + /* Otherwise perform the usual mapping */ + else { ... /******************************************************************* chmod a file - but preserve some bits ********************************************************************/ int file_chmod(connection_struct *conn,char *fname,int dosmode,SMB_STRUCT_STAT *st) { SMB_STRUCT_STAT st1; int mask=0; mode_t tmp; mode_t unixmode; int ret = -1; if (!st) { st = &st1; if (vfs_stat(conn,fname,st)) return(-1); } if (S_ISDIR(st->st_mode)) dosmode |= aDIR; else dosmode &= ~aDIR; + /* Store dos mode in EAs if enabled */ + if (lp_store_dos_mode()) { + return conn->vfs_ops.set_ea(conn, fname, DOSMODE_ATTR_NAME, (char*)&dosmode, sizeof(dosmode)); + } if (dos_mode(conn,fname,st) == dosmode) return(0); unixmode = unix_mode(conn,dosmode,fname); /* preserve the s bits */ mask |= (S_ISUID | S_ISGID); -----Original Message----- From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] Sent: Friday, March 21, 2003 10:33 AM To: Olaf Frączyk Cc: [EMAIL PROTECTED] Subject: Re: Extended Attributes and Hidden, System, Archive attrs? On Fri, Mar 21, 2003 at 09:44:26AM +0100, Olaf Frączyk wrote: > Hi, > > I remember some time ago several people were discussing about putting > the Hidden, System, Archive, Read-Only bits in EAs. > > Has it been done in 3.0? > Will it be in 2.2.x serie? Not done for 2.2., I'm thinking about it for 3.0. Jeremy.