From d689f00026541dd2cb87c6949fdc2f8eb3ad919f Mon Sep 17 00:00:00 2001 From: Andrew Tridgell Date: Wed, 21 Feb 2001 04:14:28 +0000 Subject: converted the last couple of functions in libsmb to be unicode the whole of libsmb should now do unicode where appropriate (This used to be commit ac7529d2b69826f8214d5632c31778cc87216653) --- source3/libsmb/clirap.c | 24 ++++++++++++++---------- source3/libsmb/clistr.c | 8 ++++---- 2 files changed, 18 insertions(+), 14 deletions(-) (limited to 'source3/libsmb') diff --git a/source3/libsmb/clirap.c b/source3/libsmb/clirap.c index bf0940d1d6..3c87464495 100644 --- a/source3/libsmb/clirap.c +++ b/source3/libsmb/clirap.c @@ -388,13 +388,15 @@ BOOL cli_qpathinfo(struct cli_state *cli, const char *fname, int count=8; BOOL ret; time_t (*date_fn)(void *); + char *p; - param_len = strlen(fname) + 7; + p = param; + memset(p, 0, 6); + SSVAL(p, 0, SMB_INFO_STANDARD); + p += 6; + p += clistr_push(cli, p, fname, sizeof(pstring)-6, CLISTR_TERMINATE | CLISTR_CONVERT); - memset(param, 0, param_len); - SSVAL(param, 0, SMB_INFO_STANDARD); - pstrcpy(¶m[6], fname); - unix_to_dos(¶m[6],True); + param_len = PTR_DIFF(p, param); do { ret = (cli_send_trans(cli, SMBtrans2, @@ -462,13 +464,15 @@ BOOL cli_qpathinfo2(struct cli_state *cli, const char *fname, uint16 setup = TRANSACT2_QPATHINFO; pstring param; char *rparam=NULL, *rdata=NULL; + char *p; - param_len = strlen(fname) + 7; + p = param; + memset(p, 0, 6); + SSVAL(p, 0, SMB_QUERY_FILE_ALL_INFO); + p += 6; + p += clistr_push(cli, p, fname, sizeof(pstring)-6, CLISTR_TERMINATE | CLISTR_CONVERT); - memset(param, 0, param_len); - SSVAL(param, 0, SMB_QUERY_FILE_ALL_INFO); - pstrcpy(¶m[6], fname); - unix_to_dos(¶m[6],True); + param_len = PTR_DIFF(p, param); if (!cli_send_trans(cli, SMBtrans2, NULL, /* name */ diff --git a/source3/libsmb/clistr.c b/source3/libsmb/clistr.c index 9f46099ba9..e07b4d5a63 100644 --- a/source3/libsmb/clistr.c +++ b/source3/libsmb/clistr.c @@ -36,7 +36,7 @@ flags can have: dest_len is the maximum length allowed in the destination. If dest_len is -1 then no maxiumum is used ****************************************************************************/ -int clistr_push(struct cli_state *cli, void *dest, char *src, int dest_len, int flags) +int clistr_push(struct cli_state *cli, void *dest, const char *src, int dest_len, int flags) { int len=0; @@ -84,7 +84,7 @@ return the length that a string would occupy when copied with clistr_push() CLISTR_UPPER means uppercase in the destination note that dest is only used for alignment purposes. No data is written. ****************************************************************************/ -int clistr_push_size(struct cli_state *cli, void *dest, char *src, int dest_len, int flags) +int clistr_push_size(struct cli_state *cli, const void *dest, const char *src, int dest_len, int flags) { int len = strlen(src); if (flags & CLISTR_TERMINATE) len++; @@ -107,7 +107,7 @@ if CLISTR_TERMINATE is set then src_len is ignored src_len is the length of the source area in bytes return the number of bytes occupied by the string in src ****************************************************************************/ -int clistr_pull(struct cli_state *cli, char *dest, void *src, int dest_len, int src_len, int flags) +int clistr_pull(struct cli_state *cli, char *dest, const void *src, int dest_len, int src_len, int flags) { int len; @@ -157,7 +157,7 @@ return the length that a string would occupy (not including the null) when copied with clistr_pull() if src_len is -1 then assume the source is null terminated ****************************************************************************/ -int clistr_pull_size(struct cli_state *cli, void *src, int src_len) +int clistr_pull_size(struct cli_state *cli, const void *src, int src_len) { if (clistr_align(cli, PTR_DIFF(cli->inbuf, src))) { src++; -- cgit