diff options
author | Volker Lendecke <vl@samba.org> | 2022-08-17 10:51:06 +0200 |
---|---|---|
committer | Jeremy Allison <jra@samba.org> | 2022-08-26 18:54:37 +0000 |
commit | 556e1a5ee4e574679bbcbc13ba6091c17b6c9c51 (patch) | |
tree | 62c7cd3ba2c8f8d8ee19f481e2e2e8507d00d443 /examples | |
parent | df4c3f0f28e2385cfdace905da4ad3cc4a59dd43 (diff) | |
download | samba-556e1a5ee4e574679bbcbc13ba6091c17b6c9c51.tar.gz |
examples: Make libsmbclient samples look a *bit* less ugly
Remove trailing whitespace, indent to tabs. Yes, this introduces long
lines, but makes review with "git show -w" trivial.
Signed-off-by: Volker Lendecke <vl@samba.org>
Reviewed-by: Jeremy Allison <jra@samba.org>
Diffstat (limited to 'examples')
-rw-r--r-- | examples/libsmbclient/get_auth_data_fn.h | 146 | ||||
-rw-r--r-- | examples/libsmbclient/testacl.c | 214 | ||||
-rw-r--r-- | examples/libsmbclient/testacl2.c | 96 | ||||
-rw-r--r-- | examples/libsmbclient/testacl3.c | 102 | ||||
-rw-r--r-- | examples/libsmbclient/testbrowse.c | 469 | ||||
-rw-r--r-- | examples/libsmbclient/testbrowse2.c | 229 | ||||
-rw-r--r-- | examples/libsmbclient/testchmod.c | 114 | ||||
-rw-r--r-- | examples/libsmbclient/testctx.c | 42 | ||||
-rw-r--r-- | examples/libsmbclient/testfstatvfs.c | 248 | ||||
-rw-r--r-- | examples/libsmbclient/testread.c | 108 | ||||
-rw-r--r-- | examples/libsmbclient/testsmbc.c | 306 | ||||
-rw-r--r-- | examples/libsmbclient/teststat.c | 126 | ||||
-rw-r--r-- | examples/libsmbclient/teststat2.c | 16 | ||||
-rw-r--r-- | examples/libsmbclient/teststat3.c | 9 | ||||
-rw-r--r-- | examples/libsmbclient/teststatvfs.c | 176 | ||||
-rw-r--r-- | examples/libsmbclient/testtruncate.c | 136 | ||||
-rw-r--r-- | examples/libsmbclient/testutime.c | 134 | ||||
-rw-r--r-- | examples/libsmbclient/testwrite.c | 118 | ||||
-rw-r--r-- | examples/libsmbclient/tree.c | 1048 |
19 files changed, 1916 insertions, 1921 deletions
diff --git a/examples/libsmbclient/get_auth_data_fn.h b/examples/libsmbclient/get_auth_data_fn.h index 5f2be72a633..9adb7451176 100644 --- a/examples/libsmbclient/get_auth_data_fn.h +++ b/examples/libsmbclient/get_auth_data_fn.h @@ -10,83 +10,83 @@ get_auth_data_fn(const char * pServer, char * pPassword, int maxLenPassword) { - char temp[128]; - char server[256] = { '\0' }; - char share[256] = { '\0' }; - char workgroup[256] = { '\0' }; - char username[256] = { '\0' }; - char password[256] = { '\0' }; - char *ret; + char temp[128]; + char server[256] = { '\0' }; + char share[256] = { '\0' }; + char workgroup[256] = { '\0' }; + char username[256] = { '\0' }; + char password[256] = { '\0' }; + char *ret; - static int krb5_set = 1; + static int krb5_set = 1; - if (strcmp(server, pServer) == 0 && - strcmp(share, pShare) == 0 && - *workgroup != '\0' && - *username != '\0') - { - strncpy(pWorkgroup, workgroup, maxLenWorkgroup - 1); - strncpy(pUsername, username, maxLenUsername - 1); - strncpy(pPassword, password, maxLenPassword - 1); - return; - } + if (strcmp(server, pServer) == 0 && + strcmp(share, pShare) == 0 && + *workgroup != '\0' && + *username != '\0') + { + strncpy(pWorkgroup, workgroup, maxLenWorkgroup - 1); + strncpy(pUsername, username, maxLenUsername - 1); + strncpy(pPassword, password, maxLenPassword - 1); + return; + } - if (krb5_set && getenv("KRB5CCNAME")) { - krb5_set = 0; - return; - } + if (krb5_set && getenv("KRB5CCNAME")) { + krb5_set = 0; + return; + } - fprintf(stdout, "Workgroup: [%s] ", pWorkgroup); - ret = fgets(temp, sizeof(temp), stdin); - if (ret == NULL) { - return; - } - - if (temp[strlen(temp) - 1] == '\n') /* A new line? */ - { - temp[strlen(temp) - 1] = '\0'; - } - - if (temp[0] != '\0') - { - strncpy(pWorkgroup, temp, maxLenWorkgroup - 1); - } - - fprintf(stdout, "Username: [%s] ", pUsername); - ret = fgets(temp, sizeof(temp), stdin); - if (ret == NULL) { - return; - } - - if (temp[strlen(temp) - 1] == '\n') /* A new line? */ - { - temp[strlen(temp) - 1] = '\0'; - } - - if (temp[0] != '\0') - { - strncpy(pUsername, temp, maxLenUsername - 1); - } - - fprintf(stdout, "Password: "); - ret = fgets(temp, sizeof(temp), stdin); - if (ret == NULL) { - return; - } - - if (temp[strlen(temp) - 1] == '\n') /* A new line? */ - { - temp[strlen(temp) - 1] = '\0'; - } - - if (temp[0] != '\0') - { - strncpy(pPassword, temp, maxLenPassword - 1); - } + fprintf(stdout, "Workgroup: [%s] ", pWorkgroup); + ret = fgets(temp, sizeof(temp), stdin); + if (ret == NULL) { + return; + } - strncpy(workgroup, pWorkgroup, sizeof(workgroup) - 1); - strncpy(username, pUsername, sizeof(username) - 1); - strncpy(password, pPassword, sizeof(password) - 1); + if (temp[strlen(temp) - 1] == '\n') /* A new line? */ + { + temp[strlen(temp) - 1] = '\0'; + } - krb5_set = 1; + if (temp[0] != '\0') + { + strncpy(pWorkgroup, temp, maxLenWorkgroup - 1); + } + + fprintf(stdout, "Username: [%s] ", pUsername); + ret = fgets(temp, sizeof(temp), stdin); + if (ret == NULL) { + return; + } + + if (temp[strlen(temp) - 1] == '\n') /* A new line? */ + { + temp[strlen(temp) - 1] = '\0'; + } + + if (temp[0] != '\0') + { + strncpy(pUsername, temp, maxLenUsername - 1); + } + + fprintf(stdout, "Password: "); + ret = fgets(temp, sizeof(temp), stdin); + if (ret == NULL) { + return; + } + + if (temp[strlen(temp) - 1] == '\n') /* A new line? */ + { + temp[strlen(temp) - 1] = '\0'; + } + + if (temp[0] != '\0') + { + strncpy(pPassword, temp, maxLenPassword - 1); + } + + strncpy(workgroup, pWorkgroup, sizeof(workgroup) - 1); + strncpy(username, pUsername, sizeof(username) - 1); + strncpy(password, pPassword, sizeof(password) - 1); + + krb5_set = 1; } diff --git a/examples/libsmbclient/testacl.c b/examples/libsmbclient/testacl.c index 0f6e0acb0c3..e0e4eeb24d0 100644 --- a/examples/libsmbclient/testacl.c +++ b/examples/libsmbclient/testacl.c @@ -36,105 +36,105 @@ int main(int argc, const char *argv[]) poptContext pc; struct stat st; struct poptOption long_options[] = - { - POPT_AUTOHELP - { - .longName = "numeric", - .shortName = 'n', - .argInfo = POPT_ARG_NONE, - .arg = &numeric, - .val = 1, - .descrip = "Don't resolve sids or masks to names" - }, - { - .longName = "debug", - .shortName = 'd', - .argInfo = POPT_ARG_INT, - .arg = &debug, - .val = 0, - .descrip = "Set debug level (0-100)" - }, - { - .longName = "full_time_names", - .shortName = 'f', - .argInfo = POPT_ARG_NONE, - .arg = &full_time_names, - .val = 1, - .descrip = "Use new style xattr names, which include CREATE_TIME" - }, - { - .longName = "delete", - .shortName = 'D', - .argInfo = POPT_ARG_STRING, - .arg = NULL, - .val = 'D', - .descrip = "Delete an acl", - .argDescrip = "ACL" - }, - { - .longName = "modify", - .shortName = 'M', - .argInfo = POPT_ARG_STRING, - .arg = NULL, - .val = 'M', - .descrip = "Modify an acl", - .argDescrip = "ACL" - }, - { - .longName = "add", - .shortName = 'a', - .argInfo = POPT_ARG_STRING, - .arg = NULL, - .val = 'a', - .descrip = "Add an acl", - .argDescrip = "ACL" - }, - { - .longName = "set", - .shortName = 'S', - .argInfo = POPT_ARG_STRING, - .arg = NULL, - .val = 'S', - .descrip = "Set acls", - .argDescrip = "ACLS" - }, - { - .longName = "chown", - .shortName = 'C', - .argInfo = POPT_ARG_STRING, - .arg = NULL, - .val = 'C', - .descrip = "Change ownership of a file", - .argDescrip = "USERNAME" - }, - { - .longName = "chgrp", - .shortName = 'G', - .argInfo = POPT_ARG_STRING, - .arg = NULL, - .val = 'G', - .descrip = "Change group ownership of a file", - .argDescrip = "GROUPNAME" - }, - { - .longName = "get", - .shortName = 'g', - .argInfo = POPT_ARG_STRING, - .arg = NULL, - .val = 'g', - .descrip = "Get a specific acl attribute", - .argDescrip = "ACL" - }, { - .longName = "stat_and_retry", - .shortName = 'R', - .argInfo = POPT_ARG_NONE, - .arg = &stat_and_retry, - .val = 1, - .descrip = "After 'get' do 'stat' and another 'get'" - }, - POPT_TABLEEND - }; + POPT_AUTOHELP + { + .longName = "numeric", + .shortName = 'n', + .argInfo = POPT_ARG_NONE, + .arg = &numeric, + .val = 1, + .descrip = "Don't resolve sids or masks to names" + }, + { + .longName = "debug", + .shortName = 'd', + .argInfo = POPT_ARG_INT, + .arg = &debug, + .val = 0, + .descrip = "Set debug level (0-100)" + }, + { + .longName = "full_time_names", + .shortName = 'f', + .argInfo = POPT_ARG_NONE, + .arg = &full_time_names, + .val = 1, + .descrip = "Use new style xattr names, which include CREATE_TIME" + }, + { + .longName = "delete", + .shortName = 'D', + .argInfo = POPT_ARG_STRING, + .arg = NULL, + .val = 'D', + .descrip = "Delete an acl", + .argDescrip = "ACL" + }, + { + .longName = "modify", + .shortName = 'M', + .argInfo = POPT_ARG_STRING, + .arg = NULL, + .val = 'M', + .descrip = "Modify an acl", + .argDescrip = "ACL" + }, + { + .longName = "add", + .shortName = 'a', + .argInfo = POPT_ARG_STRING, + .arg = NULL, + .val = 'a', + .descrip = "Add an acl", + .argDescrip = "ACL" + }, + { + .longName = "set", + .shortName = 'S', + .argInfo = POPT_ARG_STRING, + .arg = NULL, + .val = 'S', + .descrip = "Set acls", + .argDescrip = "ACLS" + }, + { + .longName = "chown", + .shortName = 'C', + .argInfo = POPT_ARG_STRING, + .arg = NULL, + .val = 'C', + .descrip = "Change ownership of a file", + .argDescrip = "USERNAME" + }, + { + .longName = "chgrp", + .shortName = 'G', + .argInfo = POPT_ARG_STRING, + .arg = NULL, + .val = 'G', + .descrip = "Change group ownership of a file", + .argDescrip = "GROUPNAME" + }, + { + .longName = "get", + .shortName = 'g', + .argInfo = POPT_ARG_STRING, + .arg = NULL, + .val = 'g', + .descrip = "Get a specific acl attribute", + .argDescrip = "ACL" + }, + { + .longName = "stat_and_retry", + .shortName = 'R', + .argInfo = POPT_ARG_NONE, + .arg = &stat_and_retry, + .val = 1, + .descrip = "After 'get' do 'stat' and another 'get'" + }, + POPT_TABLEEND + }; setbuf(stdout, NULL); @@ -210,7 +210,7 @@ int main(int argc, const char *argv[]) if (ret < 0) { printf("Could not get attribute list for [%s] %d: %s\n", - path, errno, strerror(errno)); + path, errno, strerror(errno)); return 1; } @@ -247,7 +247,7 @@ int main(int argc, const char *argv[]) if (ret < 0) { printf("Could not get attributes for [%s] %d: %s\n", - path, errno, strerror(errno)); + path, errno, strerror(errno)); return 1; } @@ -278,16 +278,16 @@ int main(int argc, const char *argv[]) case SMB_ACL_CHOWN: snprintf(value, sizeof(value), - "system.nt_sec_desc.owner%s:%s", - numeric ? "" : "+", the_acl); + "system.nt_sec_desc.owner%s:%s", + numeric ? "" : "+", the_acl); the_acl = value; debugstr = "chown owner"; goto do_set; case SMB_ACL_CHGRP: snprintf(value, sizeof(value), - "system.nt_sec_desc.group%s:%s", - numeric ? "" : "+", the_acl); + "system.nt_sec_desc.group%s:%s", + numeric ? "" : "+", the_acl); the_acl = value; debugstr = "change group"; goto do_set; @@ -296,7 +296,7 @@ int main(int argc, const char *argv[]) flags = 0; debugstr = "set attributes"; -do_set: + do_set: if ((p = strchr(the_acl, ':')) == NULL) { printf("Missing value. ACL must be name:value pair\n"); @@ -309,7 +309,7 @@ do_set: if (ret < 0) { printf("Could not %s for [%s] %d: %s\n", - debugstr, path, errno, strerror(errno)); + debugstr, path, errno, strerror(errno)); return 1; } break; @@ -319,7 +319,7 @@ do_set: if (ret < 0) { printf("Could not remove attribute %s for [%s] %d:%s\n", - the_acl, path, errno, strerror(errno)); + the_acl, path, errno, strerror(errno)); return 1; } break; diff --git a/examples/libsmbclient/testacl2.c b/examples/libsmbclient/testacl2.c index a74a72d794c..ee48b7b3059 100644 --- a/examples/libsmbclient/testacl2.c +++ b/examples/libsmbclient/testacl2.c @@ -19,55 +19,55 @@ enum acl_mode int main(int argc, const char *argv[]) { - int flags; - int debug = 0; - static char *the_acl = NULL; - int ret; - const char *debugstr; - char value[1024]; - SMBCCTX *context; + int flags; + int debug = 0; + static char *the_acl = NULL; + int ret; + const char *debugstr; + char value[1024]; + SMBCCTX *context; - if (smbc_init(get_auth_data_fn, debug) != 0) - { - printf("Could not initialize smbc_ library\n"); - return 1; - } + if (smbc_init(get_auth_data_fn, debug) != 0) + { + printf("Could not initialize smbc_ library\n"); + return 1; + } - context = smbc_set_context(NULL); - smbc_setOptionFullTimeNames(context, 1); - - the_acl = strdup("system.nt_sec_desc.*"); - ret = smbc_getxattr(argv[1], the_acl, value, sizeof(value)); - if (ret < 0) - { - printf("Could not get attributes for [%s] %d: %s\n", - argv[1], errno, strerror(errno)); - return 1; - } - - printf("Attributes for [%s] are:\n%s\n", argv[1], value); + context = smbc_set_context(NULL); + smbc_setOptionFullTimeNames(context, 1); - flags = 0; - debugstr = "set attributes (1st time)"; - - ret = smbc_setxattr(argv[1], the_acl, value, strlen(value), flags); - if (ret < 0) - { - printf("Could not %s for [%s] %d: %s\n", - debugstr, argv[1], errno, strerror(errno)); - return 1; - } - - flags = 0; - debugstr = "set attributes (2nd time)"; - - ret = smbc_setxattr(argv[1], the_acl, value, strlen(value), flags); - if (ret < 0) - { - printf("Could not %s for [%s] %d: %s\n", - debugstr, argv[1], errno, strerror(errno)); - return 1; - } - - return 0; + the_acl = strdup("system.nt_sec_desc.*"); + ret = smbc_getxattr(argv[1], the_acl, value, sizeof(value)); + if (ret < 0) + { + printf("Could not get attributes for [%s] %d: %s\n", + argv[1], errno, strerror(errno)); + return 1; + } + + printf("Attributes for [%s] are:\n%s\n", argv[1], value); + + flags = 0; + debugstr = "set attributes (1st time)"; + + ret = smbc_setxattr(argv[1], the_acl, value, strlen(value), flags); + if (ret < 0) + { + printf("Could not %s for [%s] %d: %s\n", + debugstr, argv[1], errno, strerror(errno)); + return 1; + } + + flags = 0; + debugstr = "set attributes (2nd time)"; + + ret = smbc_setxattr(argv[1], the_acl, value, strlen(value), flags); + if (ret < 0) + { + printf("Could not %s for [%s] %d: %s\n", + debugstr, argv[1], errno, strerror(errno)); + return 1; + } + + return 0; } diff --git a/examples/libsmbclient/testacl3.c b/examples/libsmbclient/testacl3.c index 59d9994ef39..e5ec2c88b95 100644 --- a/examples/libsmbclient/testacl3.c +++ b/examples/libsmbclient/testacl3.c @@ -1,59 +1,59 @@ #include <sys/types.h> -#include <stdio.h> +#include <stdio.h> #include <unistd.h> -#include <string.h> -#include <time.h> +#include <string.h> +#include <time.h> #include <errno.h> -#include <libsmbclient.h> +#include <libsmbclient.h> #include "get_auth_data_fn.h" -int main(int argc, char * argv[]) -{ - int ret; - int debug = 0; - char value[2048]; - char path[2048]; - char * the_acl; - char * p; - SMBCCTX * context; - - smbc_init(get_auth_data_fn, debug); - - context = smbc_set_context(NULL); - smbc_setOptionFullTimeNames(context, 1); - - for (;;) - { - fprintf(stdout, "Path: "); - *path = '\0'; - p = fgets(path, sizeof(path) - 1, stdin); - if (p == NULL) { - printf("Error reading from stdin\n"); - return 1; +int main(int argc, char * argv[]) +{ + int ret; + int debug = 0; + char value[2048]; + char path[2048]; + char * the_acl; + char * p; + SMBCCTX * context; + + smbc_init(get_auth_data_fn, debug); + + context = smbc_set_context(NULL); + smbc_setOptionFullTimeNames(context, 1); + + for (;;) + { + fprintf(stdout, "Path: "); + *path = '\0'; + p = fgets(path, sizeof(path) - 1, stdin); + if (p == NULL) { + printf("Error reading from stdin\n"); + return 1; + } + if (strlen(path) == 0) + { + return 0; + } + + p = path + strlen(path) - 1; + if (*p == '\n') + { + *p = '\0'; + } + + the_acl = strdup("system.nt_sec_desc.*+"); + ret = smbc_getxattr(path, the_acl, value, sizeof(value)); + if (ret < 0) + { + printf("Could not get attributes for [%s] %d: %s\n", + path, errno, strerror(errno)); + return 1; + } + + printf("Attributes for [%s] are:\n%s\n", path, value); } - if (strlen(path) == 0) - { - return 0; - } - - p = path + strlen(path) - 1; - if (*p == '\n') - { - *p = '\0'; - } - - the_acl = strdup("system.nt_sec_desc.*+"); - ret = smbc_getxattr(path, the_acl, value, sizeof(value)); - if (ret < 0) - { - printf("Could not get attributes for [%s] %d: %s\n", - path, errno, strerror(errno)); - return 1; - } - - printf("Attributes for [%s] are:\n%s\n", path, value); - } - - return 0; + + return 0; } diff --git a/examples/libsmbclient/testbrowse.c b/examples/libsmbclient/testbrowse.c index 1609e2f4f91..2f2f54e61cd 100644 --- a/examples/libsmbclient/testbrowse.c +++ b/examples/libsmbclient/testbrowse.c @@ -27,135 +27,135 @@ get_auth_data_with_context_fn(SMBCCTX * context, int main(int argc, const char *argv[]) { - int debug = 0; - int debug_stderr = 0; - int no_auth = 0; - int context_auth = 0; - int scan = 0; - int iterations = -1; - int opt; - char * p; - char buf[1024]; - poptContext pc; - SMBCCTX * context; - struct poptOption long_options[] = - { - POPT_AUTOHELP - { - "debug", 'd', POPT_ARG_INT, &debug, - 0, "Set debug level", "integer" - }, - { - "stderr", 'e', POPT_ARG_NONE, &debug_stderr, - 0, "Debug log to stderr instead of stdout", "integer" - }, - { - "scan", 's', POPT_ARG_NONE, &scan, - 0, "Scan for servers and shares", "integer" - }, - { - "iterations", 'i', POPT_ARG_INT, &iterations, - 0, "Iterations", "integer" - }, - { - "noauth", 'A', POPT_ARG_NONE, &no_auth, - 0, "Do not request authentication data", "integer" - }, - { - "contextauth", 'C', POPT_ARG_NONE, &context_auth, - 0, "Use new authentication function with context", "integer" - }, - {0} - }; - - setbuf(stdout, NULL); - - pc = poptGetContext("opendir", argc, argv, long_options, 0); - - poptSetOtherOptionHelp(pc, ""); - - while ((opt = poptGetNextOpt(pc)) != -1) { - printf("Got option %d = %c\n", opt, opt); - switch (opt) { - } - } - - /* Allocate a new context */ - context = smbc_new_context(); - if (!context) { - printf("Could not allocate new smbc context\n"); - return 1; - } - - /* If we're scanning, do no requests for authentication data */ - if (scan) { - no_auth = 1; - } - - /* Set mandatory options (is that a contradiction in terms?) */ - smbc_setDebug(context, debug); - if (context_auth) { - smbc_setFunctionAuthDataWithContext(context, - get_auth_data_with_context_fn); - smbc_setOptionUserData(context, strdup("hello world")); - } else { - smbc_setFunctionAuthData(context, get_auth_data_fn); - } - - smbc_setOptionUseKerberos(context, 1); - smbc_setOptionFallbackAfterKerberos(context, 1); - - /* If we've been asked to log to stderr instead of stdout, ... */ - if (debug_stderr) { - /* ... then set the option to do so */ - smbc_setOptionDebugToStderr(context, 1); - } - - /* Initialize the context using the previously specified options */ - if (!smbc_init_context(context)) { - smbc_free_context(context, 0); - printf("Could not initialize smbc context\n"); - return 1; - } - - /* Tell the compatibility layer to use this context */ - smbc_set_context(context); - - if (scan) - { - for (; iterations != 0;) { - if (iterations > 0) { - iterations--; - } - - snprintf(buf, sizeof(buf), "smb://"); - browse(buf, scan, 0); - } - } - else - { - for (; iterations != 0;) { - if (iterations > 0) { - iterations--; - } - - fputs("url: ", stdout); - p = fgets(buf, sizeof(buf), stdin); - if (! p) - { - break; - } - - if ((p = strchr(buf, '\n')) != NULL) - { - *p = '\0'; - } - - browse(buf, scan, 0); - } - } - - exit(0); + int debug = 0; + int debug_stderr = 0; + int no_auth = 0; + int context_auth = 0; + int scan = 0; + int iterations = -1; + int opt; + char * p; + char buf[1024]; + poptContext pc; + SMBCCTX * context; + struct poptOption long_options[] = + { + POPT_AUTOHELP + { + "debug", 'd', POPT_ARG_INT, &debug, + 0, "Set debug level", "integer" + }, + { + "stderr", 'e', POPT_ARG_NONE, &debug_stderr, + 0, "Debug log to stderr instead of stdout", "integer" + }, + { + "scan", 's', POPT_ARG_NONE, &scan, + 0, "Scan for servers and shares", "integer" + }, + { + "iterations", 'i', POPT_ARG_INT, &iterations, + 0, "Iterations", "integer" + }, + { + "noauth", 'A', POPT_ARG_NONE, &no_auth, + 0, "Do not request authentication data", "integer" + }, + { + "contextauth", 'C', POPT_ARG_NONE, &context_auth, + 0, "Use new authentication function with context", "integer" + }, + {0} + }; + + setbuf(stdout, NULL); + + pc = poptGetContext("opendir", argc, argv, long_options, 0); + + poptSetOtherOptionHelp(pc, ""); + + while ((opt = poptGetNextOpt(pc)) != -1) { + printf("Got option %d = %c\n", opt, opt); + switch (opt) { + } + } + + /* Allocate a new context */ + context = smbc_new_context(); + if (!context) { + printf("Could not allocate new smbc context\n"); + return 1; + } + + /* If we're scanning, do no requests for authentication data */ + if (scan) { + no_auth = 1; + } + + /* Set mandatory options (is that a contradiction in terms?) */ + smbc_setDebug(context, debug); + if (context_auth) { + smbc_setFunctionAuthDataWithContext(context, + get_auth_data_with_context_fn); + smbc_setOptionUserData(context, strdup("hello world")); + } else { + smbc_setFunctionAuthData(context, get_auth_data_fn); + } + + smbc_setOptionUseKerberos(context, 1); + smbc_setOptionFallbackAfterKerberos(context, 1); + + /* If we've been asked to log to stderr instead of stdout, ... */ + if (debug_stderr) { + /* ... then set the option to do so */ + smbc_setOptionDebugToStderr(context, 1); + } + + /* Initialize the context using the previously specified options */ + if (!smbc_init_context(context)) { + smbc_free_context(context, 0); + printf("Could not initialize smbc context\n"); + return 1; + } + + /* Tell the compatibility layer to use this context */ + smbc_set_context(context); + + if (scan) + { + for (; iterations != 0;) { + if (iterations > 0) { + iterations--; + } + + snprintf(buf, sizeof(buf), "smb://"); + browse(buf, scan, 0); + } + } + else + { + for (; iterations != 0;) { + if (iterations > 0) { + iterations--; + } + + fputs("url: ", stdout); + p = fgets(buf, sizeof(buf), stdin); + if (! p) + { + break; + } + + if ((p = strchr(buf, '\n')) != NULL) + { + *p = '\0'; + } + + browse(buf, scan, 0); + } + } + + exit(0); } static void @@ -169,114 +169,113 @@ get_auth_data_with_context_fn(SMBCCTX * context, char * pPassword, int maxLenPassword) { - printf("Authenticating with context %p", context); - if (context != NULL) { - char *user_data = smbc_getOptionUserData(context); - printf(" with user data %s", user_data); - } - printf("\n"); - - get_auth_data_fn(pServer, pShare, pWorkgroup, maxLenWorkgroup, - pUsername, maxLenUsername, pPassword, maxLenPassword); + printf("Authenticating with context %p", context); + if (context != NULL) { + char *user_data = smbc_getOptionUserData(context); + printf(" with user data %s", user_data); + } + printf("\n"); + + get_auth_data_fn(pServer, pShare, pWorkgroup, maxLenWorkgroup, + pUsername, maxLenUsername, pPassword, maxLenPassword); } static void browse(char * path, int scan, int indent) { - char * p; - char buf[1024]; - int dir; - struct stat st; - struct smbc_dirent * dirent; - - if (! scan) - { - printf("Opening (%s)...\n", path); - } - - if ((dir = smbc_opendir(path)) < 0) - { - printf("Could not open directory [%s] (%d:%s)\n", - path, errno, strerror(errno)); - return; - } - - while ((dirent = smbc_readdir(dir)) != NULL) - { - printf("%*.*s%-30s", indent, indent, "", dirent->name); - - switch(dirent->smbc_type) - { - case SMBC_WORKGROUP: - printf("WORKGROUP"); - break; - - case SMBC_SERVER: - printf("SERVER"); - break; - - case SMBC_FILE_SHARE: - printf("FILE_SHARE"); - break; - - case SMBC_PRINTER_SHARE: - printf("PRINTER_SHARE"); - break; - - case SMBC_COMMS_SHARE: - printf("COMMS_SHARE"); - break; - - case SMBC_IPC_SHARE: - printf("IPC_SHARE"); - break; - - case SMBC_DIR: - printf("DIR"); - break; - - case SMBC_FILE: - printf("FILE"); - - p = path + strlen(path); - strcat(p, "/"); - strcat(p+1, dirent->name); - if (smbc_stat(path, &st) < 0) - { - printf(" unknown size (reason %d: %s)", - errno, strerror(errno)); - } - else - { - printf(" size %lu", (unsigned long) st.st_size); - } - *p = '\0'; - - break; - - case SMBC_LINK: - printf("LINK"); - break; - } - - printf("\n"); - - if (scan && - (dirent->smbc_type == SMBC_WORKGROUP || - dirent->smbc_type == SMBC_SERVER)) - { - /* - * don't append server name to workgroup; what we want is: - * - * smb://workgroup_name - * or - * smb://server_name - * - */ - snprintf(buf, sizeof(buf), "smb://%s", dirent->name); - browse(buf, scan, indent + 2); - } - } - - smbc_closedir(dir); + char * p; + char buf[1024]; + int dir; + struct stat st; + struct smbc_dirent * dirent; + + if (! scan) + { + printf("Opening (%s)...\n", path); + } + + if ((dir = smbc_opendir(path)) < 0) + { + printf("Could not open directory [%s] (%d:%s)\n", + path, errno, strerror(errno)); + return; + } + + while ((dirent = smbc_readdir(dir)) != NULL) + { + printf("%*.*s%-30s", indent, indent, "", dirent->name); + + switch(dirent->smbc_type) + { + case SMBC_WORKGROUP: + printf("WORKGROUP"); + break; + + case SMBC_SERVER: + printf("SERVER"); + break; + + case SMBC_FILE_SHARE: + printf("FILE_SHARE"); + break; + + case SMBC_PRINTER_SHARE: + printf("PRINTER_SHARE"); + break; + + case SMBC_COMMS_SHARE: + printf("COMMS_SHARE"); + break; + + case SMBC_IPC_SHARE: + printf("IPC_SHARE"); + break; + + case SMBC_DIR: + printf("DIR"); + break; + + case SMBC_FILE: + printf("FILE"); + + p = path + strlen(path); + strcat(p, "/"); + strcat(p+1, dirent->name); + if (smbc_stat(path, &st) < 0) + { + printf(" unknown size (reason %d: %s)", + errno, strerror(errno)); + } + else + { + printf(" size %lu", (unsigned long) st.st_size); + } + *p = '\0'; + + break; + + case SMBC_LINK: + printf("LINK"); + break; + } + + printf("\n"); + + if (scan && + (dirent->smbc_type == SMBC_WORKGROUP || + dirent->smbc_type == SMBC_SERVER)) + { + /* + * don't append server name to workgroup; what we want is: + * + * smb://workgroup_name + * or + * smb://server_name + * + */ + snprintf(buf, sizeof(buf), "smb://%s", dirent->name); + browse(buf, scan, indent + 2); + } + } + + smbc_closedir(dir); } - diff --git a/examples/libsmbclient/testbrowse2.c b/examples/libsmbclient/testbrowse2.c index ac2063d613d..d858ba96312 100644 --- a/examples/libsmbclient/testbrowse2.c +++ b/examples/libsmbclient/testbrowse2.c @@ -28,143 +28,142 @@ static void smbc_auth_fn( char *wrkgrp, int wrkgrplen, char *user, int userlen, char *passwd, int passwdlen){ - - (void) server; - (void) share; - (void) wrkgrp; - (void) wrkgrplen; - - strncpy(wrkgrp, workgroup, wrkgrplen - 1); wrkgrp[wrkgrplen - 1] = 0; - strncpy(user, username, userlen - 1); user[userlen - 1] = 0; - strncpy(passwd, password, passwdlen - 1); passwd[passwdlen - 1] = 0; + + (void) server; + (void) share; + (void) wrkgrp; + (void) wrkgrplen; + + strncpy(wrkgrp, workgroup, wrkgrplen - 1); wrkgrp[wrkgrplen - 1] = 0; + strncpy(user, username, userlen - 1); user[userlen - 1] = 0; + strncpy(passwd, password, passwdlen - 1); passwd[passwdlen - 1] = 0; } static SMBCCTX* create_smbctx(void){ - SMBCCTX *ctx; + SMBCCTX *ctx; - if ((ctx = smbc_new_context()) == NULL) return NULL; + if ((ctx = smbc_new_context()) == NULL) return NULL; - smbc_setDebug(ctx, debuglevel); - smbc_setFunctionAuthData(ctx, smbc_auth_fn); + smbc_setDebug(ctx, debuglevel); + smbc_setFunctionAuthData(ctx, smbc_auth_fn); - if (smbc_init_context(ctx) == NULL){ - smbc_free_context(ctx, 1); - return NULL; - } + if (smbc_init_context(ctx) == NULL){ + smbc_free_context(ctx, 1); + return NULL; + } - return ctx; + return ctx; } static void delete_smbctx(SMBCCTX* ctx){ - smbc_getFunctionPurgeCachedServers(ctx)(ctx); - smbc_free_context(ctx, 1); + smbc_getFunctionPurgeCachedServers(ctx)(ctx); + smbc_free_context(ctx, 1); } static smbitem* get_smbitem_list(SMBCCTX *ctx, char *smb_path){ - SMBCFILE *fd; - struct smbc_dirent *dirent; - smbitem *list = NULL, *item; - - if ((fd = smbc_getFunctionOpendir(ctx)(ctx, smb_path)) == NULL) - return NULL; - while((dirent = smbc_getFunctionReaddir(ctx)(ctx, fd)) != NULL){ - size_t slen; - if (strcmp(dirent->name, "") == 0) continue; - if (strcmp(dirent->name, ".") == 0) continue; - if (strcmp(dirent->name, "..") == 0) continue; - - slen = strlen(dirent->name)+1; - if ((item = malloc(sizeof(smbitem) + slen)) == NULL) - continue; - - item->next = list; - item->type = dirent->smbc_type; - memcpy(item->name, dirent->name, slen); - list = item; - } - smbc_getFunctionClose(ctx)(ctx, fd); - return /* smbitem_list_sort */ (list); - + SMBCFILE *fd; + struct smbc_dirent *dirent; + smbitem *list = NULL, *item; + + if ((fd = smbc_getFunctionOpendir(ctx)(ctx, smb_path)) == NULL) + return NULL; + while((dirent = smbc_getFunctionReaddir(ctx)(ctx, fd)) != NULL){ + size_t slen; + if (strcmp(dirent->name, "") == 0) continue; + if (strcmp(dirent->name, ".") == 0) continue; + if (strcmp(dirent->name, "..") == 0) continue; + + slen = strlen(dirent->name)+1; + if ((item = malloc(sizeof(smbitem) + slen)) == NULL) + continue; + + item->next = list; + item->type = dirent->smbc_type; + memcpy(item->name, dirent->name, slen); + list = item; + } + smbc_getFunctionClose(ctx)(ctx, fd); + return /* smbitem_list_sort */ (list); } static void print_smb_path(const char *group, const char *path){ - if ((strlen(group) == 0) && (strlen(path) == 0)) printf("/\n"); - else if (strlen(path) == 0) printf("/%s\n", group); - else{ - if (strlen(group) == 0) group = "(unknown_group)"; - printf("/%s/%s\n", group, path); - } + if ((strlen(group) == 0) && (strlen(path) == 0)) printf("/\n"); + else if (strlen(path) == 0) printf("/%s\n", group); + else{ + if (strlen(group) == 0) group = "(unknown_group)"; + printf("/%s/%s\n", group, path); + } } static void recurse(SMBCCTX *ctx, const char *smb_group, char *smb_path, int maxlen){ - int len; - smbitem *list, *item; - SMBCCTX *ctx1; - - len = strlen(smb_path); - - list = get_smbitem_list(ctx, smb_path); - while(list != NULL){ - switch(list->type){ - case SMBC_WORKGROUP: - case SMBC_SERVER: - if (list->type == SMBC_WORKGROUP){ - print_smb_path(list->name, ""); - smb_group = list->name; + int len; + smbitem *list, *item; + SMBCCTX *ctx1; + + len = strlen(smb_path); + + list = get_smbitem_list(ctx, smb_path); + while(list != NULL){ + switch(list->type){ + case SMBC_WORKGROUP: + case SMBC_SERVER: + if (list->type == SMBC_WORKGROUP){ + print_smb_path(list->name, ""); + smb_group = list->name; + } + else print_smb_path(smb_group, list->name); + + if (maxlen < 7 + strlen(list->name)) break; + strncpy(smb_path + 6, list->name, maxlen - 6); + smb_path[maxlen-1] = '\0'; + if ((ctx1 = create_smbctx()) != NULL){ + recurse(ctx1, smb_group, smb_path, maxlen); + delete_smbctx(ctx1); + }else{ + recurse(ctx, smb_group, smb_path, maxlen); + smbc_getFunctionPurgeCachedServers(ctx)(ctx); + } + break; + case SMBC_FILE_SHARE: + case SMBC_DIR: + case SMBC_FILE: + if (maxlen < len + strlen(list->name) + 2) break; + + smb_path[len] = '/'; + strncpy(smb_path + len + 1, list->name, maxlen - len - 1); + smb_path[maxlen-1] = '\0'; + print_smb_path(smb_group, smb_path + 6); + if (list->type != SMBC_FILE){ + recurse(ctx, smb_group, smb_path, maxlen); + if (list->type == SMBC_FILE_SHARE) + smbc_getFunctionPurgeCachedServers(ctx)(ctx); + } + break; } - else print_smb_path(smb_group, list->name); - - if (maxlen < 7 + strlen(list->name)) break; - strncpy(smb_path + 6, list->name, maxlen - 6); - smb_path[maxlen-1] = '\0'; - if ((ctx1 = create_smbctx()) != NULL){ - recurse(ctx1, smb_group, smb_path, maxlen); - delete_smbctx(ctx1); - }else{ - recurse(ctx, smb_group, smb_path, maxlen); - smbc_getFunctionPurgeCachedServers(ctx)(ctx); - } - break; - case SMBC_FILE_SHARE: - case SMBC_DIR: - case SMBC_FILE: - if (maxlen < len + strlen(list->name) + 2) break; - - smb_path[len] = '/'; - strncpy(smb_path + len + 1, list->name, maxlen - len - 1); - smb_path[maxlen-1] = '\0'; - print_smb_path(smb_group, smb_path + 6); - if (list->type != SMBC_FILE){ - recurse(ctx, smb_group, smb_path, maxlen); - if (list->type == SMBC_FILE_SHARE) - smbc_getFunctionPurgeCachedServers(ctx)(ctx); - } - break; + item = list; + list = list->next; + free(item); } - item = list; - list = list->next; - free(item); - } - smb_path[len] = '\0'; + smb_path[len] = '\0'; } int main(int argc, char *argv[]){ - int i; - SMBCCTX *ctx; - char smb_path[32768] = "smb://"; - - if ((ctx = create_smbctx()) == NULL){ - perror("Cant create samba context."); - return 1; - } - - if (argc == 1) recurse(ctx, "", smb_path, sizeof(smb_path)); - else for(i = 1; i < argc; i++){ - strncpy(smb_path + 6, argv[i], sizeof(smb_path) - 7); - smb_path[sizeof(smb_path) - 1] = '\0'; - recurse(ctx, "", smb_path, sizeof(smb_path)); - } - - delete_smbctx(ctx); - return 0; + int i; + SMBCCTX *ctx; + char smb_path[32768] = "smb://"; + + if ((ctx = create_smbctx()) == NULL){ + perror("Cant create samba context."); + return 1; + } + + if (argc == 1) recurse(ctx, "", smb_path, sizeof(smb_path)); + else for(i = 1; i < argc; i++){ + strncpy(smb_path + 6, argv[i], sizeof(smb_path) - 7); + smb_path[sizeof(smb_path) - 1] = '\0'; + recurse(ctx, "", smb_path, sizeof(smb_path)); + } + + delete_smbctx(ctx); + return 0; } diff --git a/examples/libsmbclient/testchmod.c b/examples/libsmbclient/testchmod.c index b285a81a190..2341e8125e6 100644 --- a/examples/libsmbclient/testchmod.c +++ b/examples/libsmbclient/testchmod.c @@ -1,62 +1,62 @@ -#include <stdio.h> +#include <stdio.h> #include <unistd.h> -#include <string.h> -#include <time.h> -#include <libsmbclient.h> +#include <string.h> +#include <time.h> +#include <libsmbclient.h> #include "get_auth_data_fn.h" -int main(int argc, char * argv[]) -{ - int debug = 0; - int mode = 0666; - const char * pSmbPath = NULL; - struct stat st; - - if (argc == 1) - { - pSmbPath = "smb://RANDOM/Public/small"; - } - else if (argc == 2) - { - pSmbPath = argv[1]; - } - else if (argc == 3) - { - pSmbPath = argv[1]; - mode = (int) strtol(argv[2], NULL, 8); - } - else - { - printf("usage: " - "%s [ smb://path/to/file [ octal_mode ] ]\n", - argv[0]); - return 1; - } - - smbc_init(get_auth_data_fn, debug); - - if (smbc_stat(pSmbPath, &st) < 0) - { - perror("smbc_stat"); - return 1; - } - - printf("\nBefore chmod: mode = %04o\n", (unsigned int)st.st_mode); - - if (smbc_chmod(pSmbPath, mode) < 0) - { - perror("smbc_chmod"); - return 1; - } - - if (smbc_stat(pSmbPath, &st) < 0) - { - perror("smbc_stat"); - return 1; - } - - printf("After chmod: mode = %04o\n", (unsigned int)st.st_mode); - - return 0; +int main(int argc, char * argv[]) +{ + int debug = 0; + int mode = 0666; + const char * pSmbPath = NULL; + struct stat st; + + if (argc == 1) + { + pSmbPath = "smb://RANDOM/Public/small"; + } + else if (argc == 2) + { + pSmbPath = argv[1]; + } + else if (argc == 3) + { + pSmbPath = argv[1]; + mode = (int) strtol(argv[2], NULL, 8); + } + else + { + printf("usage: " + "%s [ smb://path/to/file [ octal_mode ] ]\n", + argv[0]); + return 1; + } + + smbc_init(get_auth_data_fn, debug); + + if (smbc_stat(pSmbPath, &st) < 0) + { + perror("smbc_stat"); + return 1; + } + + printf("\nBefore chmod: mode = %04o\n", (unsigned int)st.st_mode); + + if (smbc_chmod(pSmbPath, mode) < 0) + { + perror("smbc_chmod"); + return 1; + } + + if (smbc_stat(pSmbPath, &st) < 0) + { + perror("smbc_stat"); + return 1; + } + + printf("After chmod: mode = %04o\n", (unsigned int)st.st_mode); + + return 0; } diff --git a/examples/libsmbclient/testctx.c b/examples/libsmbclient/testctx.c index 7f27fbd7c9c..e410731739a 100644 --- a/examples/libsmbclient/testctx.c +++ b/examples/libsmbclient/testctx.c @@ -5,29 +5,29 @@ static void create_and_destroy_context (void) { - int i; - SMBCCTX *ctx; - ctx = smbc_new_context (); - /* Both should do the same thing */ - smbc_setOptionDebugToStderr(ctx, 1); - smbc_option_set(ctx, strdup("debug_to_stderr"), 1); - smbc_setDebug(ctx, 1); - i = smbc_getDebug(ctx); - if (i != 1) { - printf("smbc_getDebug() did not return debug level set\n"); - exit(1); - } - if (!smbc_getOptionDebugToStderr(ctx)) { - printf("smbc_setOptionDebugToStderr() did not stick\n"); - exit(1); - } - smbc_init_context (ctx); - smbc_free_context (ctx, 1); + int i; + SMBCCTX *ctx; + ctx = smbc_new_context (); + /* Both should do the same thing */ + smbc_setOptionDebugToStderr(ctx, 1); + smbc_option_set(ctx, strdup("debug_to_stderr"), 1); + smbc_setDebug(ctx, 1); + i = smbc_getDebug(ctx); + if (i != 1) { + printf("smbc_getDebug() did not return debug level set\n"); + exit(1); + } + if (!smbc_getOptionDebugToStderr(ctx)) { + printf("smbc_setOptionDebugToStderr() did not stick\n"); + exit(1); + } + smbc_init_context (ctx); + smbc_free_context (ctx, 1); } int main (int argc, char **argv) { - create_and_destroy_context (); - create_and_destroy_context (); - return 0; + create_and_destroy_context (); + create_and_destroy_context (); + return 0; } diff --git a/examples/libsmbclient/testfstatvfs.c b/examples/libsmbclient/testfstatvfs.c index b2396e3fa1b..9a4063e490c 100644 --- a/examples/libsmbclient/testfstatvfs.c +++ b/examples/libsmbclient/testfstatvfs.c @@ -1,134 +1,134 @@ #include <sys/types.h> #include <sys/statvfs.h> -#include <stdio.h> +#include <stdio.h> #include <unistd.h> -#include <string.h> -#include <time.h> +#include <string.h> +#include <time.h> #include <errno.h> -#include <libsmbclient.h> +#include <libsmbclient.h> #include "get_auth_data_fn.h" -int main(int argc, char * argv[]) -{ - int fd; - int ret; - int debug = 0; - char * p; - char path[2048]; - struct stat statbuf; - struct statvfs statvfsbuf; - - smbc_init(get_auth_data_fn, debug); - - for (;;) - { - fprintf(stdout, "Path: "); - *path = '\0'; - p = fgets(path, sizeof(path) - 1, stdin); - if (p == NULL) { - fprintf(stderr, "failed to read from stdin\n"); - return 1; - } - if (strlen(path) == 0) - { - return 0; - } - - p = path + strlen(path) - 1; - if (*p == '\n') - { - *p = '\0'; - } - - /* Determine if it's a file or a folder */ - if (smbc_stat(path, &statbuf) < 0) - { - perror("smbc_stat"); - continue; - } - - if (S_ISREG(statbuf.st_mode)) - { - if ((fd = smbc_open(path, O_RDONLY, 0)) < 0) - { - perror("smbc_open"); - continue; - } - } - else - { - if ((fd = smbc_opendir(path)) < 0) - { - perror("smbc_opendir"); - continue; - } - } - - ret = smbc_fstatvfs(fd, &statvfsbuf); - - smbc_close(fd); - - if (ret < 0) - { - perror("fstatvfs"); - } - else - { - printf("\n"); - printf("Block Size: %lu\n", statvfsbuf.f_bsize); - printf("Fragment Size: %lu\n", statvfsbuf.f_frsize); - printf("Blocks: %llu\n", - (unsigned long long) statvfsbuf.f_blocks); - printf("Free Blocks: %llu\n", - (unsigned long long) statvfsbuf.f_bfree); - printf("Available Blocks: %llu\n", - (unsigned long long) statvfsbuf.f_bavail); - printf("Files : %llu\n", - (unsigned long long) statvfsbuf.f_files); - printf("Free Files: %llu\n", - (unsigned long long) statvfsbuf.f_ffree); - printf("Available Files: %llu\n", - (unsigned long long) statvfsbuf.f_favail); +int main(int argc, char * argv[]) +{ + int fd; + int ret; + int debug = 0; + char * p; + char path[2048]; + struct stat statbuf; + struct statvfs statvfsbuf; + + smbc_init(get_auth_data_fn, debug); + + for (;;) + { + fprintf(stdout, "Path: "); + *path = '\0'; + p = fgets(path, sizeof(path) - 1, stdin); + if (p == NULL) { + fprintf(stderr, "failed to read from stdin\n"); + return 1; + } + if (strlen(path) == 0) + { + return 0; + } + + p = path + strlen(path) - 1; + if (*p == '\n') + { + *p = '\0'; + } + + /* Determine if it's a file or a folder */ + if (smbc_stat(path, &statbuf) < 0) + { + perror("smbc_stat"); + continue; + } + + if (S_ISREG(statbuf.st_mode)) + { + if ((fd = smbc_open(path, O_RDONLY, 0)) < 0) + { + perror("smbc_open"); + continue; + } + } + else + { + if ((fd = smbc_opendir(path)) < 0) + { + perror("smbc_opendir"); + continue; + } + } + + ret = smbc_fstatvfs(fd, &statvfsbuf); + + smbc_close(fd); + + if (ret < 0) + { + perror("fstatvfs"); + } + else + { + printf("\n"); + printf("Block Size: %lu\n", statvfsbuf.f_bsize); + printf("Fragment Size: %lu\n", statvfsbuf.f_frsize); + printf("Blocks: %llu\n", + (unsigned long long) statvfsbuf.f_blocks); + printf("Free Blocks: %llu\n", + (unsigned long long) statvfsbuf.f_bfree); + printf("Available Blocks: %llu\n", + (unsigned long long) statvfsbuf.f_bavail); + printf("Files : %llu\n", + (unsigned long long) statvfsbuf.f_files); + printf("Free Files: %llu\n", + (unsigned long long) statvfsbuf.f_ffree); + printf("Available Files: %llu\n", + (unsigned long long) statvfsbuf.f_favail); #ifdef HAVE_FSID_INT - printf("File System ID: %lu\n", - (unsigned long) statvfsbuf.f_fsid); + printf("File System ID: %lu\n", + (unsigned long) statvfsbuf.f_fsid); #endif - printf("\n"); - - printf("Flags: 0x%lx\n", statvfsbuf.f_flag); - printf("Extended Features: "); - - if (statvfsbuf.f_flag & SMBC_VFS_FEATURE_NO_UNIXCIFS) - { - printf("NO_UNIXCIFS "); - } - else - { - printf("unixcifs "); - } - - if (statvfsbuf.f_flag & SMBC_VFS_FEATURE_CASE_INSENSITIVE) - { - printf("CASE_INSENSITIVE "); - } - else - { - printf("case_sensitive "); - } - - if (statvfsbuf.f_flag & SMBC_VFS_FEATURE_DFS) - { - printf("DFS "); - } - else - { - printf("no_dfs "); - } - - printf("\n"); - } - } - - return 0; + printf("\n"); + + printf("Flags: 0x%lx\n", statvfsbuf.f_flag); + printf("Extended Features: "); + + if (statvfsbuf.f_flag & SMBC_VFS_FEATURE_NO_UNIXCIFS) + { + printf("NO_UNIXCIFS "); + } + else + { + printf("unixcifs "); + } + + if (statvfsbuf.f_flag & SMBC_VFS_FEATURE_CASE_INSENSITIVE) + { + printf("CASE_INSENSITIVE "); + } + else + { + printf("case_sensitive "); + } + + if (statvfsbuf.f_flag & SMBC_VFS_FEATURE_DFS) + { + printf("DFS "); + } + else + { + printf("no_dfs "); + } + + printf("\n"); + } + } + + return 0; } diff --git a/examples/libsmbclient/testread.c b/examples/libsmbclient/testread.c index e6d9bf869ab..d9722adae2f 100644 --- a/examples/libsmbclient/testread.c +++ b/examples/libsmbclient/testread.c @@ -1,66 +1,66 @@ #include <sys/types.h> -#include <stdio.h> +#include <stdio.h> #include <unistd.h> -#include <string.h> -#include <time.h> +#include <string.h> +#include <time.h> #include <errno.h> -#include <libsmbclient.h> +#include <libsmbclient.h> #include "get_auth_data_fn.h" -int main(int argc, char * argv[]) -{ - int fd; - int ret; - int debug = 0; - int savedErrno; - char buffer[2048]; - char path[2048]; - char * p; - - smbc_init(get_auth_data_fn, debug); - - for (;;) - { - fprintf(stdout, "Path: "); - *path = '\0'; - p = fgets(path, sizeof(path) - 1, stdin); - if (p == NULL) { - fprintf(stderr, "failed to read from stdin\n"); - return 1; - } - if (strlen(path) == 0) - { - return 0; - } +int main(int argc, char * argv[]) +{ + int fd; + int ret; + int debug = 0; + int savedErrno; + char buffer[2048]; + char path[2048]; + char * p; + + smbc_init(get_auth_data_fn, debug); + + for (;;) + { + fprintf(stdout, "Path: "); + *path = '\0'; + p = fgets(path, sizeof(path) - 1, stdin); + if (p == NULL) { + fprintf(stderr, "failed to read from stdin\n"); + return 1; + } + if (strlen(path) == 0) + { + return 0; + } - p = path + strlen(path) - 1; - if (*p == '\n') - { - *p = '\0'; - } - - if ((fd = smbc_open(path, O_RDONLY, 0)) < 0) - { - perror("smbc_open"); - continue; - } + p = path + strlen(path) - 1; + if (*p == '\n') + { + *p = '\0'; + } - do - { - ret = smbc_read(fd, buffer, sizeof(buffer)); - savedErrno = errno; - if (ret > 0) fwrite(buffer, 1, ret, stdout); - } while (ret > 0); + if ((fd = smbc_open(path, O_RDONLY, 0)) < 0) + { + perror("smbc_open"); + continue; + } - smbc_close(fd); + do + { + ret = smbc_read(fd, buffer, sizeof(buffer)); + savedErrno = errno; + if (ret > 0) fwrite(buffer, 1, ret, stdout); + } while (ret > 0); - if (ret < 0) - { - errno = savedErrno; - perror("read"); - } - } + smbc_close(fd); + + if (ret < 0) + { + errno = savedErrno; + perror("read"); + } + } - return 0; + return 0; } diff --git a/examples/libsmbclient/testsmbc.c b/examples/libsmbclient/testsmbc.c index 3c9aa5674cd..a61d38ecaba 100644 --- a/examples/libsmbclient/testsmbc.c +++ b/examples/libsmbclient/testsmbc.c @@ -1,20 +1,20 @@ -/* +/* Unix SMB/CIFS implementation. SMB client library test program Copyright (C) Andrew Tridgell 1998 Copyright (C) Richard Sharpe 2000 Copyright (C) John Terpsra 2000 - + This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 3 of the License, or (at your option) any later version. - + This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. - + You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>. */ @@ -31,261 +31,261 @@ int main(int argc, char *argv[]) { - int err, fd, dh1, dsize, dirc; - const char *file = "smb://samba/public/testfile.txt"; - const char *file2 = "smb://samba/public/testfile2.txt"; - char buff[256]; - char dirbuf[512]; - char *dirp; - struct stat st1, st2; + int err, fd, dh1, dsize, dirc; + const char *file = "smb://samba/public/testfile.txt"; + const char *file2 = "smb://samba/public/testfile2.txt"; + char buff[256]; + char dirbuf[512]; + char *dirp; + struct stat st1, st2; + + err = smbc_init(get_auth_data_fn, 10); /* Initialize things */ + + if (err < 0) { + + fprintf(stderr, "Initializing the smbclient library ...: %s\n", strerror(errno)); - err = smbc_init(get_auth_data_fn, 10); /* Initialize things */ + } - if (err < 0) { + if (argc > 1) { - fprintf(stderr, "Initializing the smbclient library ...: %s\n", strerror(errno)); + if ((dh1 = smbc_opendir(argv[1]))<1) { - } + fprintf(stderr, "Could not open directory: %s: %s\n", + argv[1], strerror(errno)); - if (argc > 1) { + exit(1); - if ((dh1 = smbc_opendir(argv[1]))<1) { + } - fprintf(stderr, "Could not open directory: %s: %s\n", - argv[1], strerror(errno)); + fprintf(stdout, "Directory handle: %u\n", dh1); - exit(1); + /* Now, list those directories, but in funny ways ... */ - } + dirp = (char *)dirbuf; - fprintf(stdout, "Directory handle: %u\n", dh1); + if ((dirc = smbc_getdents(dh1, (struct smbc_dirent *)dirp, + sizeof(dirbuf))) < 0) { - /* Now, list those directories, but in funny ways ... */ + fprintf(stderr, "Problems getting directory entries: %s\n", + strerror(errno)); - dirp = (char *)dirbuf; + exit(1); - if ((dirc = smbc_getdents(dh1, (struct smbc_dirent *)dirp, - sizeof(dirbuf))) < 0) { + } - fprintf(stderr, "Problems getting directory entries: %s\n", - strerror(errno)); + /* Now, process the list of names ... */ - exit(1); + fprintf(stdout, "Directory listing, size = %u\n", dirc); - } + while (dirc > 0) { - /* Now, process the list of names ... */ + dsize = ((struct smbc_dirent *)dirp)->dirlen; + fprintf(stdout, "Dir Ent, Type: %u, Name: %s, Comment: %s\n", + ((struct smbc_dirent *)dirp)->smbc_type, + ((struct smbc_dirent *)dirp)->name, + ((struct smbc_dirent *)dirp)->comment); - fprintf(stdout, "Directory listing, size = %u\n", dirc); + dirp += dsize; + dirc -= dsize; - while (dirc > 0) { + } - dsize = ((struct smbc_dirent *)dirp)->dirlen; - fprintf(stdout, "Dir Ent, Type: %u, Name: %s, Comment: %s\n", - ((struct smbc_dirent *)dirp)->smbc_type, - ((struct smbc_dirent *)dirp)->name, - ((struct smbc_dirent *)dirp)->comment); + dirp = (char *)dirbuf; - dirp += dsize; - dirc -= dsize; + exit(1); - } + } - dirp = (char *)dirbuf; + /* For now, open a file on a server that is hard coded ... later will + * read from the command line ... + */ - exit(1); + fd = smbc_open(file, O_RDWR | O_CREAT | O_TRUNC, 0666); - } + if (fd < 0) { - /* For now, open a file on a server that is hard coded ... later will - * read from the command line ... - */ + fprintf(stderr, "Creating file: %s: %s\n", file, strerror(errno)); + exit(0); - fd = smbc_open(file, O_RDWR | O_CREAT | O_TRUNC, 0666); + } - if (fd < 0) { + fprintf(stdout, "Opened or created file: %s\n", file); - fprintf(stderr, "Creating file: %s: %s\n", file, strerror(errno)); - exit(0); + /* Now, write some date to the file ... */ - } + memset(buff, '\0', sizeof(buff)); + snprintf(buff, sizeof(buff), "%s", "Some test data for the moment ..."); - fprintf(stdout, "Opened or created file: %s\n", file); + err = smbc_write(fd, buff, sizeof(buff)); - /* Now, write some date to the file ... */ + if (err < 0) { - memset(buff, '\0', sizeof(buff)); - snprintf(buff, sizeof(buff), "%s", "Some test data for the moment ..."); + fprintf(stderr, "writing file: %s: %s\n", file, strerror(errno)); + exit(0); - err = smbc_write(fd, buff, sizeof(buff)); + } - if (err < 0) { - - fprintf(stderr, "writing file: %s: %s\n", file, strerror(errno)); - exit(0); + fprintf(stdout, "Wrote %lu bytes to file: %s\n", + (unsigned long) sizeof(buff), buff); - } + /* Now, seek the file back to offset 0 */ - fprintf(stdout, "Wrote %lu bytes to file: %s\n", - (unsigned long) sizeof(buff), buff); + err = smbc_lseek(fd, SEEK_SET, 0); - /* Now, seek the file back to offset 0 */ + if (err < 0) { - err = smbc_lseek(fd, SEEK_SET, 0); + fprintf(stderr, "Seeking file: %s: %s\n", file, strerror(errno)); + exit(0); - if (err < 0) { + } - fprintf(stderr, "Seeking file: %s: %s\n", file, strerror(errno)); - exit(0); + fprintf(stdout, "Completed lseek on file: %s\n", file); - } + /* Now, read the file contents back ... */ - fprintf(stdout, "Completed lseek on file: %s\n", file); + err = smbc_read(fd, buff, sizeof(buff)); - /* Now, read the file contents back ... */ + if (err < 0) { - err = smbc_read(fd, buff, sizeof(buff)); + fprintf(stderr, "Reading file: %s: %s\n", file, strerror(errno)); + exit(0); - if (err < 0) { + } - fprintf(stderr, "Reading file: %s: %s\n", file, strerror(errno)); - exit(0); + fprintf(stdout, "Read file: %s\n", buff); /* Should check the contents */ - } + fprintf(stdout, "Now fstat'ing file: %s\n", file); - fprintf(stdout, "Read file: %s\n", buff); /* Should check the contents */ + err = smbc_fstat(fd, &st1); - fprintf(stdout, "Now fstat'ing file: %s\n", file); + if (err < 0) { - err = smbc_fstat(fd, &st1); + fprintf(stderr, "Fstat'ing file: %s: %s\n", file, strerror(errno)); + exit(0); - if (err < 0) { + } - fprintf(stderr, "Fstat'ing file: %s: %s\n", file, strerror(errno)); - exit(0); - } + /* Now, close the file ... */ + err = smbc_close(fd); - /* Now, close the file ... */ + if (err < 0) { - err = smbc_close(fd); + fprintf(stderr, "Closing file: %s: %s\n", file, strerror(errno)); - if (err < 0) { + } - fprintf(stderr, "Closing file: %s: %s\n", file, strerror(errno)); + /* Now, rename the file ... */ - } + err = smbc_rename(file, file2); - /* Now, rename the file ... */ + if (err < 0) { - err = smbc_rename(file, file2); + fprintf(stderr, "Renaming file: %s to %s: %s\n", file, file2, strerror(errno)); - if (err < 0) { + } - fprintf(stderr, "Renaming file: %s to %s: %s\n", file, file2, strerror(errno)); + fprintf(stdout, "Renamed file %s to %s\n", file, file2); - } + /* Now, create a file and delete it ... */ - fprintf(stdout, "Renamed file %s to %s\n", file, file2); + fprintf(stdout, "Now, creating file: %s so we can delete it.\n", file); - /* Now, create a file and delete it ... */ + fd = smbc_open(file, O_RDWR | O_CREAT, 0666); - fprintf(stdout, "Now, creating file: %s so we can delete it.\n", file); + if (fd < 0) { - fd = smbc_open(file, O_RDWR | O_CREAT, 0666); + fprintf(stderr, "Creating file: %s: %s\n", file, strerror(errno)); + exit(0); - if (fd < 0) { + } - fprintf(stderr, "Creating file: %s: %s\n", file, strerror(errno)); - exit(0); + fprintf(stdout, "Opened or created file: %s\n", file); - } + err = smbc_close(fd); - fprintf(stdout, "Opened or created file: %s\n", file); + if (err < 0) { - err = smbc_close(fd); + fprintf(stderr, "Closing file: %s: %s\n", file, strerror(errno)); + exit(0); - if (err < 0) { + } - fprintf(stderr, "Closing file: %s: %s\n", file, strerror(errno)); - exit(0); + /* Now, delete the file ... */ - } - - /* Now, delete the file ... */ + fprintf(stdout, "File %s created, now deleting ...\n", file); - fprintf(stdout, "File %s created, now deleting ...\n", file); + err = smbc_unlink(file); - err = smbc_unlink(file); + if (err < 0) { - if (err < 0) { + fprintf(stderr, "Deleting file: %s: %s\n", file, strerror(errno)); + exit(0); - fprintf(stderr, "Deleting file: %s: %s\n", file, strerror(errno)); - exit(0); + } - } + /* Now, stat the file, file 2 ... */ - /* Now, stat the file, file 2 ... */ + fprintf(stdout, "Now stat'ing file: %s\n", file); - fprintf(stdout, "Now stat'ing file: %s\n", file); + err = smbc_stat(file2, &st2); - err = smbc_stat(file2, &st2); + if (err < 0) { - if (err < 0) { + fprintf(stderr, "Stat'ing file: %s: %s\n", file, strerror(errno)); + exit(0); - fprintf(stderr, "Stat'ing file: %s: %s\n", file, strerror(errno)); - exit(0); + } - } + fprintf(stdout, "Stat'ed file: %s. Size = %d, mode = %04X\n", file2, + (int)st2.st_size, (unsigned int)st2.st_mode); + fprintf(stdout, " time: %s\n", ctime(&st2.st_atime)); + fprintf(stdout, "Earlier stat: %s, Size = %d, mode = %04X\n", file, + (int)st1.st_size, (unsigned int)st1.st_mode); + fprintf(stdout, " time: %s\n", ctime(&st1.st_atime)); - fprintf(stdout, "Stat'ed file: %s. Size = %d, mode = %04X\n", file2, - (int)st2.st_size, (unsigned int)st2.st_mode); - fprintf(stdout, " time: %s\n", ctime(&st2.st_atime)); - fprintf(stdout, "Earlier stat: %s, Size = %d, mode = %04X\n", file, - (int)st1.st_size, (unsigned int)st1.st_mode); - fprintf(stdout, " time: %s\n", ctime(&st1.st_atime)); + /* Now, make a directory ... */ - /* Now, make a directory ... */ + fprintf(stdout, "Making directory smb://samba/public/make-dir\n"); - fprintf(stdout, "Making directory smb://samba/public/make-dir\n"); + if (smbc_mkdir("smb://samba/public/make-dir", 0666) < 0) { - if (smbc_mkdir("smb://samba/public/make-dir", 0666) < 0) { + fprintf(stderr, "Error making directory: smb://samba/public/make-dir: %s\n", + strerror(errno)); - fprintf(stderr, "Error making directory: smb://samba/public/make-dir: %s\n", - strerror(errno)); + if (errno == EEXIST) { /* Try to delete the directory */ - if (errno == EEXIST) { /* Try to delete the directory */ + fprintf(stdout, "Trying to delete directory: smb://samba/public/make-dir\n"); - fprintf(stdout, "Trying to delete directory: smb://samba/public/make-dir\n"); + if (smbc_rmdir("smb://samba/public/make-dir") < 0) { /* Error */ - if (smbc_rmdir("smb://samba/public/make-dir") < 0) { /* Error */ + fprintf(stderr, "Error removing directory: smb://samba/public/make-dir: %s\n", strerror(errno)); - fprintf(stderr, "Error removing directory: smb://samba/public/make-dir: %s\n", strerror(errno)); + exit(0); - exit(0); + } - } + fprintf(stdout, "Making directory: smb://samba/public/make-dir\n"); - fprintf(stdout, "Making directory: smb://samba/public/make-dir\n"); + if (smbc_mkdir("smb://samba/public/make-dir", 666) < 0) { - if (smbc_mkdir("smb://samba/public/make-dir", 666) < 0) { + fprintf(stderr, "Error making directory: smb://samba/public/make-dir: %s\n", + strerror(errno)); - fprintf(stderr, "Error making directory: smb://samba/public/make-dir: %s\n", - strerror(errno)); + fprintf(stderr, "I give up!\n"); - fprintf(stderr, "I give up!\n"); + exit(1); - exit(1); + } - } + } - } + exit(0); - exit(0); - - } + } - fprintf(stdout, "Made dir: make-dir\n"); - return 0; + fprintf(stdout, "Made dir: make-dir\n"); + return 0; } diff --git a/examples/libsmbclient/teststat.c b/examples/libsmbclient/teststat.c index 4084fd08e61..c75ce8c01a3 100644 --- a/examples/libsmbclient/teststat.c +++ b/examples/libsmbclient/teststat.c @@ -1,70 +1,70 @@ -#include <stdio.h> +#include <stdio.h> #include <unistd.h> -#include <string.h> -#include <time.h> -#include <libsmbclient.h> +#include <string.h> +#include <time.h> +#include <libsmbclient.h> #include "get_auth_data_fn.h" -int main(int argc, char * argv[]) -{ - int debug = 0; - char m_time[32]; - char c_time[32]; - char a_time[32]; - const char * pSmbPath = NULL; - const char * pLocalPath = NULL; - struct stat st; - - if (argc == 1) - { - pSmbPath = "smb://RANDOM/Public/small"; - pLocalPath = "/random/home/samba/small"; - } - else if (argc == 2) - { - pSmbPath = argv[1]; - pLocalPath = NULL; - } - else if (argc == 3) - { - pSmbPath = argv[1]; - pLocalPath = argv[2]; - } - else - { - printf("usage: " - "%s [ smb://path/to/file [ /nfs/or/local/path/to/file ] ]\n", - argv[0]); - return 1; - } +int main(int argc, char * argv[]) +{ + int debug = 0; + char m_time[32]; + char c_time[32]; + char a_time[32]; + const char * pSmbPath = NULL; + const char * pLocalPath = NULL; + struct stat st; - smbc_init(get_auth_data_fn, debug); - - if (smbc_stat(pSmbPath, &st) < 0) - { - perror("smbc_stat"); - return 1; - } - - printf("\nSAMBA\n mtime:%lld/%s ctime:%lld/%s atime:%lld/%s\n", - (long long)st.st_mtime, ctime_r(&st.st_mtime, m_time), - (long long)st.st_ctime, ctime_r(&st.st_ctime, c_time), - (long long)st.st_atime, ctime_r(&st.st_atime, a_time)); - - if (pLocalPath != NULL) - { - if (stat(pLocalPath, &st) < 0) - { - perror("stat"); - return 1; - } - - printf("LOCAL\n mtime:%lld/%s ctime:%lld/%s atime:%lld/%s\n", - (long long)st.st_mtime, ctime_r(&st.st_mtime, m_time), - (long long)st.st_ctime, ctime_r(&st.st_ctime, c_time), - (long long)st.st_atime, ctime_r(&st.st_atime, a_time)); - } + if (argc == 1) + { + pSmbPath = "smb://RANDOM/Public/small"; + pLocalPath = "/random/home/samba/small"; + } + else if (argc == 2) + { + pSmbPath = argv[1]; + pLocalPath = NULL; + } + else if (argc == 3) + { + pSmbPath = argv[1]; + pLocalPath = argv[2]; + } + else + { + printf("usage: " + "%s [ smb://path/to/file [ /nfs/or/local/path/to/file ] ]\n", + argv[0]); + return 1; + } - return 0; + smbc_init(get_auth_data_fn, debug); + + if (smbc_stat(pSmbPath, &st) < 0) + { + perror("smbc_stat"); + return 1; + } + + printf("\nSAMBA\n mtime:%lld/%s ctime:%lld/%s atime:%lld/%s\n", + (long long)st.st_mtime, ctime_r(&st.st_mtime, m_time), + (long long)st.st_ctime, ctime_r(&st.st_ctime, c_time), + (long long)st.st_atime, ctime_r(&st.st_atime, a_time)); + + if (pLocalPath != NULL) + { + if (stat(pLocalPath, &st) < 0) + { + perror("stat"); + return 1; + } + + printf("LOCAL\n mtime:%lld/%s ctime:%lld/%s atime:%lld/%s\n", + (long long)st.st_mtime, ctime_r(&st.st_mtime, m_time), + (long long)st.st_ctime, ctime_r(&st.st_ctime, c_time), + (long long)st.st_atime, ctime_r(&st.st_atime, a_time)); + } + + return 0; } diff --git a/examples/libsmbclient/teststat2.c b/examples/libsmbclient/teststat2.c index 963cd2709d2..04994b75f70 100644 --- a/examples/libsmbclient/teststat2.c +++ b/examples/libsmbclient/teststat2.c @@ -38,33 +38,33 @@ static int gettime(const char * pUrl, char m_time[32]; char c_time[32]; char a_time[32]; - + smbc_init(get_auth_data_fn, 0); - + if (smbc_stat(pUrl, &st) < 0) { perror("smbc_stat"); return 1; } - + printf("SAMBA\n mtime:%lld/%s ctime:%lld/%s atime:%lld/%s\n", (long long)st.st_mtime, ctime_r(&st.st_mtime, m_time), (long long)st.st_ctime, ctime_r(&st.st_ctime, c_time), (long long)st.st_atime, ctime_r(&st.st_atime, a_time)); - - + + /* check the stat on this file */ if (stat(pLocalPath, &st) < 0) { perror("stat"); return 1; } - + printf("LOCAL\n mtime:%lld/%s ctime:%lld/%s atime:%lld/%s\n", (long long)st.st_mtime, ctime_r(&st.st_mtime, m_time), (long long)st.st_ctime, ctime_r(&st.st_ctime, c_time), (long long)st.st_atime, ctime_r(&st.st_atime, a_time)); - - + + return 0; } diff --git a/examples/libsmbclient/teststat3.c b/examples/libsmbclient/teststat3.c index 3efe51dffa7..3669d70de19 100644 --- a/examples/libsmbclient/teststat3.c +++ b/examples/libsmbclient/teststat3.c @@ -25,15 +25,15 @@ int main(int argc, char* argv[]) return 1; } - + smbc_init(get_auth_data_fn, 0); - + if (smbc_stat(pUrl, &st1) < 0) { perror("smbc_stat"); return 1; } - + if ((fd = smbc_open(pUrl, O_RDONLY, 0)) < 0) { perror("smbc_open"); @@ -45,7 +45,7 @@ int main(int argc, char* argv[]) perror("smbc_fstat"); return 1; } - + smbc_close(fd); #define COMPARE(name, field) \ @@ -72,4 +72,3 @@ int main(int argc, char* argv[]) return 0; } - diff --git a/examples/libsmbclient/teststatvfs.c b/examples/libsmbclient/teststatvfs.c index 9a8e5392763..44d4ed27364 100644 --- a/examples/libsmbclient/teststatvfs.c +++ b/examples/libsmbclient/teststatvfs.c @@ -1,106 +1,106 @@ #include <sys/types.h> #include <sys/statvfs.h> -#include <stdio.h> +#include <stdio.h> #include <unistd.h> -#include <string.h> -#include <time.h> +#include <string.h> +#include <time.h> #include <errno.h> -#include <libsmbclient.h> +#include <libsmbclient.h> #include "get_auth_data_fn.h" -int main(int argc, char * argv[]) -{ - int ret; - int debug = 0; - char * p; - char path[2048]; - struct statvfs statvfsbuf; - - smbc_init(get_auth_data_fn, debug); - - for (;;) - { - fprintf(stdout, "Path: "); - *path = '\0'; - p = fgets(path, sizeof(path) - 1, stdin); - if (p == NULL) { - fprintf(stderr, "failed to read from stdin\n"); - return 1; - } - if (strlen(path) == 0) - { - return 0; - } +int main(int argc, char * argv[]) +{ + int ret; + int debug = 0; + char * p; + char path[2048]; + struct statvfs statvfsbuf; + + smbc_init(get_auth_data_fn, debug); + + for (;;) + { + fprintf(stdout, "Path: "); + *path = '\0'; + p = fgets(path, sizeof(path) - 1, stdin); + if (p == NULL) { + fprintf(stderr, "failed to read from stdin\n"); + return 1; + } + if (strlen(path) == 0) + { + return 0; + } - p = path + strlen(path) - 1; - if (*p == '\n') - { - *p = '\0'; - } - - ret = smbc_statvfs(path, &statvfsbuf); + p = path + strlen(path) - 1; + if (*p == '\n') + { + *p = '\0'; + } - if (ret < 0) - { - perror("fstatvfs"); - } - else - { - printf("\n"); - printf("Block Size: %lu\n", statvfsbuf.f_bsize); - printf("Fragment Size: %lu\n", statvfsbuf.f_frsize); - printf("Blocks: %llu\n", - (unsigned long long) statvfsbuf.f_blocks); - printf("Free Blocks: %llu\n", - (unsigned long long) statvfsbuf.f_bfree); - printf("Available Blocks: %llu\n", - (unsigned long long) statvfsbuf.f_bavail); - printf("Files : %llu\n", - (unsigned long long) statvfsbuf.f_files); - printf("Free Files: %llu\n", - (unsigned long long) statvfsbuf.f_ffree); - printf("Available Files: %llu\n", - (unsigned long long) statvfsbuf.f_favail); + ret = smbc_statvfs(path, &statvfsbuf); + + if (ret < 0) + { + perror("fstatvfs"); + } + else + { + printf("\n"); + printf("Block Size: %lu\n", statvfsbuf.f_bsize); + printf("Fragment Size: %lu\n", statvfsbuf.f_frsize); + printf("Blocks: %llu\n", + (unsigned long long) statvfsbuf.f_blocks); + printf("Free Blocks: %llu\n", + (unsigned long long) statvfsbuf.f_bfree); + printf("Available Blocks: %llu\n", + (unsigned long long) statvfsbuf.f_bavail); + printf("Files : %llu\n", + (unsigned long long) statvfsbuf.f_files); + printf("Free Files: %llu\n", + (unsigned long long) statvfsbuf.f_ffree); + printf("Available Files: %llu\n", + (unsigned long long) statvfsbuf.f_favail); #ifdef HAVE_FSID_INT - printf("File System ID: %lu\n", - (unsigned long) statvfsbuf.f_fsid); + printf("File System ID: %lu\n", + (unsigned long) statvfsbuf.f_fsid); #endif - printf("\n"); + printf("\n"); - printf("Flags: 0x%lx\n", statvfsbuf.f_flag); - printf("Extended Features: "); + printf("Flags: 0x%lx\n", statvfsbuf.f_flag); + printf("Extended Features: "); - if (statvfsbuf.f_flag & SMBC_VFS_FEATURE_NO_UNIXCIFS) - { - printf("NO_UNIXCIFS "); - } - else - { - printf("unixcifs "); - } + if (statvfsbuf.f_flag & SMBC_VFS_FEATURE_NO_UNIXCIFS) + { + printf("NO_UNIXCIFS "); + } + else + { + printf("unixcifs "); + } - if (statvfsbuf.f_flag & SMBC_VFS_FEATURE_CASE_INSENSITIVE) - { - printf("CASE_INSENSITIVE "); - } - else - { - printf("case_sensitive "); - } + if (statvfsbuf.f_flag & SMBC_VFS_FEATURE_CASE_INSENSITIVE) + { + printf("CASE_INSENSITIVE "); + } + else + { + printf("case_sensitive "); + } - if (statvfsbuf.f_flag & SMBC_VFS_FEATURE_DFS) - { - printf("DFS "); - } - else - { - printf("no_dfs "); - } + if (statvfsbuf.f_flag & SMBC_VFS_FEATURE_DFS) + { + printf("DFS "); + } + else + { + printf("no_dfs "); + } - printf("\n"); - } - } + printf("\n"); + } + } - return 0; + return 0; } diff --git a/examples/libsmbclient/testtruncate.c b/examples/libsmbclient/testtruncate.c index 1b4298db26c..bbc70e9bb31 100644 --- a/examples/libsmbclient/testtruncate.c +++ b/examples/libsmbclient/testtruncate.c @@ -1,80 +1,80 @@ -#include <stdio.h> +#include <stdio.h> #include <unistd.h> -#include <string.h> -#include <time.h> +#include <string.h> +#include <time.h> #include <errno.h> -#include <libsmbclient.h> +#include <libsmbclient.h> #include "get_auth_data_fn.h" -int main(int argc, char * argv[]) -{ - int fd; - int ret; - int debug = 0; - int savedErrno; - char buffer[128]; - struct stat st; - - if (argc != 2) - { - printf("usage: " - "%s smb://path/to/file\n", - argv[0]); - return 1; - } +int main(int argc, char * argv[]) +{ + int fd; + int ret; + int debug = 0; + int savedErrno; + char buffer[128]; + struct stat st; - smbc_init(get_auth_data_fn, debug); - - if ((fd = smbc_open(argv[1], O_WRONLY | O_CREAT | O_TRUNC, 0)) < 0) - { - perror("smbc_open"); - return 1; - } + if (argc != 2) + { + printf("usage: " + "%s smb://path/to/file\n", + argv[0]); + return 1; + } - snprintf(buffer, sizeof(buffer), "%s", "Hello world.\nThis is a test.\n"); + smbc_init(get_auth_data_fn, debug); - ret = smbc_write(fd, buffer, strlen(buffer)); - savedErrno = errno; - smbc_close(fd); + if ((fd = smbc_open(argv[1], O_WRONLY | O_CREAT | O_TRUNC, 0)) < 0) + { + perror("smbc_open"); + return 1; + } - if (ret < 0) - { - errno = savedErrno; - perror("write"); - } + snprintf(buffer, sizeof(buffer), "%s", "Hello world.\nThis is a test.\n"); - if (smbc_stat(argv[1], &st) < 0) - { - perror("smbc_stat"); - return 1; - } - - printf("Original size: %lu\n", (unsigned long) st.st_size); - - if ((fd = smbc_open(argv[1], O_WRONLY, 0)) < 0) - { - perror("smbc_open"); - return 1; - } + ret = smbc_write(fd, buffer, strlen(buffer)); + savedErrno = errno; + smbc_close(fd); - ret = smbc_ftruncate(fd, 13); - savedErrno = errno; - smbc_close(fd); - if (ret < 0) - { - errno = savedErrno; - perror("smbc_ftruncate"); - return 1; - } - - if (smbc_stat(argv[1], &st) < 0) - { - perror("smbc_stat"); - return 1; - } - - printf("New size: %lu\n", (unsigned long) st.st_size); - - return 0; + if (ret < 0) + { + errno = savedErrno; + perror("write"); + } + + if (smbc_stat(argv[1], &st) < 0) + { + perror("smbc_stat"); + return 1; + } + + printf("Original size: %lu\n", (unsigned long) st.st_size); + + if ((fd = smbc_open(argv[1], O_WRONLY, 0)) < 0) + { + perror("smbc_open"); + return 1; + } + + ret = smbc_ftruncate(fd, 13); + savedErrno = errno; + smbc_close(fd); + if (ret < 0) + { + errno = savedErrno; + perror("smbc_ftruncate"); + return 1; + } + + if (smbc_stat(argv[1], &st) < 0) + { + perror("smbc_stat"); + return 1; + } + + printf("New size: %lu\n", (unsigned long) st.st_size); + + return 0; } diff --git a/examples/libsmbclient/testutime.c b/examples/libsmbclient/testutime.c index 662bd866a59..378b0e9798b 100644 --- a/examples/libsmbclient/testutime.c +++ b/examples/libsmbclient/testutime.c @@ -1,75 +1,75 @@ #include "config.h" -#include <stdio.h> +#include <stdio.h> #include <unistd.h> -#include <string.h> -#include <time.h> -#include <libsmbclient.h> +#include <string.h> +#include <time.h> +#include <libsmbclient.h> #include "get_auth_data_fn.h" -int main(int argc, char * argv[]) -{ - int debug = 0; - char m_time[32]; - char c_time[32]; - char a_time[32]; - const char * pSmbPath = NULL; - time_t t = time(NULL); - struct stat st; - struct utimbuf utimbuf; - - if (argc == 1) - { - pSmbPath = "smb://RANDOM/Public/small"; - } - else if (argc == 2) - { - pSmbPath = argv[1]; - } - else if (argc == 3) - { - pSmbPath = argv[1]; - t = (time_t) strtol(argv[2], NULL, 10); - } - else - { - printf("usage: " - "%s [ smb://path/to/file [ mtime ] ]\n", - argv[0]); - return 1; - } +int main(int argc, char * argv[]) +{ + int debug = 0; + char m_time[32]; + char c_time[32]; + char a_time[32]; + const char * pSmbPath = NULL; + time_t t = time(NULL); + struct stat st; + struct utimbuf utimbuf; - smbc_init(get_auth_data_fn, debug); - - if (smbc_stat(pSmbPath, &st) < 0) - { - perror("smbc_stat"); - return 1; - } - - printf("Before\n mtime:%lld/%s ctime:%lld/%s atime:%lld/%s\n", - (long long)st.st_mtime, ctime_r(&st.st_mtime, m_time), - (long long)st.st_ctime, ctime_r(&st.st_ctime, c_time), - (long long)st.st_atime, ctime_r(&st.st_atime, a_time)); - - utimbuf.actime = t; /* unchangeable (won't change) */ - utimbuf.modtime = t; /* this one should succeed */ - if (smbc_utime(pSmbPath, &utimbuf) < 0) - { - perror("smbc_utime"); - return 1; - } + if (argc == 1) + { + pSmbPath = "smb://RANDOM/Public/small"; + } + else if (argc == 2) + { + pSmbPath = argv[1]; + } + else if (argc == 3) + { + pSmbPath = argv[1]; + t = (time_t) strtol(argv[2], NULL, 10); + } + else + { + printf("usage: " + "%s [ smb://path/to/file [ mtime ] ]\n", + argv[0]); + return 1; + } - if (smbc_stat(pSmbPath, &st) < 0) - { - perror("smbc_stat"); - return 1; - } - - printf("After\n mtime:%lld/%s ctime:%lld/%s atime:%lld/%s\n", - (long long)st.st_mtime, ctime_r(&st.st_mtime, m_time), - (long long)st.st_ctime, ctime_r(&st.st_ctime, c_time), - (long long)st.st_atime, ctime_r(&st.st_atime, a_time)); - - return 0; + smbc_init(get_auth_data_fn, debug); + + if (smbc_stat(pSmbPath, &st) < 0) + { + perror("smbc_stat"); + return 1; + } + + printf("Before\n mtime:%lld/%s ctime:%lld/%s atime:%lld/%s\n", + (long long)st.st_mtime, ctime_r(&st.st_mtime, m_time), + (long long)st.st_ctime, ctime_r(&st.st_ctime, c_time), + (long long)st.st_atime, ctime_r(&st.st_atime, a_time)); + + utimbuf.actime = t; /* unchangeable (won't change) */ + utimbuf.modtime = t; /* this one should succeed */ + if (smbc_utime(pSmbPath, &utimbuf) < 0) + { + perror("smbc_utime"); + return 1; + } + + if (smbc_stat(pSmbPath, &st) < 0) + { + perror("smbc_stat"); + return 1; + } + + printf("After\n mtime:%lld/%s ctime:%lld/%s atime:%lld/%s\n", + (long long)st.st_mtime, ctime_r(&st.st_mtime, m_time), + (long long)st.st_ctime, ctime_r(&st.st_ctime, c_time), + (long long)st.st_atime, ctime_r(&st.st_atime, a_time)); + + return 0; } diff --git a/examples/libsmbclient/testwrite.c b/examples/libsmbclient/testwrite.c index 1837839d298..0e728e05863 100644 --- a/examples/libsmbclient/testwrite.c +++ b/examples/libsmbclient/testwrite.c @@ -1,72 +1,72 @@ #include <sys/types.h> -#include <stdio.h> +#include <stdio.h> #include <unistd.h> -#include <string.h> -#include <time.h> +#include <string.h> +#include <time.h> #include <errno.h> -#include <libsmbclient.h> +#include <libsmbclient.h> #include "get_auth_data_fn.h" -int main(int argc, char * argv[]) -{ - int fd; - int ret; - int debug = 0; - int savedErrno; - char buffer[2048]; - char path[2048]; - char * p; - - smbc_init(get_auth_data_fn, debug); - - printf("CAUTION: This program will overwrite a file. " - "Press ENTER to continue."); - p = fgets(buffer, sizeof(buffer), stdin); - if (p == NULL) { - fprintf(stderr, "failed to read from stdin\n"); - return 1; - } - +int main(int argc, char * argv[]) +{ + int fd; + int ret; + int debug = 0; + int savedErrno; + char buffer[2048]; + char path[2048]; + char * p; - for (;;) - { - fprintf(stdout, "\nPath: "); - *path = '\0'; - p = fgets(path, sizeof(path) - 1, stdin); - if (p == NULL) { - fprintf(stderr, "failed to read from stdin\n"); - return 1; - } - if (strlen(path) == 0) - { - return 0; - } + smbc_init(get_auth_data_fn, debug); - p = path + strlen(path) - 1; - if (*p == '\n') - { - *p = '\0'; - } - - if ((fd = smbc_open(path, O_WRONLY | O_CREAT | O_TRUNC, 0)) < 0) - { - perror("smbc_open"); - continue; - } + printf("CAUTION: This program will overwrite a file. " + "Press ENTER to continue."); + p = fgets(buffer, sizeof(buffer), stdin); + if (p == NULL) { + fprintf(stderr, "failed to read from stdin\n"); + return 1; + } - snprintf(buffer, sizeof(buffer), "%s", "Hello world\n"); - ret = smbc_write(fd, buffer, strlen(buffer)); - savedErrno = errno; - smbc_close(fd); + for (;;) + { + fprintf(stdout, "\nPath: "); + *path = '\0'; + p = fgets(path, sizeof(path) - 1, stdin); + if (p == NULL) { + fprintf(stderr, "failed to read from stdin\n"); + return 1; + } + if (strlen(path) == 0) + { + return 0; + } - if (ret < 0) - { - errno = savedErrno; - perror("write"); - } - } + p = path + strlen(path) - 1; + if (*p == '\n') + { + *p = '\0'; + } - return 0; + if ((fd = smbc_open(path, O_WRONLY | O_CREAT | O_TRUNC, 0)) < 0) + { + perror("smbc_open"); + continue; + } + + snprintf(buffer, sizeof(buffer), "%s", "Hello world\n"); + + ret = smbc_write(fd, buffer, strlen(buffer)); + savedErrno = errno; + smbc_close(fd); + + if (ret < 0) + { + errno = savedErrno; + perror("write"); + } + } + + return 0; } diff --git a/examples/libsmbclient/tree.c b/examples/libsmbclient/tree.c index 6e34cd05627..07847c8b4a7 100644 --- a/examples/libsmbclient/tree.c +++ b/examples/libsmbclient/tree.c @@ -1,21 +1,21 @@ -/* +/* Unix SMB/Netbios implementation. Version 2.0 SMB client GTK+ tree-based application Copyright (C) Andrew Tridgell 1998 Copyright (C) Richard Sharpe 2001 Copyright (C) John Terpstra 2001 - + This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 3 of the License, or (at your option) any later version. - + This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. - + You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>. */ @@ -33,39 +33,39 @@ static GtkWidget *clist; struct tree_data { - guint32 type; /* Type of tree item, an SMBC_TYPE */ - char name[256]; /* May need to change this later */ + guint32 type; /* Type of tree item, an SMBC_TYPE */ + char name[256]; /* May need to change this later */ }; void error_message(gchar *message) { - GtkWidget *dialog, *label, *okay_button; - - /* Create the widgets */ - - dialog = gtk_dialog_new(); - gtk_window_set_modal(GTK_WINDOW(dialog), TRUE); - label = gtk_label_new (message); - okay_button = gtk_button_new_with_label("Okay"); - - /* Ensure that the dialog box is destroyed when the user clicks ok. */ - - gtk_signal_connect_object (GTK_OBJECT (okay_button), "clicked", - GTK_SIGNAL_FUNC (gtk_widget_destroy), - GTK_OBJECT(dialog)); - gtk_container_add (GTK_CONTAINER (GTK_DIALOG(dialog)->action_area), - okay_button); - - /* Add the label, and show everything we've added to the dialog. */ - - gtk_container_add (GTK_CONTAINER (GTK_DIALOG(dialog)->vbox), - label); - gtk_widget_show_all (dialog); + GtkWidget *dialog, *label, *okay_button; + + /* Create the widgets */ + + dialog = gtk_dialog_new(); + gtk_window_set_modal(GTK_WINDOW(dialog), TRUE); + label = gtk_label_new (message); + okay_button = gtk_button_new_with_label("Okay"); + + /* Ensure that the dialog box is destroyed when the user clicks ok. */ + + gtk_signal_connect_object (GTK_OBJECT (okay_button), "clicked", + GTK_SIGNAL_FUNC (gtk_widget_destroy), + GTK_OBJECT(dialog)); + gtk_container_add (GTK_CONTAINER (GTK_DIALOG(dialog)->action_area), + okay_button); + + /* Add the label, and show everything we've added to the dialog. */ + + gtk_container_add (GTK_CONTAINER (GTK_DIALOG(dialog)->vbox), + label); + gtk_widget_show_all (dialog); } /* - * We are given a widget, and we want to retrieve its URL so we + * We are given a widget, and we want to retrieve its URL so we * can do a directory listing. * * We walk back up the tree, picking up pieces until we hit a server or @@ -76,72 +76,72 @@ static char path_string[1024]; char *get_path(GtkWidget *item) { - GtkWidget *p = item; - struct tree_data *pd; - char *comps[1024]; /* We keep pointers to the components here */ - int i = 0, j, level,type; + GtkWidget *p = item; + struct tree_data *pd; + char *comps[1024]; /* We keep pointers to the components here */ + int i = 0, j, level,type; - /* Walk back up the tree, getting the private data */ + /* Walk back up the tree, getting the private data */ - level = GTK_TREE(item->parent)->level; + level = GTK_TREE(item->parent)->level; - /* Pick up this item's component info */ + /* Pick up this item's component info */ - pd = (struct tree_data *)gtk_object_get_user_data(GTK_OBJECT(item)); + pd = (struct tree_data *)gtk_object_get_user_data(GTK_OBJECT(item)); - comps[i++] = pd->name; - type = pd->type; + comps[i++] = pd->name; + type = pd->type; - while (level > 0 && type != SMBC_SERVER && type != SMBC_WORKGROUP) { + while (level > 0 && type != SMBC_SERVER && type != SMBC_WORKGROUP) { - /* Find the parent and extract the data etc ... */ + /* Find the parent and extract the data etc ... */ - p = GTK_WIDGET(p->parent); - p = GTK_WIDGET(GTK_TREE(p)->tree_owner); + p = GTK_WIDGET(p->parent); + p = GTK_WIDGET(GTK_TREE(p)->tree_owner); - pd = (struct tree_data *)gtk_object_get_user_data(GTK_OBJECT(p)); + pd = (struct tree_data *)gtk_object_get_user_data(GTK_OBJECT(p)); - level = GTK_TREE(item->parent)->level; + level = GTK_TREE(item->parent)->level; - comps[i++] = pd->name; - type = pd->type; + comps[i++] = pd->name; + type = pd->type; - } + } - /* - * Got a list of comps now, should check that we did not hit a workgroup - * when we got other things as well ... Later - * - * Now, build the path - */ + /* + * Got a list of comps now, should check that we did not hit a workgroup + * when we got other things as well ... Later + * + * Now, build the path + */ - snprintf(path_string, sizeof(path_string), "smb:/"); + snprintf(path_string, sizeof(path_string), "smb:/"); - for (j = i - 1; j >= 0; j--) { + for (j = i - 1; j >= 0; j--) { - strncat(path_string, "/", sizeof(path_string) - strlen(path_string)); - strncat(path_string, comps[j], sizeof(path_string) - strlen(path_string)); + strncat(path_string, "/", sizeof(path_string) - strlen(path_string)); + strncat(path_string, comps[j], sizeof(path_string) - strlen(path_string)); - } - - fprintf(stdout, "Path string = %s\n", path_string); + } - return path_string; + fprintf(stdout, "Path string = %s\n", path_string); + + return path_string; } struct tree_data *make_tree_data(guint32 type, const char *name) { - struct tree_data *p = (struct tree_data *)malloc(sizeof(struct tree_data)); + struct tree_data *p = (struct tree_data *)malloc(sizeof(struct tree_data)); - if (p) { + if (p) { - p->type = type; - strncpy(p->name, name, sizeof(p->name)); + p->type = type; + strncpy(p->name, name, sizeof(p->name)); - } + } - return p; + return p; } @@ -150,157 +150,157 @@ struct tree_data *make_tree_data(guint32 type, const char *name) static void cb_select_child (GtkWidget *root_tree, GtkWidget *child, GtkWidget *subtree) { - gint dh, err, dirlen; - char dirbuf[512]; - struct smbc_dirent *dirp; - struct stat st1; - char path[1024], path1[1024]; + gint dh, err, dirlen; + char dirbuf[512]; + struct smbc_dirent *dirp; + struct stat st1; + char path[1024], path1[1024]; + + g_print ("select_child called for root tree %p, subtree %p, child %p\n", + root_tree, subtree, child); - g_print ("select_child called for root tree %p, subtree %p, child %p\n", - root_tree, subtree, child); + /* Now, figure out what it is, and display it in the clist ... */ - /* Now, figure out what it is, and display it in the clist ... */ + gtk_clist_clear(GTK_CLIST(clist)); /* Clear the CLIST */ - gtk_clist_clear(GTK_CLIST(clist)); /* Clear the CLIST */ + /* Now, get the private data for the subtree */ - /* Now, get the private data for the subtree */ + strncpy(path, get_path(child), 1024); - strncpy(path, get_path(child), 1024); + if ((dh = smbc_opendir(path)) < 0) { /* Handle error */ - if ((dh = smbc_opendir(path)) < 0) { /* Handle error */ + g_print("cb_select_child: Could not open dir %s, %s\n", path, + strerror(errno)); - g_print("cb_select_child: Could not open dir %s, %s\n", path, - strerror(errno)); + gtk_main_quit(); - gtk_main_quit(); + return; - return; + } - } + while ((err = smbc_getdents(dh, (struct smbc_dirent *)dirbuf, + sizeof(dirbuf))) != 0) { - while ((err = smbc_getdents(dh, (struct smbc_dirent *)dirbuf, - sizeof(dirbuf))) != 0) { + if (err < 0) { - if (err < 0) { + g_print("cb_select_child: Could not read dir %s, %s\n", path, + strerror(errno)); - g_print("cb_select_child: Could not read dir %s, %s\n", path, - strerror(errno)); + gtk_main_quit(); - gtk_main_quit(); + return; - return; + } - } + dirp = (struct smbc_dirent *)dirbuf; - dirp = (struct smbc_dirent *)dirbuf; + while (err > 0) { + gchar col1[128], col2[128], col3[128], col4[128]; + gchar *rowdata[4] = {col1, col2, col3, col4}; - while (err > 0) { - gchar col1[128], col2[128], col3[128], col4[128]; - gchar *rowdata[4] = {col1, col2, col3, col4}; + dirlen = dirp->dirlen; - dirlen = dirp->dirlen; + /* Format each of the items ... */ - /* Format each of the items ... */ + strncpy(col1, dirp->name, 128); - strncpy(col1, dirp->name, 128); + col2[0] = col3[0] = col4[0] = (char)0; - col2[0] = col3[0] = col4[0] = (char)0; + switch (dirp->smbc_type) { - switch (dirp->smbc_type) { + case SMBC_WORKGROUP: - case SMBC_WORKGROUP: + break; - break; + case SMBC_SERVER: - case SMBC_SERVER: + strncpy(col2, (dirp->comment?dirp->comment:""), 128); - strncpy(col2, (dirp->comment?dirp->comment:""), 128); + break; - break; + case SMBC_FILE_SHARE: - case SMBC_FILE_SHARE: + strncpy(col2, (dirp->comment?dirp->comment:""), 128); - strncpy(col2, (dirp->comment?dirp->comment:""), 128); + break; - break; + case SMBC_PRINTER_SHARE: - case SMBC_PRINTER_SHARE: + strncpy(col2, (dirp->comment?dirp->comment:""), 128); + break; - strncpy(col2, (dirp->comment?dirp->comment:""), 128); - break; + case SMBC_COMMS_SHARE: - case SMBC_COMMS_SHARE: + break; - break; + case SMBC_IPC_SHARE: - case SMBC_IPC_SHARE: + break; - break; + case SMBC_DIR: + case SMBC_FILE: - case SMBC_DIR: - case SMBC_FILE: + /* Get stats on the file/dir and see what we have */ - /* Get stats on the file/dir and see what we have */ + if ((strcmp(dirp->name, ".") != 0) && + (strcmp(dirp->name, "..") != 0)) { - if ((strcmp(dirp->name, ".") != 0) && - (strcmp(dirp->name, "..") != 0)) { + strncpy(path1, path, sizeof(path1)); + strncat(path1, "/", sizeof(path) - strlen(path)); + strncat(path1, dirp->name, sizeof(path) - strlen(path)); - strncpy(path1, path, sizeof(path1)); - strncat(path1, "/", sizeof(path) - strlen(path)); - strncat(path1, dirp->name, sizeof(path) - strlen(path)); + if (smbc_stat(path1, &st1) < 0) { - if (smbc_stat(path1, &st1) < 0) { - - if (errno != EBUSY) { - - g_print("cb_select_child: Could not stat file %s, %s\n", path1, - strerror(errno)); - - gtk_main_quit(); + if (errno != EBUSY) { - return; + g_print("cb_select_child: Could not stat file %s, %s\n", path1, + strerror(errno)); - } - else { + gtk_main_quit(); - strncpy(col2, "Device or resource busy", sizeof(col2)); + return; - } - } - else { - /* Now format each of the relevant things ... */ + } + else { - snprintf(col2, sizeof(col2), "%c%c%c%c%c%c%c%c%c(%0X)", - (st1.st_mode&S_IRUSR?'r':'-'), - (st1.st_mode&S_IWUSR?'w':'-'), - (st1.st_mode&S_IXUSR?'x':'-'), - (st1.st_mode&S_IRGRP?'r':'-'), - (st1.st_mode&S_IWGRP?'w':'-'), - (st1.st_mode&S_IXGRP?'x':'-'), - (st1.st_mode&S_IROTH?'r':'-'), - (st1.st_mode&S_IWOTH?'w':'-'), - (st1.st_mode&S_IXOTH?'x':'-'), - st1.st_mode); - snprintf(col3, sizeof(col3), "%u", st1.st_size); - snprintf(col4, sizeof(col4), "%s", ctime(&st1.st_mtime)); - } - } + strncpy(col2, "Device or resource busy", sizeof(col2)); + + } + } + else { + /* Now format each of the relevant things ... */ + + snprintf(col2, sizeof(col2), "%c%c%c%c%c%c%c%c%c(%0X)", + (st1.st_mode&S_IRUSR?'r':'-'), + (st1.st_mode&S_IWUSR?'w':'-'), + (st1.st_mode&S_IXUSR?'x':'-'), + (st1.st_mode&S_IRGRP?'r':'-'), + (st1.st_mode&S_IWGRP?'w':'-'), + (st1.st_mode&S_IXGRP?'x':'-'), + (st1.st_mode&S_IROTH?'r':'-'), + (st1.st_mode&S_IWOTH?'w':'-'), + (st1.st_mode&S_IXOTH?'x':'-'), + st1.st_mode); + snprintf(col3, sizeof(col3), "%u", st1.st_size); + snprintf(col4, sizeof(col4), "%s", ctime(&st1.st_mtime)); + } + } - break; + break; - default: + default: - break; - } + break; + } - gtk_clist_append(GTK_CLIST(clist), rowdata); + gtk_clist_append(GTK_CLIST(clist), rowdata); - dirp = (struct smbc_dirent *) ((char *) dirp + dirlen); - err -= dirlen; + dirp = (struct smbc_dirent *) ((char *) dirp + dirlen); + err -= dirlen; - } + } - } + } } @@ -309,174 +309,174 @@ static void cb_unselect_child( GtkWidget *root_tree, GtkWidget *child, GtkWidget *subtree ) { - g_print ("unselect_child called for root tree %p, subtree %p, child %p\n", - root_tree, subtree, child); + g_print ("unselect_child called for root tree %p, subtree %p, child %p\n", + root_tree, subtree, child); } /* for all the GtkItem:: and GtkTreeItem:: signals */ static void cb_itemsignal( GtkWidget *item, gchar *signame ) { - GtkWidget *real_tree, *aitem, *subtree; - gchar *name; - GtkLabel *label; - gint dh, err, dirlen, level; - char dirbuf[512]; - struct smbc_dirent *dirp; - - label = GTK_LABEL (GTK_BIN (item)->child); - /* Get the text of the label */ - gtk_label_get (label, &name); + GtkWidget *real_tree, *aitem, *subtree; + gchar *name; + GtkLabel *label; + gint dh, err, dirlen, level; + char dirbuf[512]; + struct smbc_dirent *dirp; - level = GTK_TREE(item->parent)->level; + label = GTK_LABEL (GTK_BIN (item)->child); + /* Get the text of the label */ + gtk_label_get (label, &name); - /* Get the level of the tree which the item is in */ - g_print ("%s called for item %s->%p, level %d\n", signame, name, - item, GTK_TREE (item->parent)->level); + level = GTK_TREE(item->parent)->level; - real_tree = GTK_TREE_ITEM_SUBTREE(item); /* Get the subtree */ + /* Get the level of the tree which the item is in */ + g_print ("%s called for item %s->%p, level %d\n", signame, name, + item, GTK_TREE (item->parent)->level); - if (strncmp(signame, "expand", 6) == 0) { /* Expand called */ - char server[128]; + real_tree = GTK_TREE_ITEM_SUBTREE(item); /* Get the subtree */ - if ((dh = smbc_opendir(get_path(item))) < 0) { /* Handle error */ - gchar errmsg[256]; + if (strncmp(signame, "expand", 6) == 0) { /* Expand called */ + char server[128]; - g_print("cb_itemsignal: Could not open dir %s, %s\n", get_path(item), - strerror(errno)); + if ((dh = smbc_opendir(get_path(item))) < 0) { /* Handle error */ + gchar errmsg[256]; - snprintf(errmsg, sizeof(errmsg), "cb_itemsignal: Could not open dir %s, %s\n", get_path(item), strerror(errno)); + g_print("cb_itemsignal: Could not open dir %s, %s\n", get_path(item), + strerror(errno)); - error_message(errmsg); + snprintf(errmsg, sizeof(errmsg), "cb_itemsignal: Could not open dir %s, %s\n", get_path(item), strerror(errno)); - /* gtk_main_quit();*/ + error_message(errmsg); - return; + /* gtk_main_quit();*/ - } + return; - while ((err = smbc_getdents(dh, (struct smbc_dirent *)dirbuf, - sizeof(dirbuf))) != 0) { + } - if (err < 0) { /* An error, report it */ - gchar errmsg[256]; + while ((err = smbc_getdents(dh, (struct smbc_dirent *)dirbuf, + sizeof(dirbuf))) != 0) { - g_print("cb_itemsignal: Could not read dir smbc://, %s\n", - strerror(errno)); + if (err < 0) { /* An error, report it */ + gchar errmsg[256]; - snprintf(errmsg, sizeof(errmsg), "cb_itemsignal: Could not read dir smbc://, %s\n", strerror(errno)); + g_print("cb_itemsignal: Could not read dir smbc://, %s\n", + strerror(errno)); - error_message(errmsg); + snprintf(errmsg, sizeof(errmsg), "cb_itemsignal: Could not read dir smbc://, %s\n", strerror(errno)); - /* gtk_main_quit();*/ + error_message(errmsg); - return; + /* gtk_main_quit();*/ - } + return; - dirp = (struct smbc_dirent *)dirbuf; + } - while (err > 0) { - struct tree_data *my_data; + dirp = (struct smbc_dirent *)dirbuf; - dirlen = dirp->dirlen; + while (err > 0) { + struct tree_data *my_data; - my_data = make_tree_data(dirp->smbc_type, dirp->name); + dirlen = dirp->dirlen; - if (!my_data) { + my_data = make_tree_data(dirp->smbc_type, dirp->name); - g_print("Could not allocate space for tree_data: %s\n", - dirp->name); + if (!my_data) { - gtk_main_quit(); - return; + g_print("Could not allocate space for tree_data: %s\n", + dirp->name); - } + gtk_main_quit(); + return; - aitem = gtk_tree_item_new_with_label(dirp->name); + } - /* Connect all GtkItem:: and GtkTreeItem:: signals */ - gtk_signal_connect (GTK_OBJECT(aitem), "select", - GTK_SIGNAL_FUNC(cb_itemsignal), "select"); - gtk_signal_connect (GTK_OBJECT(aitem), "deselect", - GTK_SIGNAL_FUNC(cb_itemsignal), "deselect"); - gtk_signal_connect (GTK_OBJECT(aitem), "toggle", - GTK_SIGNAL_FUNC(cb_itemsignal), "toggle"); - gtk_signal_connect (GTK_OBJECT(aitem), "expand", - GTK_SIGNAL_FUNC(cb_itemsignal), "expand"); - gtk_signal_connect (GTK_OBJECT(aitem), "collapse", - GTK_SIGNAL_FUNC(cb_itemsignal), "collapse"); - /* Add it to the parent tree */ - gtk_tree_append (GTK_TREE(real_tree), aitem); + aitem = gtk_tree_item_new_with_label(dirp->name); - gtk_widget_show (aitem); + /* Connect all GtkItem:: and GtkTreeItem:: signals */ + gtk_signal_connect (GTK_OBJECT(aitem), "select", + GTK_SIGNAL_FUNC(cb_itemsignal), "select"); + gtk_signal_connect (GTK_OBJECT(aitem), "deselect", + GTK_SIGNAL_FUNC(cb_itemsignal), "deselect"); + gtk_signal_connect (GTK_OBJECT(aitem), "toggle", + GTK_SIGNAL_FUNC(cb_itemsignal), "toggle"); + gtk_signal_connect (GTK_OBJECT(aitem), "expand", + GTK_SIGNAL_FUNC(cb_itemsignal), "expand"); + gtk_signal_connect (GTK_OBJECT(aitem), "collapse", + GTK_SIGNAL_FUNC(cb_itemsignal), "collapse"); + /* Add it to the parent tree */ + gtk_tree_append (GTK_TREE(real_tree), aitem); - gtk_object_set_user_data(GTK_OBJECT(aitem), (gpointer)my_data); + gtk_widget_show (aitem); - fprintf(stdout, "Added: %s, len: %u\n", dirp->name, dirlen); + gtk_object_set_user_data(GTK_OBJECT(aitem), (gpointer)my_data); - if (dirp->smbc_type != SMBC_FILE && - dirp->smbc_type != SMBC_IPC_SHARE && - (strcmp(dirp->name, ".") != 0) && - (strcmp(dirp->name, "..") !=0)){ - - subtree = gtk_tree_new(); - gtk_tree_item_set_subtree(GTK_TREE_ITEM(aitem), subtree); + fprintf(stdout, "Added: %s, len: %u\n", dirp->name, dirlen); - gtk_signal_connect(GTK_OBJECT(subtree), "select_child", - GTK_SIGNAL_FUNC(cb_select_child), real_tree); - gtk_signal_connect(GTK_OBJECT(subtree), "unselect_child", - GTK_SIGNAL_FUNC(cb_unselect_child), real_tree); + if (dirp->smbc_type != SMBC_FILE && + dirp->smbc_type != SMBC_IPC_SHARE && + (strcmp(dirp->name, ".") != 0) && + (strcmp(dirp->name, "..") !=0)){ - } + subtree = gtk_tree_new(); + gtk_tree_item_set_subtree(GTK_TREE_ITEM(aitem), subtree); - dirp = (struct smbc_dirent *) ((char *) dirp + dirlen); - err -= dirlen; + gtk_signal_connect(GTK_OBJECT(subtree), "select_child", + GTK_SIGNAL_FUNC(cb_select_child), real_tree); + gtk_signal_connect(GTK_OBJECT(subtree), "unselect_child", + GTK_SIGNAL_FUNC(cb_unselect_child), real_tree); - } + } - } + dirp = (struct smbc_dirent *) ((char *) dirp + dirlen); + err -= dirlen; - smbc_closedir(dh); + } - } - else if (strncmp(signame, "collapse", 8) == 0) { - GtkWidget *subtree = gtk_tree_new(); + } - gtk_tree_remove_items(GTK_TREE(real_tree), GTK_TREE(real_tree)->children); + smbc_closedir(dh); - gtk_tree_item_set_subtree(GTK_TREE_ITEM(item), subtree); + } + else if (strncmp(signame, "collapse", 8) == 0) { + GtkWidget *subtree = gtk_tree_new(); + + gtk_tree_remove_items(GTK_TREE(real_tree), GTK_TREE(real_tree)->children); - gtk_signal_connect (GTK_OBJECT(subtree), "select_child", - GTK_SIGNAL_FUNC(cb_select_child), real_tree); - gtk_signal_connect (GTK_OBJECT(subtree), "unselect_child", - GTK_SIGNAL_FUNC(cb_unselect_child), real_tree); + gtk_tree_item_set_subtree(GTK_TREE_ITEM(item), subtree); - } + gtk_signal_connect (GTK_OBJECT(subtree), "select_child", + GTK_SIGNAL_FUNC(cb_select_child), real_tree); + gtk_signal_connect (GTK_OBJECT(subtree), "unselect_child", + GTK_SIGNAL_FUNC(cb_unselect_child), real_tree); + + } } static void cb_selection_changed( GtkWidget *tree ) { - GList *i; - - g_print ("selection_change called for tree %p\n", tree); - g_print ("selected objects are:\n"); - - i = GTK_TREE_SELECTION(tree); - while (i){ - gchar *name; - GtkLabel *label; - GtkWidget *item; - - /* Get a GtkWidget pointer from the list node */ - item = GTK_WIDGET (i->data); - label = GTK_LABEL (GTK_BIN (item)->child); - gtk_label_get (label, &name); - g_print ("\t%s on level %d\n", name, GTK_TREE - (item->parent)->level); - i = i->next; - } + GList *i; + + g_print ("selection_change called for tree %p\n", tree); + g_print ("selected objects are:\n"); + + i = GTK_TREE_SELECTION(tree); + while (i){ + gchar *name; + GtkLabel *label; + GtkWidget *item; + + /* Get a GtkWidget pointer from the list node */ + item = GTK_WIDGET (i->data); + label = GTK_LABEL (GTK_BIN (item)->child); + gtk_label_get (label, &name); + g_print ("\t%s on level %d\n", name, GTK_TREE + (item->parent)->level); + i = i->next; + } } /* @@ -484,331 +484,329 @@ static void cb_selection_changed( GtkWidget *tree ) */ static void cb_wholenet(GtkWidget *item, gchar *signame) { - GtkWidget *real_tree, *aitem, *subtree; - gchar *name; - GtkLabel *label; - gint dh, err, dirlen; - char dirbuf[512]; - struct smbc_dirent *dirp; - - label = GTK_LABEL (GTK_BIN (item)->child); - gtk_label_get (label, &name); - g_print ("%s called for item %s->%p, level %d\n", signame, name, - item, GTK_TREE (item->parent)->level); + GtkWidget *real_tree, *aitem, *subtree; + gchar *name; + GtkLabel *label; + gint dh, err, dirlen; + char dirbuf[512]; + struct smbc_dirent *dirp; - real_tree = GTK_TREE_ITEM_SUBTREE(item); /* Get the subtree */ + label = GTK_LABEL (GTK_BIN (item)->child); + gtk_label_get (label, &name); + g_print ("%s called for item %s->%p, level %d\n", signame, name, + item, GTK_TREE (item->parent)->level); - if (strncmp(signame, "expand", 6) == 0) { /* Expand called */ + real_tree = GTK_TREE_ITEM_SUBTREE(item); /* Get the subtree */ - if ((dh = smbc_opendir("smb://")) < 0) { /* Handle error */ + if (strncmp(signame, "expand", 6) == 0) { /* Expand called */ - g_print("cb_wholenet: Could not open dir smbc://, %s\n", - strerror(errno)); + if ((dh = smbc_opendir("smb://")) < 0) { /* Handle error */ - gtk_main_quit(); + g_print("cb_wholenet: Could not open dir smbc://, %s\n", + strerror(errno)); - return; + gtk_main_quit(); - } + return; - while ((err = smbc_getdents(dh, (struct smbc_dirent *)dirbuf, - sizeof(dirbuf))) != 0) { + } - if (err < 0) { /* An error, report it */ + while ((err = smbc_getdents(dh, (struct smbc_dirent *)dirbuf, + sizeof(dirbuf))) != 0) { - g_print("cb_wholenet: Could not read dir smbc://, %s\n", - strerror(errno)); + if (err < 0) { /* An error, report it */ - gtk_main_quit(); + g_print("cb_wholenet: Could not read dir smbc://, %s\n", + strerror(errno)); - return; + gtk_main_quit(); - } + return; - dirp = (struct smbc_dirent *)dirbuf; + } - while (err > 0) { - struct tree_data *my_data; + dirp = (struct smbc_dirent *)dirbuf; - dirlen = dirp->dirlen; + while (err > 0) { + struct tree_data *my_data; - my_data = make_tree_data(dirp->smbc_type, dirp->name); + dirlen = dirp->dirlen; - aitem = gtk_tree_item_new_with_label(dirp->name); + my_data = make_tree_data(dirp->smbc_type, dirp->name); - /* Connect all GtkItem:: and GtkTreeItem:: signals */ - gtk_signal_connect (GTK_OBJECT(aitem), "select", - GTK_SIGNAL_FUNC(cb_itemsignal), "select"); - gtk_signal_connect (GTK_OBJECT(aitem), "deselect", - GTK_SIGNAL_FUNC(cb_itemsignal), "deselect"); - gtk_signal_connect (GTK_OBJECT(aitem), "toggle", - GTK_SIGNAL_FUNC(cb_itemsignal), "toggle"); - gtk_signal_connect (GTK_OBJECT(aitem), "expand", - GTK_SIGNAL_FUNC(cb_itemsignal), "expand"); - gtk_signal_connect (GTK_OBJECT(aitem), "collapse", - GTK_SIGNAL_FUNC(cb_itemsignal), "collapse"); + aitem = gtk_tree_item_new_with_label(dirp->name); - gtk_tree_append (GTK_TREE(real_tree), aitem); - /* Show it - this can be done at any time */ - gtk_widget_show (aitem); + /* Connect all GtkItem:: and GtkTreeItem:: signals */ + gtk_signal_connect (GTK_OBJECT(aitem), "select", + GTK_SIGNAL_FUNC(cb_itemsignal), "select"); + gtk_signal_connect (GTK_OBJECT(aitem), "deselect", + GTK_SIGNAL_FUNC(cb_itemsignal), "deselect"); + gtk_signal_connect (GTK_OBJECT(aitem), "toggle", + GTK_SIGNAL_FUNC(cb_itemsignal), "toggle"); + gtk_signal_connect (GTK_OBJECT(aitem), "expand", + GTK_SIGNAL_FUNC(cb_itemsignal), "expand"); + gtk_signal_connect (GTK_OBJECT(aitem), "collapse", + GTK_SIGNAL_FUNC(cb_itemsignal), "collapse"); - gtk_object_set_user_data(GTK_OBJECT(aitem), (gpointer)my_data); + gtk_tree_append (GTK_TREE(real_tree), aitem); + /* Show it - this can be done at any time */ + gtk_widget_show (aitem); - fprintf(stdout, "Added: %s, len: %u\n", dirp->name, dirlen); + gtk_object_set_user_data(GTK_OBJECT(aitem), (gpointer)my_data); - subtree = gtk_tree_new(); + fprintf(stdout, "Added: %s, len: %u\n", dirp->name, dirlen); - gtk_tree_item_set_subtree(GTK_TREE_ITEM(aitem), subtree); + subtree = gtk_tree_new(); - gtk_signal_connect(GTK_OBJECT(subtree), "select_child", - GTK_SIGNAL_FUNC(cb_select_child), real_tree); - gtk_signal_connect(GTK_OBJECT(subtree), "unselect_child", - GTK_SIGNAL_FUNC(cb_unselect_child), real_tree); + gtk_tree_item_set_subtree(GTK_TREE_ITEM(aitem), subtree); - dirp = (struct smbc_dirent *) ((char *) dirp + dirlen); - err -= dirlen; + gtk_signal_connect(GTK_OBJECT(subtree), "select_child", + GTK_SIGNAL_FUNC(cb_select_child), real_tree); + gtk_signal_connect(GTK_OBJECT(subtree), "unselect_child", + GTK_SIGNAL_FUNC(cb_unselect_child), real_tree); - } + dirp = (struct smbc_dirent *) ((char *) dirp + dirlen); + err -= dirlen; - } + } - smbc_closedir(dh); + } - } - else { /* Must be collapse ... FIXME ... */ - GtkWidget *subtree = gtk_tree_new(); + smbc_closedir(dh); - gtk_tree_remove_items(GTK_TREE(real_tree), GTK_TREE(real_tree)->children); + } + else { /* Must be collapse ... FIXME ... */ + GtkWidget *subtree = gtk_tree_new(); - gtk_tree_item_set_subtree(GTK_TREE_ITEM(item), subtree); + gtk_tree_remove_items(GTK_TREE(real_tree), GTK_TREE(real_tree)->children); - gtk_signal_connect (GTK_OBJECT(subtree), "select_child", - GTK_SIGNAL_FUNC(cb_select_child), real_tree); - gtk_signal_connect (GTK_OBJECT(subtree), "unselect_child", - GTK_SIGNAL_FUNC(cb_unselect_child), real_tree); + gtk_tree_item_set_subtree(GTK_TREE_ITEM(item), subtree); + gtk_signal_connect (GTK_OBJECT(subtree), "select_child", + GTK_SIGNAL_FUNC(cb_select_child), real_tree); + gtk_signal_connect (GTK_OBJECT(subtree), "unselect_child", + GTK_SIGNAL_FUNC(cb_unselect_child), real_tree); - } + + } } /* Should put up a dialog box to ask the user for username and password */ -static void +static void auth_fn(const char *server, const char *share, char *workgroup, int wgmaxlen, char *username, int unmaxlen, char *password, int pwmaxlen) { - - strncpy(username, "test", unmaxlen); - strncpy(password, "test", pwmaxlen); - + strncpy(username, "test", unmaxlen); + strncpy(password, "test", pwmaxlen); } static char *col_titles[] = { - "Name", "Attributes", "Size", "Modification Date", + "Name", "Attributes", "Size", "Modification Date", }; int main( int argc, char *argv[] ) { - GtkWidget *window, *scrolled_win, *scrolled_win2, *tree; - GtkWidget *subtree, *item, *main_hbox, *r_pane, *l_pane; - gint err, dh; - gint i; - char dirbuf[512]; - struct smbc_dirent *dirp; + GtkWidget *window, *scrolled_win, *scrolled_win2, *tree; + GtkWidget *subtree, *item, *main_hbox, *r_pane, *l_pane; + gint err, dh; + gint i; + char dirbuf[512]; + struct smbc_dirent *dirp; - gtk_init (&argc, &argv); - - /* Init the smbclient library */ - - err = smbc_init(auth_fn, 10); - - /* Print an error response ... */ - - if (err < 0) { - - fprintf(stderr, "smbc_init returned %s (%i)\nDo you have a ~/.smb/smb.conf file?\n", strerror(errno), errno); - exit(1); - - } - - /* a generic toplevel window */ - window = gtk_window_new (GTK_WINDOW_TOPLEVEL); - gtk_widget_set_name(window, "main browser window"); - gtk_signal_connect (GTK_OBJECT(window), "delete_event", - GTK_SIGNAL_FUNC (gtk_main_quit), NULL); - gtk_window_set_title(GTK_WINDOW(window), "The Linux Windows Network Browser"); - gtk_widget_set_usize(GTK_WIDGET(window), 750, -1); - gtk_container_set_border_width (GTK_CONTAINER(window), 5); - - gtk_widget_show (window); - - /* A container for the two panes ... */ - - main_hbox = gtk_hbox_new(FALSE, 1); - gtk_container_border_width(GTK_CONTAINER(main_hbox), 1); - gtk_container_add(GTK_CONTAINER(window), main_hbox); - - gtk_widget_show(main_hbox); - - l_pane = gtk_hpaned_new(); - gtk_paned_gutter_size(GTK_PANED(l_pane), (GTK_PANED(l_pane))->handle_size); - r_pane = gtk_hpaned_new(); - gtk_paned_gutter_size(GTK_PANED(r_pane), (GTK_PANED(r_pane))->handle_size); - gtk_container_add(GTK_CONTAINER(main_hbox), l_pane); - gtk_widget_show(l_pane); + gtk_init (&argc, &argv); - /* A generic scrolled window */ - scrolled_win = gtk_scrolled_window_new (NULL, NULL); - gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolled_win), - GTK_POLICY_AUTOMATIC, - GTK_POLICY_AUTOMATIC); - gtk_widget_set_usize (scrolled_win, 150, 200); - gtk_container_add (GTK_CONTAINER(l_pane), scrolled_win); - gtk_widget_show (scrolled_win); + /* Init the smbclient library */ - /* Another generic scrolled window */ - scrolled_win2 = gtk_scrolled_window_new (NULL, NULL); - gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolled_win2), - GTK_POLICY_AUTOMATIC, - GTK_POLICY_AUTOMATIC); - gtk_widget_set_usize (scrolled_win2, 150, 200); - gtk_paned_add2 (GTK_PANED(l_pane), scrolled_win2); - gtk_widget_show (scrolled_win2); - - /* Create the root tree */ - tree = gtk_tree_new(); - g_print ("root tree is %p\n", tree); - /* connect all GtkTree:: signals */ - gtk_signal_connect (GTK_OBJECT(tree), "select_child", - GTK_SIGNAL_FUNC(cb_select_child), tree); - gtk_signal_connect (GTK_OBJECT(tree), "unselect_child", - GTK_SIGNAL_FUNC(cb_unselect_child), tree); - gtk_signal_connect (GTK_OBJECT(tree), "selection_changed", - GTK_SIGNAL_FUNC(cb_selection_changed), tree); - /* Add it to the scrolled window */ - gtk_scrolled_window_add_with_viewport (GTK_SCROLLED_WINDOW(scrolled_win), - tree); - /* Set the selection mode */ - gtk_tree_set_selection_mode (GTK_TREE(tree), - GTK_SELECTION_MULTIPLE); - /* Show it */ - gtk_widget_show (tree); - - /* Now, create a clist and attach it to the second pane */ + err = smbc_init(auth_fn, 10); - clist = gtk_clist_new_with_titles(4, col_titles); + /* Print an error response ... */ - gtk_container_add (GTK_CONTAINER(scrolled_win2), clist); + if (err < 0) { - gtk_widget_show(clist); + fprintf(stderr, "smbc_init returned %s (%i)\nDo you have a ~/.smb/smb.conf file?\n", strerror(errno), errno); + exit(1); - /* Now, build the top level display ... */ + } - if ((dh = smbc_opendir("smb://")) < 0) { + /* a generic toplevel window */ + window = gtk_window_new (GTK_WINDOW_TOPLEVEL); + gtk_widget_set_name(window, "main browser window"); + gtk_signal_connect (GTK_OBJECT(window), "delete_event", + GTK_SIGNAL_FUNC (gtk_main_quit), NULL); + gtk_window_set_title(GTK_WINDOW(window), "The Linux Windows Network Browser"); + gtk_widget_set_usize(GTK_WIDGET(window), 750, -1); + gtk_container_set_border_width (GTK_CONTAINER(window), 5); + + gtk_widget_show (window); + + /* A container for the two panes ... */ + + main_hbox = gtk_hbox_new(FALSE, 1); + gtk_container_border_width(GTK_CONTAINER(main_hbox), 1); + gtk_container_add(GTK_CONTAINER(window), main_hbox); + + gtk_widget_show(main_hbox); + + l_pane = gtk_hpaned_new(); + gtk_paned_gutter_size(GTK_PANED(l_pane), (GTK_PANED(l_pane))->handle_size); + r_pane = gtk_hpaned_new(); + gtk_paned_gutter_size(GTK_PANED(r_pane), (GTK_PANED(r_pane))->handle_size); + gtk_container_add(GTK_CONTAINER(main_hbox), l_pane); + gtk_widget_show(l_pane); + + /* A generic scrolled window */ + scrolled_win = gtk_scrolled_window_new (NULL, NULL); + gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolled_win), + GTK_POLICY_AUTOMATIC, + GTK_POLICY_AUTOMATIC); + gtk_widget_set_usize (scrolled_win, 150, 200); + gtk_container_add (GTK_CONTAINER(l_pane), scrolled_win); + gtk_widget_show (scrolled_win); + + /* Another generic scrolled window */ + scrolled_win2 = gtk_scrolled_window_new (NULL, NULL); + gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolled_win2), + GTK_POLICY_AUTOMATIC, + GTK_POLICY_AUTOMATIC); + gtk_widget_set_usize (scrolled_win2, 150, 200); + gtk_paned_add2 (GTK_PANED(l_pane), scrolled_win2); + gtk_widget_show (scrolled_win2); + + /* Create the root tree */ + tree = gtk_tree_new(); + g_print ("root tree is %p\n", tree); + /* connect all GtkTree:: signals */ + gtk_signal_connect (GTK_OBJECT(tree), "select_child", + GTK_SIGNAL_FUNC(cb_select_child), tree); + gtk_signal_connect (GTK_OBJECT(tree), "unselect_child", + GTK_SIGNAL_FUNC(cb_unselect_child), tree); + gtk_signal_connect (GTK_OBJECT(tree), "selection_changed", + GTK_SIGNAL_FUNC(cb_selection_changed), tree); + /* Add it to the scrolled window */ + gtk_scrolled_window_add_with_viewport (GTK_SCROLLED_WINDOW(scrolled_win), + tree); + /* Set the selection mode */ + gtk_tree_set_selection_mode (GTK_TREE(tree), + GTK_SELECTION_MULTIPLE); + /* Show it */ + gtk_widget_show (tree); + + /* Now, create a clist and attach it to the second pane */ + + clist = gtk_clist_new_with_titles(4, col_titles); + + gtk_container_add (GTK_CONTAINER(scrolled_win2), clist); + + gtk_widget_show(clist); + + /* Now, build the top level display ... */ + + if ((dh = smbc_opendir("smb://")) < 0) { + + fprintf(stderr, "Could not list workgroups: smb://: %s\n", + strerror(errno)); + + exit(1); - fprintf(stderr, "Could not list workgroups: smb://: %s\n", - strerror(errno)); + } - exit(1); + /* Create a tree item for Whole Network */ - } + item = gtk_tree_item_new_with_label ("Whole Network"); + /* Connect all GtkItem:: and GtkTreeItem:: signals */ + gtk_signal_connect (GTK_OBJECT(item), "select", + GTK_SIGNAL_FUNC(cb_itemsignal), "select"); + gtk_signal_connect (GTK_OBJECT(item), "deselect", + GTK_SIGNAL_FUNC(cb_itemsignal), "deselect"); + gtk_signal_connect (GTK_OBJECT(item), "toggle", + GTK_SIGNAL_FUNC(cb_itemsignal), "toggle"); + gtk_signal_connect (GTK_OBJECT(item), "expand", + GTK_SIGNAL_FUNC(cb_wholenet), "expand"); + gtk_signal_connect (GTK_OBJECT(item), "collapse", + GTK_SIGNAL_FUNC(cb_wholenet), "collapse"); + /* Add it to the parent tree */ + gtk_tree_append (GTK_TREE(tree), item); + /* Show it - this can be done at any time */ + gtk_widget_show (item); + + subtree = gtk_tree_new(); /* A subtree for Whole Network */ + + gtk_tree_item_set_subtree(GTK_TREE_ITEM(item), subtree); - /* Create a tree item for Whole Network */ + gtk_signal_connect (GTK_OBJECT(subtree), "select_child", + GTK_SIGNAL_FUNC(cb_select_child), tree); + gtk_signal_connect (GTK_OBJECT(subtree), "unselect_child", + GTK_SIGNAL_FUNC(cb_unselect_child), tree); - item = gtk_tree_item_new_with_label ("Whole Network"); - /* Connect all GtkItem:: and GtkTreeItem:: signals */ - gtk_signal_connect (GTK_OBJECT(item), "select", - GTK_SIGNAL_FUNC(cb_itemsignal), "select"); - gtk_signal_connect (GTK_OBJECT(item), "deselect", - GTK_SIGNAL_FUNC(cb_itemsignal), "deselect"); - gtk_signal_connect (GTK_OBJECT(item), "toggle", - GTK_SIGNAL_FUNC(cb_itemsignal), "toggle"); - gtk_signal_connect (GTK_OBJECT(item), "expand", - GTK_SIGNAL_FUNC(cb_wholenet), "expand"); - gtk_signal_connect (GTK_OBJECT(item), "collapse", - GTK_SIGNAL_FUNC(cb_wholenet), "collapse"); - /* Add it to the parent tree */ - gtk_tree_append (GTK_TREE(tree), item); - /* Show it - this can be done at any time */ - gtk_widget_show (item); - - subtree = gtk_tree_new(); /* A subtree for Whole Network */ - - gtk_tree_item_set_subtree(GTK_TREE_ITEM(item), subtree); - - gtk_signal_connect (GTK_OBJECT(subtree), "select_child", - GTK_SIGNAL_FUNC(cb_select_child), tree); - gtk_signal_connect (GTK_OBJECT(subtree), "unselect_child", - GTK_SIGNAL_FUNC(cb_unselect_child), tree); + /* Now, get the items in smb:/// and add them to the tree */ - /* Now, get the items in smb:/// and add them to the tree */ - - while ((err = smbc_getdents(dh, (struct smbc_dirent *)dirbuf, - sizeof(dirbuf))) != 0) { - - if (err < 0) { /* Handle the error */ - - fprintf(stderr, "Could not read directory for smbc:///: %s\n", - strerror(errno)); - - exit(1); - - } - - dirp = (struct smbc_dirent *)dirbuf; + while ((err = smbc_getdents(dh, (struct smbc_dirent *)dirbuf, + sizeof(dirbuf))) != 0) { - fprintf(stdout, "Dir len: %u\n", err); - - while (err > 0) { /* Extract each entry and make a sub-tree */ - struct tree_data *my_data; - int dirlen = dirp->dirlen; + if (err < 0) { /* Handle the error */ - my_data = make_tree_data(dirp->smbc_type, dirp->name); + fprintf(stderr, "Could not read directory for smbc:///: %s\n", + strerror(errno)); - item = gtk_tree_item_new_with_label(dirp->name); - /* Connect all GtkItem:: and GtkTreeItem:: signals */ - gtk_signal_connect (GTK_OBJECT(item), "select", - GTK_SIGNAL_FUNC(cb_itemsignal), "select"); - gtk_signal_connect (GTK_OBJECT(item), "deselect", - GTK_SIGNAL_FUNC(cb_itemsignal), "deselect"); - gtk_signal_connect (GTK_OBJECT(item), "toggle", - GTK_SIGNAL_FUNC(cb_itemsignal), "toggle"); - gtk_signal_connect (GTK_OBJECT(item), "expand", - GTK_SIGNAL_FUNC(cb_itemsignal), "expand"); - gtk_signal_connect (GTK_OBJECT(item), "collapse", - GTK_SIGNAL_FUNC(cb_itemsignal), "collapse"); - /* Add it to the parent tree */ - gtk_tree_append (GTK_TREE(tree), item); - /* Show it - this can be done at any time */ - gtk_widget_show (item); + exit(1); - gtk_object_set_user_data(GTK_OBJECT(item), (gpointer)my_data); + } - fprintf(stdout, "Added: %s, len: %u\n", dirp->name, dirlen); + dirp = (struct smbc_dirent *)dirbuf; - subtree = gtk_tree_new(); + fprintf(stdout, "Dir len: %u\n", err); - gtk_tree_item_set_subtree(GTK_TREE_ITEM(item), subtree); + while (err > 0) { /* Extract each entry and make a sub-tree */ + struct tree_data *my_data; + int dirlen = dirp->dirlen; - gtk_signal_connect (GTK_OBJECT(subtree), "select_child", - GTK_SIGNAL_FUNC(cb_select_child), tree); - gtk_signal_connect (GTK_OBJECT(subtree), "unselect_child", - GTK_SIGNAL_FUNC(cb_unselect_child), tree); + my_data = make_tree_data(dirp->smbc_type, dirp->name); - dirp = (struct smbc_dirent *) ((char *) dirp + dirlen); - err -= dirlen; + item = gtk_tree_item_new_with_label(dirp->name); + /* Connect all GtkItem:: and GtkTreeItem:: signals */ + gtk_signal_connect (GTK_OBJECT(item), "select", + GTK_SIGNAL_FUNC(cb_itemsignal), "select"); + gtk_signal_connect (GTK_OBJECT(item), "deselect", + GTK_SIGNAL_FUNC(cb_itemsignal), "deselect"); + gtk_signal_connect (GTK_OBJECT(item), "toggle", + GTK_SIGNAL_FUNC(cb_itemsignal), "toggle"); + gtk_signal_connect (GTK_OBJECT(item), "expand", + GTK_SIGNAL_FUNC(cb_itemsignal), "expand"); + gtk_signal_connect (GTK_OBJECT(item), "collapse", + GTK_SIGNAL_FUNC(cb_itemsignal), "collapse"); + /* Add it to the parent tree */ + gtk_tree_append (GTK_TREE(tree), item); + /* Show it - this can be done at any time */ + gtk_widget_show (item); - } + gtk_object_set_user_data(GTK_OBJECT(item), (gpointer)my_data); - } + fprintf(stdout, "Added: %s, len: %u\n", dirp->name, dirlen); + + subtree = gtk_tree_new(); + + gtk_tree_item_set_subtree(GTK_TREE_ITEM(item), subtree); + + gtk_signal_connect (GTK_OBJECT(subtree), "select_child", + GTK_SIGNAL_FUNC(cb_select_child), tree); + gtk_signal_connect (GTK_OBJECT(subtree), "unselect_child", + GTK_SIGNAL_FUNC(cb_unselect_child), tree); + + dirp = (struct smbc_dirent *) ((char *) dirp + dirlen); + err -= dirlen; + + } + + } - smbc_closedir(dh); /* FIXME, check for error :-) */ + smbc_closedir(dh); /* FIXME, check for error :-) */ - /* Show the window and loop endlessly */ - gtk_main(); - return 0; + /* Show the window and loop endlessly */ + gtk_main(); + return 0; } /* example-end */ |