s3: Convert cli_qfilename to cli_qfileinfo
authorVolker Lendecke <vl@samba.org>
Sat, 23 Oct 2010 07:43:31 +0000 (09:43 +0200)
committerVolker Lendecke <vl@samba.org>
Sun, 24 Oct 2010 09:39:30 +0000 (11:39 +0200)
source3/include/proto.h
source3/libsmb/clirap.c
source3/torture/torture.c

index 55e4e1b9e970fb8cb309f4e0126092b1fcea19d8..e175454dae17e0f76c3d950c32344789e6742d93 100644 (file)
@@ -2327,7 +2327,8 @@ NTSTATUS cli_qpathinfo_streams(struct cli_state *cli, const char *fname,
                               TALLOC_CTX *mem_ctx,
                               unsigned int *pnum_streams,
                               struct stream_struct **pstreams);
-bool cli_qfilename(struct cli_state *cli, uint16_t fnum, char *name, size_t namelen);
+NTSTATUS cli_qfilename(struct cli_state *cli, uint16_t fnum, char *name,
+                      size_t namelen);
 bool cli_qfileinfo_basic(struct cli_state *cli, uint16_t fnum,
                         uint16 *mode, SMB_OFF_T *size,
                         struct timespec *create_time,
index 025a86b833d4de9a7a36e78ae63a944e8a468e90..0b141d74979456c4b87e6595df8eb1a70e63828f 100644 (file)
@@ -1097,47 +1097,25 @@ static bool parse_streams_blob(TALLOC_CTX *mem_ctx, const uint8_t *rdata,
  Send a qfileinfo QUERY_FILE_NAME_INFO call.
 ****************************************************************************/
 
-bool cli_qfilename(struct cli_state *cli, uint16_t fnum, char *name, size_t namelen)
+NTSTATUS cli_qfilename(struct cli_state *cli, uint16_t fnum, char *name,
+                      size_t namelen)
 {
-       unsigned int data_len = 0;
-       unsigned int param_len = 0;
-       uint16 setup = TRANSACT2_QFILEINFO;
-       char param[4];
-       char *rparam=NULL, *rdata=NULL;
-
-       param_len = 4;
-       SSVAL(param, 0, fnum);
-       SSVAL(param, 2, SMB_QUERY_FILE_NAME_INFO);
-
-       if (!cli_send_trans(cli, SMBtrans2,
-                            NULL,                         /* name */
-                            -1, 0,                        /* fid, flags */
-                            &setup, 1, 0,                 /* setup, length, max */
-                            param, param_len, 2,          /* param, length, max */
-                            NULL, data_len, cli->max_xmit /* data, length, max */
-                           )) {
-               return False;
-       }
-
-       if (!cli_receive_trans(cli, SMBtrans2,
-                               &rparam, &param_len,
-                               &rdata, &data_len)) {
-               return False;
-       }
+       uint8_t *rdata;
+       uint32_t num_rdata;
+       NTSTATUS status;
 
-       if (!rdata || data_len < 4) {
-               SAFE_FREE(rparam);
-               SAFE_FREE(rdata);
-               return False;
+       status = cli_qfileinfo(talloc_tos(), cli, fnum,
+                              SMB_QUERY_FILE_NAME_INFO,
+                              4, cli->max_xmit,
+                              &rdata, &num_rdata);
+       if (!NT_STATUS_IS_OK(status)) {
+               return status;
        }
 
        clistr_pull(cli->inbuf, name, rdata+4, namelen, IVAL(rdata, 0),
                    STR_UNICODE);
-
-       SAFE_FREE(rparam);
-       SAFE_FREE(rdata);
-
-       return True;
+       TALLOC_FREE(rdata);
+       return NT_STATUS_OK;
 }
 
 /****************************************************************************
index 32a9bbd2b96039feb1b6db868515f7ed257736d7..39e0dda4e0bc4722edd380e56cdbd25e6c0c4d2b 100644 (file)
@@ -2984,7 +2984,7 @@ static bool run_trans2test(int dummy)
                correct = False;
        }
 
-       if (!cli_qfilename(cli, fnum, pname, sizeof(pname))) {
+       if (!NT_STATUS_IS_OK(cli_qfilename(cli, fnum, pname, sizeof(pname)))) {
                printf("ERROR: qfilename failed (%s)\n", cli_errstr(cli));
                correct = False;
        }