diff options
author | Kai Blin <kai@samba.org> | 2008-05-22 09:41:21 +0200 |
---|---|---|
committer | Kai Blin <kai@samba.org> | 2008-06-10 09:45:19 +0200 |
commit | 44c260743cc01d7fa07b66b771b94de98b5b7444 (patch) | |
tree | 728926ad2d7a93bb1af3e2747816af40f6adf149 | |
parent | 6fd35d25bff4e1ceef07613c732dd7800afda35f (diff) | |
download | samba-44c260743cc01d7fa07b66b771b94de98b5b7444.tar.gz samba-44c260743cc01d7fa07b66b771b94de98b5b7444.tar.bz2 samba-44c260743cc01d7fa07b66b771b94de98b5b7444.zip |
net: Add net_run_function3
(This used to be commit ba1108f06ae5860c8f418dc383b027068780abf9)
-rw-r--r-- | source3/utils/net.h | 1 | ||||
-rw-r--r-- | source3/utils/net_proto.h | 2 | ||||
-rw-r--r-- | source3/utils/net_util.c | 27 |
3 files changed, 30 insertions, 0 deletions
diff --git a/source3/utils/net.h b/source3/utils/net.h index a5078d0266..b816aec4e6 100644 --- a/source3/utils/net.h +++ b/source3/utils/net.h @@ -61,6 +61,7 @@ struct net_context { bool smb_encrypt; struct libnetapi_ctx *netapi_ctx; + bool display_usage; const char *share_type[]; }; diff --git a/source3/utils/net_proto.h b/source3/utils/net_proto.h index 5af9d9e2cd..31ee584c4c 100644 --- a/source3/utils/net_proto.h +++ b/source3/utils/net_proto.h @@ -460,6 +460,8 @@ int net_run_function(struct net_context *c, int argc, const char **argv, int argc, const char **argv)); int net_run_function2(struct net_context *c, int argc, const char **argv, const char *whoami, struct functable2 *table); +int net_run_function3(struct net_context *c, int argc, const char **argv, + const char *whoami, struct functable3 *table); /* The following definitions come from utils/netlookup.c */ diff --git a/source3/utils/net_util.c b/source3/utils/net_util.c index 20f004b790..c641e61c5c 100644 --- a/source3/utils/net_util.c +++ b/source3/utils/net_util.c @@ -592,3 +592,30 @@ int net_run_function2(struct net_context *c, int argc, const char **argv, return -1; } +int net_run_function3(struct net_context *c, int argc, const char **argv, + const char *whoami, struct functable3 *table) +{ + int i; + if (argc != 0) { + for (i=0; table[i].funcname != NULL; i++) { + if (StrCaseCmp(argv[0], table[i].funcname) == 0) + return table[i].fn(c, argc-1, argv+1); + } + } + + if (c->display_usage == false) { + d_fprintf(stderr, "Invalid command: %s %s\n", whoami, + (argc > 0)?argv[0]:""); + } + d_printf("Usage:\n"); + for (i=0; table[i].funcname != NULL; i++) { + if(c->display_usage == false) + d_printf("%s %-15s %s\n", whoami, table[i].funcname, + table[i].description); + else + d_printf("%s\n", table[i].usage); + } + + return c->display_usage?0:-1; +} + |