00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022 #include "includes.h"
00023
00024 size_t clistr_push_fn(const char *function, unsigned int line,
00025 struct cli_state *cli, void *dest,
00026 const char *src, int dest_len, int flags)
00027 {
00028 size_t buf_used = PTR_DIFF(dest, cli->outbuf);
00029 if (dest_len == -1) {
00030 if (((ptrdiff_t)dest < (ptrdiff_t)cli->outbuf) || (buf_used > cli->bufsize)) {
00031 DEBUG(0, ("Pushing string of 'unlimited' length into non-SMB buffer!\n"));
00032 return push_string_fn(function, line, cli->outbuf, dest, src, -1, flags);
00033 }
00034 return push_string_fn(function, line, cli->outbuf, dest, src, cli->bufsize - buf_used, flags);
00035 }
00036
00037
00038 return push_string_fn(function, line, cli->outbuf, dest, src, dest_len, flags);
00039 }
00040
00041 size_t clistr_pull_fn(const char *function, unsigned int line,
00042 struct cli_state *cli, char *dest, const void *src,
00043 int dest_len, int src_len,
00044 int flags)
00045 {
00046 return pull_string_fn(function, line, cli->inbuf, dest, src, dest_len, src_len, flags);
00047 }
00048
00049
00050 size_t clistr_align_out(struct cli_state *cli, const void *p, int flags)
00051 {
00052 return align_string(cli->outbuf, (const char *)p, flags);
00053 }
00054
00055 size_t clistr_align_in(struct cli_state *cli, const void *p, int flags)
00056 {
00057 return align_string(cli->inbuf, (const char *)p, flags);
00058 }