added "hide files" option.
authorSamba Release Account <samba-bugs@samba.org>
Tue, 1 Jul 1997 19:02:43 +0000 (19:02 +0000)
committerSamba Release Account <samba-bugs@samba.org>
Tue, 1 Jul 1997 19:02:43 +0000 (19:02 +0000)
lkcl
(This used to be commit 6e594ce0e5a3af5e7311380d18ff0d19ba9698a7)

source3/include/proto.h
source3/include/smb.h
source3/lib/util.c
source3/param/loadparm.c
source3/smbd/server.c

index 3929348da6dcf8381cc5ff2bbccd7dc05edfff17..bbfd0835b7500018d1dfc4539a4fa6c0a9dfc7b8 100644 (file)
@@ -142,6 +142,7 @@ char *lp_character_set(void);
 char *lp_logon_script(void);
 char *lp_logon_path(void);
 char *lp_veto_files(void);
+char *lp_hide_files(void);
 char *lp_remote_announce(void);
 char *lp_wins_server(void);
 char *lp_interfaces(void);
@@ -273,12 +274,18 @@ BOOL do_lock(int fnum,int cnum,uint32 count,uint32 offset,int *eclass,uint32 *ec
 BOOL do_unlock(int fnum,int cnum,uint32 count,uint32 offset,int *eclass,uint32 *ecode);
 BOOL start_share_mode_mgmt(void);
 BOOL stop_share_mode_mgmt(void);
-BOOL lock_share_entry(int cnum, uint32 dev, uint32 inode, share_lock_token *);
-BOOL unlock_share_entry(int cnum, uint32 dev, uint32 inode, share_lock_token);
+BOOL lock_share_entry(int cnum, uint32 dev, uint32 inode, share_lock_token *ptok);
+BOOL unlock_share_entry(int cnum, uint32 dev, uint32 inode, share_lock_token token);
 int get_share_modes(int cnum, share_lock_token token, uint32 dev, uint32 inode, 
                     min_share_mode_entry **old_shares);
 void del_share_mode(share_lock_token token, int fnum);
 BOOL set_share_mode(share_lock_token token, int fnum);
+BOOL lock_share_entry(int cnum, uint32 dev, uint32 inode, share_lock_token *ptok);
+BOOL unlock_share_entry(int cnum, uint32 dev, uint32 inode, share_lock_token token);
+int get_share_modes(int cnum, share_lock_token token, uint32 dev, uint32 inode, 
+                    min_share_mode_entry **old_shares);
+void del_share_mode(share_lock_token token, int fnum);
+BOOL set_share_mode(share_lock_token token,int fnum);
 
 /*The following definitions come from  mangle.c  */
 
@@ -302,7 +309,6 @@ int reply_sendend(char *inbuf,char *outbuf);
 
 /*The following definitions come from  nameannounce.c  */
 
-void reset_announce_timer();
 void announce_request(struct work_record *work, struct in_addr ip);
 void do_announce_request(char *info, char *to_name, int announce_type, 
                         int from,
@@ -320,6 +326,7 @@ void announce_my_servers_removed(void);
 void announce_server(struct subnet_record *d, struct work_record *work,
                     char *name, char *comment, time_t ttl, int server_type);
 void announce_host(time_t t);
+void reset_announce_timer();
 void announce_master(time_t t);
 void announce_remote(time_t t);
 
@@ -327,8 +334,7 @@ void announce_remote(time_t t);
 
 void expire_browse_cache(time_t t);
 struct browse_cache_record *add_browser_entry(char *name, int type, char *wg,
-                                             time_t ttl, 
-                                              struct subnet_record *d,
+                                             time_t ttl, struct subnet_record *d,
                                               struct in_addr ip, BOOL local);
 void do_browser_lists(time_t t);
 
@@ -718,16 +724,12 @@ int construct_reply(char *inbuf,char *outbuf,int size,int bufsize);
 
 /*The following definitions come from  shmem.c  */
 
+BOOL smb_shm_create_hash_table( unsigned int size );
 BOOL smb_shm_open( char *file_name, int size);
 BOOL smb_shm_close( void );
 BOOL smb_shm_free(smb_shm_offset_t offset);
 BOOL smb_shm_set_userdef_off(smb_shm_offset_t userdef_off);
 void * smb_shm_offset2addr(smb_shm_offset_t offset);
-BOOL smb_shm_lock(void);
-BOOL smb_shm_unlock(void);
-smb_shm_offset_t smb_shm_alloc(int size);
-smb_shm_offset_t smb_shm_addr2offset(void *addr);
-smb_shm_offset_t smb_shm_get_userdef_off(void);
 BOOL smb_shm_lock_hash_entry( unsigned int entry);
 BOOL smb_shm_unlock_hash_entry( unsigned int entry );
 BOOL smb_shm_get_usage(int *bytes_free,
@@ -947,7 +949,8 @@ void BlockSignals(BOOL block,int signum);
 void ajt_panic(void);
 char *readdirname(void *p);
 BOOL is_vetoed_name(char *name);
-BOOL is_vetoed_path(char *name);
+BOOL is_hidden_path(char *path);
+BOOL is_vetoed_path(char *path);
 BOOL fcntl_lock(int fd,int op,uint32 offset,uint32 count,int type);
 int file_lock(char *name,int timeout);
 void file_unlock(int fd);
index ddbd05792dfab7984ef9245b33da1c8ed2725b41..b36943bfe2f39a0da4d11b3fb1db982ff781f569 100644 (file)
@@ -915,4 +915,11 @@ enum case_handling {CASE_LOWER,CASE_UPPER};
 /* Size of buffer to use when moving files across filesystems. */
 #define COPYBUF_SIZE (8*1024)
 
+/* Default files that will be hidden, but accessible.  intended
+   to replace the "hide dot files" parameter if the "hide files"
+   parameter moves to the service section instead of the global
+   section.
+ */
+#define DEFAULT_FILES_TO_HIDE ".*"
+
 /* _SMB_H */
index 9ebfdca88ea87c0c8bbbd27d995d0f2d336cf366..889aa0b976baf1b664cb4073f8976c25877d7cb7 100644 (file)
@@ -3469,9 +3469,8 @@ BOOL is_vetoed_name(char *name)
   return 0;
 }
 
-BOOL is_vetoed_path(char *name)
+static BOOL is_in_path(char *name, char *namelist)
 {
-  char *namelist = lp_veto_files();
   char *nameptr = namelist;
   char *sub;
   char *name_end;
@@ -3522,6 +3521,22 @@ BOOL is_vetoed_path(char *name)
   return 0;
 }
 
+/****************************************************************************
+used to make files hidden, but still accessible
+****************************************************************************/
+BOOL is_hidden_path(char *path)
+{
+  return is_in_path(path, lp_hide_files());
+}
+
+/****************************************************************************
+used to make files _completely_ inaccessible
+****************************************************************************/
+BOOL is_vetoed_path(char *path)
+{
+  return is_in_path(path, lp_veto_files());
+}
+
 /****************************************************************************
 routine to do file locking
 ****************************************************************************/
index 9d3850b2428c9fd12d1de19d9f7df1053e2dd90c..9947aca5eaf02ac3f73cc50120c7dc2e8fd7f8f5 100644 (file)
@@ -130,6 +130,7 @@ typedef struct
   char *szLogonScript;
   char *szLogonPath;
   char *szVetoFiles;
+  char *szHideFiles;
   char *szSmbrun;
   char *szWINSserver;
   char *szInterfaces;
@@ -395,6 +396,7 @@ struct parm_struct
   {"netbios name",     P_UGSTRING,P_GLOBAL, myname,                     NULL},
   {"smbrun",           P_STRING,  P_GLOBAL, &Globals.szSmbrun,          NULL},
   {"veto files",       P_STRING,  P_GLOBAL, &Globals.szVetoFiles,       NULL},
+  {"hide files",       P_STRING,  P_GLOBAL, &Globals.szHideFiles,       NULL},
   {"log file",         P_STRING,  P_GLOBAL, &Globals.szLogFile,         NULL},
   {"config file",      P_STRING,  P_GLOBAL, &Globals.szConfigFile,      NULL},
   {"smb passwd file",  P_STRING,  P_GLOBAL, &Globals.szSMBPasswdFile,   NULL},
@@ -621,6 +623,7 @@ static void init_globals(void)
   Globals.shmem_size = SHMEM_SIZE;
   Globals.shmem_hash_size = SHMEM_HASH_SIZE;
   Globals.bUnixRealname = False;
+  Globals.szHideFiles = DEFAULT_FILES_TO_HIDE;
 #if (defined(NETGROUP) && defined(AUTOMOUNT))
   Globals.bNISHomeMap = False;
   string_set(&Globals.szNISHomeMapName, "auto.home");
@@ -796,6 +799,7 @@ FN_GLOBAL_STRING(lp_character_set,&Globals.szCharacterSet)
 FN_GLOBAL_STRING(lp_logon_script,&Globals.szLogonScript) 
 FN_GLOBAL_STRING(lp_logon_path,&Globals.szLogonPath) 
 FN_GLOBAL_STRING(lp_veto_files,&Globals.szVetoFiles)
+FN_GLOBAL_STRING(lp_hide_files,&Globals.szHideFiles)
 FN_GLOBAL_STRING(lp_remote_announce,&Globals.szRemoteAnnounce) 
 FN_GLOBAL_STRING(lp_wins_server,&Globals.szWINSserver)
 FN_GLOBAL_STRING(lp_interfaces,&Globals.szInterfaces)
index 8c40734ce42e264c260d63eceb48651defa70995..30cf9cb016a0d7eac46884cc2c626868a52559a9 100644 (file)
@@ -222,6 +222,11 @@ int dos_mode(int cnum,char *path,struct stat *sbuf)
        result |= aHIDDEN;
     }
 
+  if (is_hidden_path(path))
+  {
+    result |= aHIDDEN;
+  }
+
   return(result);
 }