From 693480af8bb2d3e83566af9463ca427f47a879da Mon Sep 17 00:00:00 2001 From: Jeremy Allison Date: Mon, 31 Aug 1998 20:20:54 +0000 Subject: configure.in, configure: include/config.h.in: Added stropts and poll. include/smb.h: Moved old typedefs of uint8 etc. into include/includes.h where all the other defines live (changed them from typedefs to defines). Other changes : changed from using uint32 to SMB_DEV_T and SMB_INO_T in preparation for moving to size independed (ie. 64 bit clean) device and inode access. Stat call wrapper comes next :-). Jeremy. (This used to be commit 3d9ec96de5e04e83abafe9c5d980bd39eee856ea) --- source3/smbd/close.c | 4 ++-- source3/smbd/files.c | 10 +++++----- source3/smbd/open.c | 23 ++++++++++++----------- source3/smbd/oplock.c | 25 +++++++++++++++++-------- source3/smbd/reply.c | 4 ++-- source3/smbd/trans2.c | 5 ++++- 6 files changed, 42 insertions(+), 29 deletions(-) (limited to 'source3/smbd') diff --git a/source3/smbd/close.c b/source3/smbd/close.c index 07b000d7ad..42b16bc7ac 100644 --- a/source3/smbd/close.c +++ b/source3/smbd/close.c @@ -99,8 +99,8 @@ static void close_filestruct(files_struct *fsp) ****************************************************************************/ void close_file(files_struct *fsp, BOOL normal_close) { - uint32 dev = fsp->fd_ptr->dev; - uint32 inode = fsp->fd_ptr->inode; + SMB_DEV_T dev = fsp->fd_ptr->dev; + SMB_INO_T inode = fsp->fd_ptr->inode; int token; connection_struct *conn = fsp->conn; diff --git a/source3/smbd/files.c b/source3/smbd/files.c index 00de8dfffa..d098677fba 100644 --- a/source3/smbd/files.c +++ b/source3/smbd/files.c @@ -125,8 +125,8 @@ file_fd_struct *fd_get_already_open(struct stat *sbuf) for (fd_ptr=FileFd;fd_ptr;fd_ptr=fd_ptr->next) { if ((fd_ptr->ref_count > 0) && - (((uint32)sbuf->st_dev) == fd_ptr->dev) && - (((uint32)sbuf->st_ino) == fd_ptr->inode)) { + (sbuf->st_dev == fd_ptr->dev) && + (sbuf->st_ino == fd_ptr->inode)) { fd_ptr->ref_count++; DEBUG(3,("Re-used file_fd_struct dev = %x, inode = %x, ref_count = %d\n", fd_ptr->dev, fd_ptr->inode, @@ -162,8 +162,8 @@ file_fd_struct *fd_get_new(void) memset(fd_ptr, 0, sizeof(*fd_ptr)); fd_ptr->fdnum = i; - fd_ptr->dev = (uint32)-1; - fd_ptr->inode = (uint32)-1; + fd_ptr->dev = (SMB_DEV_T)-1; + fd_ptr->inode = (SMB_INO_T)-1; fd_ptr->fd = -1; fd_ptr->fd_readonly = -1; fd_ptr->fd_writeonly = -1; @@ -254,7 +254,7 @@ void file_close_user(int vuid) /**************************************************************************** find a fsp given a device, inode and timevalue ****************************************************************************/ -files_struct *file_find_dit(int dev, int inode, struct timeval *tval) +files_struct *file_find_dit(SMB_DEV_T dev, SMB_INO_T inode, struct timeval *tval) { int count=0; files_struct *fsp; diff --git a/source3/smbd/open.c b/source3/smbd/open.c index e54a456092..1a16a25c0a 100644 --- a/source3/smbd/open.c +++ b/source3/smbd/open.c @@ -166,8 +166,8 @@ int fd_attempt_close(file_fd_struct *fd_ptr) fd_ptr->fd_readonly = -1; fd_ptr->fd_writeonly = -1; fd_ptr->real_open_flags = -1; - fd_ptr->dev = (uint32)-1; - fd_ptr->inode = (uint32)-1; + fd_ptr->dev = (SMB_DEV_T)-1; + fd_ptr->inode = (SMB_INO_T)-1; fd_ptr->uid_cache_count = 0; } else { fd_remove_from_uid_cache(fd_ptr, (uid_t)current_user.uid); @@ -484,8 +484,8 @@ static void open_file(files_struct *fsp,connection_struct *conn, } /* Set the correct entries in fd_ptr. */ - fd_ptr->dev = (uint32)sbuf->st_dev; - fd_ptr->inode = (uint32)sbuf->st_ino; + fd_ptr->dev = sbuf->st_dev; + fd_ptr->inode = sbuf->st_ino; fsp->fd_ptr = fd_ptr; conn->num_files_open++; @@ -596,8 +596,8 @@ void open_file_shared(files_struct *fsp,connection_struct *conn,char *fname,int BOOL share_locked = False; BOOL fcbopen = False; int token; - uint32 dev = 0; - uint32 inode = 0; + SMB_DEV_T dev = 0; + SMB_INO_T inode = 0; int num_share_modes = 0; fsp->open = False; @@ -681,8 +681,8 @@ void open_file_shared(files_struct *fsp,connection_struct *conn,char *fname,int if (file_existed) { - dev = (uint32)sbuf.st_dev; - inode = (uint32)sbuf.st_ino; + dev = sbuf.st_dev; + inode = sbuf.st_ino; lock_share_entry(conn, dev, inode, &token); share_locked = True; num_share_modes = get_share_modes(conn, token, dev, inode, &old_shares); @@ -994,15 +994,16 @@ BOOL check_file_sharing(connection_struct *conn,char *fname, BOOL rename_op) struct stat sbuf; int token; int pid = getpid(); - uint32 dev, inode; + SMB_DEV_T dev; + SMB_INO_T inode; if(!lp_share_modes(SNUM(conn))) return True; if (sys_stat(fname,&sbuf) == -1) return(True); - dev = (uint32)sbuf.st_dev; - inode = (uint32)sbuf.st_ino; + dev = sbuf.st_dev; + inode = sbuf.st_ino; lock_share_entry(conn, dev, inode, &token); num_share_modes = get_share_modes(conn, token, dev, inode, &old_shares); diff --git a/source3/smbd/oplock.c b/source3/smbd/oplock.c index d9df308a35..ab88b82953 100644 --- a/source3/smbd/oplock.c +++ b/source3/smbd/oplock.c @@ -105,8 +105,11 @@ should be %d).\n", msg_len, OPLOCK_BREAK_MSG_LEN)); } { uint32 remotepid = IVAL(msg_start,OPLOCK_BREAK_PID_OFFSET); - uint32 dev = IVAL(msg_start,OPLOCK_BREAK_DEV_OFFSET); - uint32 inode = IVAL(msg_start, OPLOCK_BREAK_INODE_OFFSET); + /* + * Warning - this will need to be changed if SMB_DEV_T/SMB_INO_T <> 4 bytes. !! + */ + SMB_DEV_T dev = IVAL(msg_start,OPLOCK_BREAK_DEV_OFFSET); + SMB_INO_T inode = IVAL(msg_start, OPLOCK_BREAK_INODE_OFFSET); struct timeval tval; struct sockaddr_in toaddr; @@ -176,8 +179,11 @@ reply - dumping info.\n")); { uint32 remotepid = IVAL(msg_start,OPLOCK_BREAK_PID_OFFSET); - uint32 dev = IVAL(msg_start,OPLOCK_BREAK_DEV_OFFSET); - uint32 inode = IVAL(msg_start, OPLOCK_BREAK_INODE_OFFSET); + /* + * Warning - this will need to be changed if SMB_DEV_T/SMB_INO_T <> 4 bytes. !! + */ + SMB_DEV_T dev = IVAL(msg_start,OPLOCK_BREAK_DEV_OFFSET); + SMB_INO_T inode = IVAL(msg_start, OPLOCK_BREAK_INODE_OFFSET); DEBUG(0,("process_local_message: unsolicited oplock break reply from \ pid %d, port %d, dev = %x, inode = %x\n", remotepid, from_port, dev, inode)); @@ -196,7 +202,7 @@ pid %d, port %d, dev = %x, inode = %x\n", remotepid, from_port, dev, inode)); /**************************************************************************** Process an oplock break directly. ****************************************************************************/ -BOOL oplock_break(uint32 dev, uint32 inode, struct timeval *tval) +BOOL oplock_break(SMB_DEV_T dev, SMB_INO_T inode, struct timeval *tval) { extern struct current_user current_user; extern int Client; @@ -458,7 +464,7 @@ by the local smbd then call the oplock break function directly. ****************************************************************************/ BOOL request_oplock_break(share_mode_entry *share_entry, - uint32 dev, uint32 inode) + SMB_DEV_T dev, SMB_INO_T inode) { char op_break_msg[OPLOCK_BREAK_MSG_LEN]; struct sockaddr_in addr_out; @@ -487,10 +493,13 @@ should be %d\n", pid, share_entry->op_port, oplock_port)); SSVAL(op_break_msg,UDP_MESSAGE_CMD_OFFSET,OPLOCK_BREAK_CMD); SIVAL(op_break_msg,OPLOCK_BREAK_PID_OFFSET,pid); - SIVAL(op_break_msg,OPLOCK_BREAK_DEV_OFFSET,dev); - SIVAL(op_break_msg,OPLOCK_BREAK_INODE_OFFSET,inode); SIVAL(op_break_msg,OPLOCK_BREAK_SEC_OFFSET,(uint32)share_entry->time.tv_sec); SIVAL(op_break_msg,OPLOCK_BREAK_USEC_OFFSET,(uint32)share_entry->time.tv_usec); + /* + * WARNING - this will need to be changed if SMB_DEV_T/SMB_INO_T <> 4 bytes. + */ + SIVAL(op_break_msg,OPLOCK_BREAK_DEV_OFFSET,dev); + SIVAL(op_break_msg,OPLOCK_BREAK_INODE_OFFSET,inode); /* set the address and port */ bzero((char *)&addr_out,sizeof(addr_out)); diff --git a/source3/smbd/reply.c b/source3/smbd/reply.c index 3052bd730c..e30c31776c 100644 --- a/source3/smbd/reply.c +++ b/source3/smbd/reply.c @@ -3544,8 +3544,8 @@ int reply_lockingX(connection_struct *conn, char *inbuf,char *outbuf,int length, if ((locktype & LOCKING_ANDX_OPLOCK_RELEASE)) { int token; - uint32 dev = fsp->fd_ptr->dev; - uint32 inode = fsp->fd_ptr->inode; + SMB_DEV_T dev = fsp->fd_ptr->dev; + SMB_INO_T inode = fsp->fd_ptr->inode; DEBUG(5,("reply_lockingX: oplock break reply from client for fnum = %d\n", fsp->fnum)); diff --git a/source3/smbd/trans2.c b/source3/smbd/trans2.c index da11dbcb29..3a851cfa8b 100644 --- a/source3/smbd/trans2.c +++ b/source3/smbd/trans2.c @@ -201,7 +201,7 @@ static int call_trans2open(connection_struct *conn, char *inbuf, char *outbuf, pstring fname; int unixmode; int size=0,fmode=0,mtime=0,rmode; - int32 inode = 0; + SMB_INO_T inode = 0; struct stat sbuf; int smb_action = 0; BOOL bad_path = False; @@ -278,6 +278,9 @@ static int call_trans2open(connection_struct *conn, char *inbuf, char *outbuf, } SSVAL(params,18,smb_action); + /* + * WARNING - this may need to be changed if SMB_INO_T <> 4 bytes. + */ SIVAL(params,20,inode); /* Send the required number of replies */ -- cgit