summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKai Blin <kai@samba.org>2008-05-22 09:41:21 +0200
committerKai Blin <kai@samba.org>2008-06-10 09:45:19 +0200
commit44c260743cc01d7fa07b66b771b94de98b5b7444 (patch)
tree728926ad2d7a93bb1af3e2747816af40f6adf149
parent6fd35d25bff4e1ceef07613c732dd7800afda35f (diff)
downloadsamba-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.h1
-rw-r--r--source3/utils/net_proto.h2
-rw-r--r--source3/utils/net_util.c27
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;
+}
+