Rev 5301: refactoring of import: put processing of one service into a separate in http://samba.sernet.de/ma/bzr/SAMBA_3_0-registry.bzr/

Michael Adam ma at sernet.de
Thu Mar 22 16:58:56 GMT 2007


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

------------------------------------------------------------
revno: 5301
revision-id: ma at sernet.de-20070322165854-f4aa27d9cbfc8d11
parent: ma at sernet.de-20070322144222-a56026b171ee1a35
committer: Michael Adam <ma at sernet.de>
branch nick: SAMBA_3_0-registry.bzr
timestamp: Thu 2007-03-22 17:58:54 +0100
message:
  refactoring of import: put processing of one service into a separate 
  function to allow for using it for the global section, too. 
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-22 14:42:22 +0000
+++ b/source/utils/net_conf.c	2007-03-22 16:58:54 +0000
@@ -281,6 +281,88 @@
 	return werr; 
 }
 
+static int import_process_service(struct share_params *share) 
+{
+	int ret = -1;
+	struct parm_struct *parm;
+	int pnum = 0;
+
+	d_printf("TEST: snum    %i : [%s]\n", share->service,
+		 lp_servicename(share->service));
+	while ((parm = lp_next_parameter(share->service, &pnum, 0)))
+	{
+		void *ptr = parm->ptr;
+		int i = 0;
+
+		if (parm->p_class == P_LOCAL && share->service >= 0) {
+			ptr = lp_local_ptr(share->service, ptr);
+		}
+
+		if (parm->type != P_SEP) {
+			d_printf("TEST: param %3d : %s = ", pnum, 
+				 parm->label);
+		}
+		switch (parm->type) {
+		case P_CHAR:
+			d_printf("%c", *(char *)ptr);
+			break;
+		case P_STRING:
+		case P_USTRING:
+			d_printf("%s\n", *(char **)ptr);
+			break;
+		case P_GSTRING:
+		case P_UGSTRING:
+			d_printf("%s\n", (char *)ptr);
+			break;
+		case P_BOOL:
+			d_printf("%s\n", BOOLSTR(*(BOOL *)ptr));
+			break;
+		case P_BOOLREV:
+			d_printf("%s\n", BOOLSTR(!*(BOOL *)ptr));
+			break;
+		case P_ENUM:
+                	for (i = 0; parm->enum_list[i].name; i++) {
+                	        if (*(int *)ptr == 
+				    parm->enum_list[i].value) 
+				{
+                	                d_printf("%s\n",
+                	                         parm->enum_list[i].name);
+                	                break;
+                	        }
+                	}
+			break;
+		case P_OCTAL:
+			d_printf("%s\n", octal_string(*(int *)ptr));
+			break;
+		case P_LIST:
+			if ((char ***)ptr && *(char ***)ptr) {
+				char **list = *(char ***)ptr;
+				for (; *list; list++) {
+					/* surround strings with whitespace 
+					 * in double quotes */
+					if ( strchr_m( *list, ' ' ) )
+						d_printf("\"%s\"%s", *list, 
+							 ((*(list+1))?", ":""));
+					else
+						d_printf("%s%s", *list, 
+							 ((*(list+1))?", ":""));
+				}
+			}
+			d_printf("\n");
+			break;
+		case P_SEP:
+			break;
+		default:
+			d_printf("<type unimplemented>\n");
+			break;
+		}
+	}
+	d_printf("TEST: -----------\n");
+
+	ret = 0;
+	return ret;
+}
+
 /*
  * the conf functions 
  */
@@ -357,8 +439,6 @@
 	TALLOC_CTX *ctx;
 	struct share_iterator *shares;
 	struct share_params *share;
-	struct parm_struct *parm;
-	int pnum = 0;
 
 	ctx = talloc_init("net_conf_import");
 
@@ -390,75 +470,9 @@
 		goto done;
 	}
 	while ((share = next_share(shares)) != NULL) {
-		d_printf("TEST: snum    %i : [%s]\n", share->service,
-			 lp_servicename(share->service));
-		pnum = 0;
-		while ((parm = lp_next_parameter(share->service, &pnum, 0)))
-		{
-			void *ptr = parm->ptr;
-			int i = 0;
-
-			if (parm->p_class == P_LOCAL && share->service >= 0) {
-				ptr = lp_local_ptr(share->service, ptr);
-			}
-
-			if (parm->type != P_SEP) {
-				d_printf("TEST: param %3d : %s = ", pnum, 
-					 parm->label);
-			}
-			switch (parm->type) {
-			case P_CHAR:
-				d_printf("%c", *(char *)ptr);
-				break;
-			case P_STRING:
-			case P_USTRING:
-				d_printf("%s\n", *(char **)ptr);
-				break;
-			case P_GSTRING:
-			case P_UGSTRING:
-				d_printf("%s\n", (char *)ptr);
-				break;
-			case P_BOOL:
-				d_printf("%s\n", BOOLSTR(*(BOOL *)ptr));
-				break;
-			case P_BOOLREV:
-				d_printf("%s\n", BOOLSTR(!*(BOOL *)ptr));
-				break;
-			case P_ENUM:
-                        	for (i = 0; parm->enum_list[i].name; i++) {
-                        	        if (*(int *)ptr == 
-					    parm->enum_list[i].value) 
-					{
-                        	                d_printf("%s\n",
-                        	                         parm->enum_list[i].name);
-                        	                break;
-                        	        }
-                        	}
-				break;
-			case P_OCTAL:
-				d_printf("%s\n", octal_string(*(int *)ptr));
-				break;
-			case P_LIST:
-				if ((char ***)ptr && *(char ***)ptr) {
-					char **list = *(char ***)ptr;
-					for (; *list; list++) {
-						/* surround strings with whitespace in double quotes */
-						if ( strchr_m( *list, ' ' ) )
-							d_printf("\"%s\"%s", *list, ((*(list+1))?", ":""));
-						else
-							d_printf("%s%s", *list, ((*(list+1))?", ":""));
-					}
-				}
-				d_printf("\n");
-				break;
-			case P_SEP:
-				break;
-			default:
-				d_printf("<type unimplemented>\n");
-				break;
-			}
+		if (import_process_service(share)!= 0) {
+			break;
 		}
-		d_printf("TEST: -----------\n");
 	}
 
 	ret = 0;



More information about the samba-cvs mailing list