Rev 5292: First _unfinished_ version of "net conf import". in http://samba.sernet.de/ma/bzr/SAMBA_3_0-registry.bzr/

Michael Adam ma at sernet.de
Tue Mar 20 15:20:54 GMT 2007


At http://samba.sernet.de/ma/bzr/SAMBA_3_0-registry.bzr/

------------------------------------------------------------
revno: 5292
revision-id: ma at sernet.de-20070320152051-87cfd94a35b0d6b4
parent: ma at sernet.de-20070319133658-0f42afdc9ca9540f
committer: Michael Adam <ma at sernet.de>
branch nick: SAMBA_3_0-registry.bzr
timestamp: Tue 2007-03-20 16:20:51 +0100
message:
  First _unfinished_ version of "net conf import".
  This function is to import registry shares from a file
  in smb.conf format. Currently it loads a file given on
  the command line via lp_load and dumps the read config
  out to stdout. Once the loop is finished, the data will
  be put into the registry instead of dumped.
modified:
  source/utils/net_conf.c        net_conf.c-20070228210606-uywdn1acd043wgvt-1
=== modified file 'source/utils/net_conf.c'
--- a/source/utils/net_conf.c	2007-03-13 16:52:01 +0000
+++ b/source/utils/net_conf.c	2007-03-20 15:20:51 +0000
@@ -44,6 +44,24 @@
  * usage functions
  */
 
+static int net_conf_list_usage(int argc, const char **argv)
+{
+	d_printf("USAGE: net conf list\n");
+	return -1;
+}
+
+static int net_conf_import_usage(int argc, const char**argv)
+{
+	d_printf("USAGE: net conf import <filename>\n");
+	return -1;
+}
+
+static int net_conf_listshares_usage(int argc, const char **argv)
+{
+	d_printf("USAGE: net conf listshares\n");
+	return -1;
+}
+
 static int net_conf_showshare_usage(int argc, const char **argv)
 {
 	d_printf("USAGE: net conf showshare <sharename>\n");
@@ -89,18 +107,6 @@
 	return -1;
 }
 
-static int net_conf_list_usage(int argc, const char **argv)
-{
-	d_printf("USAGE: net conf list\n");
-	return -1;
-}
-
-static int net_conf_listshares_usage(int argc, const char **argv)
-{
-	d_printf("USAGE: net conf listshares\n");
-	return -1;
-}
-
 
 /*
  * Helper functions
@@ -272,6 +278,89 @@
 	return ret;
 }
 
+int net_conf_import(int argc, const char **argv)
+{
+	int ret = -1;
+	const char *filename = NULL;
+	TALLOC_CTX *ctx;
+	struct share_iterator *shares;
+	struct share_params *share;
+	struct parm_struct *parm;
+	int i = 0;
+	char *utf8_s1;
+
+	ctx = talloc_init("net_conf_import");
+
+	if (argc != 1) {
+		net_conf_import_usage(argc, argv);
+		goto done;
+	}
+
+	filename = argv[0];
+	DEBUG(3,("net_conf_import: reading configuration from file %s.\n",
+		filename));
+
+	/* TODO: check for existence and readability */
+
+	if (!lp_load(filename, 
+		     False,     /* global_only */
+		     False,     /* save_defaults */
+		     False,     /* add_ipc */
+		     False))    /* initialize_globals */
+	{
+		d_fprintf(stderr, "Error parsing configuration file.\n");
+		goto done;
+	}
+
+	if (!(shares = share_list_all(ctx))) {
+		d_fprintf(stderr, "Could not list shares...\n");
+		goto done;
+	}
+	while ((share = next_share(shares)) != NULL) {
+		d_printf("TEST: snum    %i : [%s]\n", share->service,
+			 lp_servicename(share->service));
+		i = 0;
+		while ((parm = lp_next_parameter(share->service, &i, 0)))
+		{
+			if (parm->type != P_SEP) {
+				d_printf("TEST: param %3d : %s = ", i, 
+					 parm->label);
+			}
+			switch (parm->type) {
+			case P_CHAR:
+				d_printf("%c", *(char *)(parm->ptr));
+				break;
+			case P_STRING:
+			case P_USTRING:
+				d_printf("%s\n", *(char **)(parm->ptr));
+				break;
+			case P_GSTRING:
+			case P_UGSTRING:
+				d_printf("%s\n", (char *)(parm->ptr));
+				break;
+			case P_BOOL:
+				d_printf("%s\n", BOOLSTR(*(BOOL *)(parm->ptr)));
+				break;
+			case P_BOOLREV:
+				d_printf("%s\n", BOOLSTR(!*(BOOL *)(parm->ptr)));
+				break;
+			case P_SEP:
+				break;
+			default:
+				d_printf("<type unimplemented>\n");
+				break;
+			}
+		}
+		d_printf("TEST: -----------\n");
+	}
+
+	ret = 0;
+	
+done:
+	TALLOC_FREE(ctx);
+	return ret;
+}
+
 int net_conf_listshares(int argc, const char **argv)
 {
 	WERROR werr = WERR_OK;
@@ -722,6 +811,8 @@
 	struct functable2 func[] = {
 		{"list", net_conf_list, 
 		 "Dump the complete configuration in smb.conf like format."},
+		{"import", net_conf_import,
+		 "Import configuration from file in smb.conf format."},
 		{"listshares", net_conf_listshares, 
 		 "List the registry shares."},
 		{"showshare", net_conf_showshare, 



More information about the samba-cvs mailing list