From 97351bc5fc2c203bde4702c14fc7429fe2d437ba Mon Sep 17 00:00:00 2001 From: Derrell Lipman Date: Mon, 17 Oct 2005 19:29:11 +0000 Subject: r11130: r10092@cabra: derrell | 2005-10-17 15:29:03 -0400 let's now actually add the new test file (This used to be commit b58237f98d924752a45f689d7a9fd2e8e447c100) --- examples/libsmbclient/testread.c | 74 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 74 insertions(+) create mode 100644 examples/libsmbclient/testread.c (limited to 'examples/libsmbclient/testread.c') diff --git a/examples/libsmbclient/testread.c b/examples/libsmbclient/testread.c new file mode 100644 index 0000000000..1f1219ca84 --- /dev/null +++ b/examples/libsmbclient/testread.c @@ -0,0 +1,74 @@ +#include +#include +#include +#include +#include +#include +#include +#include "get_auth_data_fn.h" + + +int main(int argc, char * argv[]) +{ + int fd; + int ret; + int debug = 0; + int mode = 0666; + int savedErrno; + char buffer[2048]; + char * pSmbPath = NULL; + time_t t0; + time_t t1; + struct stat st; + + if (argc == 1) + { + pSmbPath = "smb://RANDOM/Public/bigfile"; + } + else if (argc == 2) + { + pSmbPath = argv[1]; + } + else + { + printf("usage: " + "%s [ smb://path/to/file ]\n", + argv[0]); + return 1; + } + + smbc_init(get_auth_data_fn, debug); + + printf("Open file %s\n", pSmbPath); + + t0 = time(NULL); + + if ((fd = smbc_open(pSmbPath, O_RDONLY, 0)) < 0) + { + perror("smbc_open"); + return 1; + } + + printf("Beginning read loop.\n"); + + do + { + ret = smbc_read(fd, buffer, sizeof(buffer)); + savedErrno = errno; + } while (ret > 0); + + smbc_close(fd); + + if (ret < 0) + { + errno = savedErrno; + perror("read"); + return 1; + } + + t1 = time(NULL); + + printf("Elapsed time: %d seconds\n", t1 - t0); + + return 0; +} -- cgit From 44c1504c032ffa0f0b9cc2333fa0e3a05a03bf48 Mon Sep 17 00:00:00 2001 From: Derrell Lipman Date: Sun, 3 Sep 2006 01:37:26 +0000 Subject: r18012: Should fix bug 4018. NetApp filers expect paths in Open AndX Request to have a leading slash. Windows clients send the leading slash, so we should too. (This used to be commit fc5b6e4bd8a67994b0c56d1223c74d064164420f) --- examples/libsmbclient/testread.c | 1 + 1 file changed, 1 insertion(+) (limited to 'examples/libsmbclient/testread.c') diff --git a/examples/libsmbclient/testread.c b/examples/libsmbclient/testread.c index 1f1219ca84..d59fc70ec1 100644 --- a/examples/libsmbclient/testread.c +++ b/examples/libsmbclient/testread.c @@ -55,6 +55,7 @@ int main(int argc, char * argv[]) { ret = smbc_read(fd, buffer, sizeof(buffer)); savedErrno = errno; + if (ret > 0) fwrite(buffer, 1, ret, stdout); } while (ret > 0); smbc_close(fd); -- cgit From 3e494442de5eff6d0619c793eef139c15efe0657 Mon Sep 17 00:00:00 2001 From: Derrell Lipman Date: Wed, 16 Jan 2008 14:41:11 +0000 Subject: Modify testread example to loop using same context. There's been a problem seen where open/read/close a number of times causes open failures eventually. This program has been modified to create the context once and then loop requesting file names to open/read/close. This program also demonstrates the current error in cli_read() where it returns an error instead of length 0 upon end of file. Derrell (This used to be commit 9d75ea577b407ccab59196760d376831062a3ab5) --- examples/libsmbclient/testread.c | 76 ++++++++++++++++++---------------------- 1 file changed, 34 insertions(+), 42 deletions(-) (limited to 'examples/libsmbclient/testread.c') diff --git a/examples/libsmbclient/testread.c b/examples/libsmbclient/testread.c index d59fc70ec1..3f94884895 100644 --- a/examples/libsmbclient/testread.c +++ b/examples/libsmbclient/testread.c @@ -10,66 +10,58 @@ int main(int argc, char * argv[]) { + int i; int fd; int ret; int debug = 0; int mode = 0666; int savedErrno; char buffer[2048]; - char * pSmbPath = NULL; + char path[2048]; + char * p; time_t t0; time_t t1; struct stat st; - if (argc == 1) - { - pSmbPath = "smb://RANDOM/Public/bigfile"; - } - else if (argc == 2) - { - pSmbPath = argv[1]; - } - else - { - printf("usage: " - "%s [ smb://path/to/file ]\n", - argv[0]); - return 1; - } - smbc_init(get_auth_data_fn, debug); - printf("Open file %s\n", pSmbPath); - - t0 = time(NULL); - - if ((fd = smbc_open(pSmbPath, O_RDONLY, 0)) < 0) + for (;;) { - perror("smbc_open"); - return 1; - } + fprintf(stdout, "Path: "); + *path = '\0'; + fgets(path, sizeof(path) - 1, stdin); + if (strlen(path) == 0) + { + return 0; + } - printf("Beginning read loop.\n"); + p = path + strlen(path) - 1; + if (*p == '\n') + { + *p = '\0'; + } + + if ((fd = smbc_open(path, O_RDONLY, 0)) < 0) + { + perror("smbc_open"); + continue; + } - do - { - ret = smbc_read(fd, buffer, sizeof(buffer)); - savedErrno = errno; - if (ret > 0) fwrite(buffer, 1, ret, stdout); - } while (ret > 0); + do + { + ret = smbc_read(fd, buffer, sizeof(buffer)); + savedErrno = errno; + if (ret > 0) fwrite(buffer, 1, ret, stdout); + } while (ret > 0); - smbc_close(fd); + smbc_close(fd); - if (ret < 0) - { - errno = savedErrno; - perror("read"); - return 1; + if (ret < 0) + { + errno = savedErrno; + perror("read"); + } } - t1 = time(NULL); - - printf("Elapsed time: %d seconds\n", t1 - t0); - return 0; } -- cgit