svn commit: samba r21054 - in branches: SAMBA_3_0/source/smbd
SAMBA_3_0_24/source/smbd
jra at samba.org
jra at samba.org
Tue Jan 30 02:27:30 GMT 2007
Author: jra
Date: 2007-01-30 02:27:29 +0000 (Tue, 30 Jan 2007)
New Revision: 21054
WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=rev&root=samba&rev=21054
Log:
More function refactoring.
Jeremy.
Modified:
branches/SAMBA_3_0/source/smbd/trans2.c
branches/SAMBA_3_0_24/source/smbd/trans2.c
Changeset:
Modified: branches/SAMBA_3_0/source/smbd/trans2.c
===================================================================
--- branches/SAMBA_3_0/source/smbd/trans2.c 2007-01-30 02:13:58 UTC (rev 21053)
+++ branches/SAMBA_3_0/source/smbd/trans2.c 2007-01-30 02:27:29 UTC (rev 21054)
@@ -3679,7 +3679,7 @@
code.
****************************************************************************/
-NTSTATUS hardlink_internals(connection_struct *conn, char *oldname, char *newname)
+NTSTATUS hardlink_internals(connection_struct *conn, pstring oldname, pstring newname)
{
SMB_STRUCT_STAT sbuf1, sbuf2;
pstring last_component_oldname;
@@ -3988,7 +3988,46 @@
return -1;
}
+/****************************************************************************
+ Deal with SMB_SET_FILE_UNIX_HLINK (create a UNIX hard link).
+****************************************************************************/
+static int smb_set_file_unix_hlink(connection_struct *conn,
+ char *inbuf,
+ char *outbuf,
+ int bufsize,
+ char *params,
+ char *pdata,
+ int total_data,
+ unsigned int max_data_bytes,
+ pstring fname)
+{
+ pstring oldname;
+ NTSTATUS status = NT_STATUS_OK;
+
+ /* Set a hard link. */
+ if (total_data == 0) {
+ return ERROR_NT(NT_STATUS_INVALID_PARAMETER);
+ }
+
+ srvstr_get_path(inbuf, oldname, pdata, sizeof(oldname), total_data, STR_TERMINATE, &status);
+ if (!NT_STATUS_IS_OK(status)) {
+ return ERROR_NT(status);
+ }
+
+ DEBUG(10,("call_trans2setfilepathinfo: SMB_SET_FILE_UNIX_LINK doing hard link %s -> %s\n",
+ fname, oldname));
+
+ status = hardlink_internals(conn, oldname, fname);
+ if (!NT_STATUS_IS_OK(status)) {
+ return ERROR_NT(status);
+ }
+
+ SSVAL(params,0,0);
+ send_trans2_replies(outbuf, bufsize, params, 2, pdata, 0, max_data_bytes);
+ return -1;
+}
+
/****************************************************************************
Reply to a TRANS2_SETFILEINFO (set file info by fileid or pathname).
****************************************************************************/
@@ -4534,30 +4573,19 @@
case SMB_SET_FILE_UNIX_HLINK:
{
- pstring oldname;
- char *newname = fname;
-
- /* Set a hard link. */
- if (total_data == 0) {
- return ERROR_NT(NT_STATUS_INVALID_PARAMETER);
+ if (tran_call != TRANSACT2_SETPATHINFO) {
+ /* We must have a pathname for this. */
+ return ERROR_NT(NT_STATUS_INVALID_LEVEL);
}
-
- srvstr_get_path(inbuf, oldname, pdata, sizeof(oldname), total_data, STR_TERMINATE, &status);
- if (!NT_STATUS_IS_OK(status)) {
- return ERROR_NT(status);
- }
-
- DEBUG(10,("call_trans2setfilepathinfo: SMB_SET_FILE_UNIX_LINK doing hard link %s -> %s\n",
- fname, oldname));
-
- status = hardlink_internals(conn, oldname, newname);
- if (!NT_STATUS_IS_OK(status)) {
- return ERROR_NT(status);
- }
-
- SSVAL(params,0,0);
- send_trans2_replies(outbuf, bufsize, params, 2, *ppdata, 0, max_data_bytes);
- return(-1);
+ return smb_set_file_unix_hlink(conn,
+ inbuf,
+ outbuf,
+ bufsize,
+ params,
+ *ppdata,
+ total_data,
+ max_data_bytes,
+ fname);
}
case SMB_FILE_RENAME_INFORMATION:
Modified: branches/SAMBA_3_0_24/source/smbd/trans2.c
===================================================================
--- branches/SAMBA_3_0_24/source/smbd/trans2.c 2007-01-30 02:13:58 UTC (rev 21053)
+++ branches/SAMBA_3_0_24/source/smbd/trans2.c 2007-01-30 02:27:29 UTC (rev 21054)
@@ -3679,7 +3679,7 @@
code.
****************************************************************************/
-NTSTATUS hardlink_internals(connection_struct *conn, char *oldname, char *newname)
+NTSTATUS hardlink_internals(connection_struct *conn, pstring oldname, pstring newname)
{
SMB_STRUCT_STAT sbuf1, sbuf2;
pstring last_component_oldname;
@@ -3988,7 +3988,46 @@
return -1;
}
+/****************************************************************************
+ Deal with SMB_SET_FILE_UNIX_HLINK (create a UNIX hard link).
+****************************************************************************/
+static int smb_set_file_unix_hlink(connection_struct *conn,
+ char *inbuf,
+ char *outbuf,
+ int bufsize,
+ char *params,
+ char *pdata,
+ int total_data,
+ unsigned int max_data_bytes,
+ pstring fname)
+{
+ pstring oldname;
+ NTSTATUS status = NT_STATUS_OK;
+
+ /* Set a hard link. */
+ if (total_data == 0) {
+ return ERROR_NT(NT_STATUS_INVALID_PARAMETER);
+ }
+
+ srvstr_get_path(inbuf, oldname, pdata, sizeof(oldname), total_data, STR_TERMINATE, &status);
+ if (!NT_STATUS_IS_OK(status)) {
+ return ERROR_NT(status);
+ }
+
+ DEBUG(10,("call_trans2setfilepathinfo: SMB_SET_FILE_UNIX_LINK doing hard link %s -> %s\n",
+ fname, oldname));
+
+ status = hardlink_internals(conn, oldname, fname);
+ if (!NT_STATUS_IS_OK(status)) {
+ return ERROR_NT(status);
+ }
+
+ SSVAL(params,0,0);
+ send_trans2_replies(outbuf, bufsize, params, 2, pdata, 0, max_data_bytes);
+ return -1;
+}
+
/****************************************************************************
Reply to a TRANS2_SETFILEINFO (set file info by fileid or pathname).
****************************************************************************/
@@ -4534,30 +4573,19 @@
case SMB_SET_FILE_UNIX_HLINK:
{
- pstring oldname;
- char *newname = fname;
-
- /* Set a hard link. */
- if (total_data == 0) {
- return ERROR_NT(NT_STATUS_INVALID_PARAMETER);
+ if (tran_call != TRANSACT2_SETPATHINFO) {
+ /* We must have a pathname for this. */
+ return ERROR_NT(NT_STATUS_INVALID_LEVEL);
}
-
- srvstr_get_path(inbuf, oldname, pdata, sizeof(oldname), total_data, STR_TERMINATE, &status);
- if (!NT_STATUS_IS_OK(status)) {
- return ERROR_NT(status);
- }
-
- DEBUG(10,("call_trans2setfilepathinfo: SMB_SET_FILE_UNIX_LINK doing hard link %s -> %s\n",
- fname, oldname));
-
- status = hardlink_internals(conn, oldname, newname);
- if (!NT_STATUS_IS_OK(status)) {
- return ERROR_NT(status);
- }
-
- SSVAL(params,0,0);
- send_trans2_replies(outbuf, bufsize, params, 2, *ppdata, 0, max_data_bytes);
- return(-1);
+ return smb_set_file_unix_hlink(conn,
+ inbuf,
+ outbuf,
+ bufsize,
+ params,
+ *ppdata,
+ total_data,
+ max_data_bytes,
+ fname);
}
case SMB_FILE_RENAME_INFORMATION:
More information about the samba-cvs
mailing list