svn commit: samba r23747 - in branches: SAMBA_3_0/source/utils SAMBA_3_0_26/source/utils

obnox at samba.org obnox at samba.org
Sat Jul 7 22:18:55 GMT 2007


Author: obnox
Date: 2007-07-07 22:18:54 +0000 (Sat, 07 Jul 2007)
New Revision: 23747

WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=rev&root=samba&rev=23747

Log:
Move formatting of a parameter's value into a value string 
to a function of its own. (for storing it in registry),
Eliminate the valtype variable : store everything as "sz".
Eliminate some trailing white spaces on the way.

Michael


Modified:
   branches/SAMBA_3_0/source/utils/net_conf.c
   branches/SAMBA_3_0_26/source/utils/net_conf.c


Changeset:
Modified: branches/SAMBA_3_0/source/utils/net_conf.c
===================================================================
--- branches/SAMBA_3_0/source/utils/net_conf.c	2007-07-07 21:41:59 UTC (rev 23746)
+++ branches/SAMBA_3_0/source/utils/net_conf.c	2007-07-07 22:18:54 UTC (rev 23747)
@@ -449,7 +449,84 @@
 	return werr;
 }
 
-static int import_process_service(TALLOC_CTX *ctx, 
+static char *parm_valstr(TALLOC_CTX *ctx, struct parm_struct *parm,
+			 struct share_params *share)
+{
+	char *valstr = NULL;
+	int i = 0;
+	void *ptr = parm->ptr;
+
+	if (parm->p_class == P_LOCAL && share->service >= 0) {
+		ptr = lp_local_ptr(share->service, ptr);
+	}
+
+	switch (parm->type) {
+	case P_CHAR:
+		valstr = talloc_asprintf(ctx, "%c", *(char *)ptr);
+		break;
+	case P_STRING:
+	case P_USTRING:
+		valstr = talloc_asprintf(ctx, "%s", *(char **)ptr);
+		break;
+	case P_GSTRING:
+	case P_UGSTRING:
+		valstr = talloc_asprintf(ctx, "%s", (char *)ptr);
+		break;
+	case P_BOOL:
+		valstr = talloc_asprintf(ctx, "%s", BOOLSTR(*(BOOL *)ptr));
+		break;
+	case P_BOOLREV:
+		valstr = talloc_asprintf(ctx, "%s", BOOLSTR(!*(BOOL *)ptr));
+		break;
+	case P_ENUM:
+        	for (i = 0; parm->enum_list[i].name; i++) {
+        	        if (*(int *)ptr == parm->enum_list[i].value)
+			{
+				valstr = talloc_asprintf(ctx, "%s",
+        	                         parm->enum_list[i].name);
+        	                break;
+        	        }
+        	}
+		break;
+	case P_OCTAL:
+		valstr = talloc_asprintf(ctx, "%s", octal_string(*(int *)ptr));
+		break;
+	case P_LIST:
+		valstr = talloc_strdup(ctx, "");
+		if ((char ***)ptr && *(char ***)ptr) {
+			char **list = *(char ***)ptr;
+			for (; *list; list++) {
+				/* surround strings with whitespace
+				 * in double quotes */
+				if (strchr_m(*list, ' '))
+				{
+					valstr = talloc_asprintf_append(
+						valstr, "\"%s\"%s",
+						*list,
+						 ((*(list+1))?", ":""));
+				}
+				else {
+					valstr = talloc_asprintf_append(
+						valstr, "%s%s", *list,
+						 ((*(list+1))?", ":""));
+				}
+			}
+		}
+		break;
+	case P_INTEGER:
+		valstr = talloc_asprintf(ctx, "%d", *(int *)ptr);
+		break;
+	case P_SEP:
+		break;
+	default:
+		valstr = talloc_asprintf(ctx, "<type unimplemented>\n");
+		break;
+	}
+
+	return valstr;
+}
+
+static int import_process_service(TALLOC_CTX *ctx,
 				  struct share_params *share)
 {
 	int ret = -1;
@@ -458,7 +535,6 @@
 	const char *servicename;
 	struct registry_key *key;
 	WERROR werr;
-	const char *valtype = NULL;
 	char *valstr = NULL;
 
 	servicename = (share->service == GLOBAL_SECTION_SNUM)?
@@ -482,93 +558,19 @@
 
 	while ((parm = lp_next_parameter(share->service, &pnum, 0)))
 	{
-		void *ptr = parm->ptr;
-		int i = 0;
-
-		if ((share->service < 0 && parm->p_class == P_LOCAL) 
+		if ((share->service < 0 && parm->p_class == P_LOCAL)
 		    && !(parm->flags & FLAG_GLOBAL))
 			continue;
 
-		if (parm->p_class == P_LOCAL && share->service >= 0) {
-			ptr = lp_local_ptr(share->service, ptr);
-		}
+		valstr = parm_valstr(ctx, parm, share);
 
-		valtype = "sz";
-
-		switch (parm->type) {
-		case P_CHAR:
-			valstr = talloc_asprintf(ctx, "%c", *(char *)ptr);
-			break;
-		case P_STRING:
-		case P_USTRING:
-			valstr = talloc_asprintf(ctx, "%s", *(char **)ptr);
-			break;
-		case P_GSTRING:
-		case P_UGSTRING:
-			valstr = talloc_asprintf(ctx, "%s", (char *)ptr);
-			break;
-		case P_BOOL:
-			valstr = talloc_asprintf(ctx, "%s", 
-						BOOLSTR(*(BOOL *)ptr));
-			break;
-		case P_BOOLREV:
-			valstr = talloc_asprintf(ctx, "%s", 
-						BOOLSTR(!*(BOOL *)ptr));
-			break;
-		case P_ENUM:
-                	for (i = 0; parm->enum_list[i].name; i++) {
-                	        if (*(int *)ptr == 
-				    parm->enum_list[i].value) 
-				{
-					valstr = talloc_asprintf(ctx, "%s",
-                	                         parm->enum_list[i].name);
-                	                break;
-                	        }
-                	}
-			break;
-		case P_OCTAL:
-			valstr = talloc_asprintf(ctx, "%s", octal_string(*(int *)ptr));
-			break;
-		case P_LIST:
-			valstr = talloc_strdup(ctx, "");
-			if ((char ***)ptr && *(char ***)ptr) {
-				char **list = *(char ***)ptr;
-				for (; *list; list++) {
-					/* surround strings with whitespace 
-					 * in double quotes */
-					if (strchr_m(*list, ' '))
-					{
-						valstr = talloc_asprintf_append(
-							valstr, "\"%s\"%s", 
-							*list, 
-							 ((*(list+1))?", ":""));
-					}
-					else {
-						valstr = talloc_asprintf_append(
-							valstr, "%s%s", *list, 
-							 ((*(list+1))?", ":""));
-					}
-				}
-			}
-			break;
-		case P_INTEGER:
-			valtype = "dword";
-			valstr = talloc_asprintf(ctx, "%d", *(int *)ptr);
-			break;
-		case P_SEP:
-			break;
-		default:
-			valstr = talloc_asprintf(ctx, "<type unimplemented>\n");
-			break;
-		}
-
 		if (parm->type != P_SEP) {
 			if (opt_testmode) {
 				d_printf("\t%s = %s\n", parm->label, valstr);
 			}
 			else {
-				werr = reg_setvalue_internal(key, parm->label, 
-							     valtype, valstr);
+				werr = reg_setvalue_internal(key, parm->label,
+							     "sz", valstr);
 				if (!W_ERROR_IS_OK(werr)) {
 					goto done;
 				}

Modified: branches/SAMBA_3_0_26/source/utils/net_conf.c
===================================================================
--- branches/SAMBA_3_0_26/source/utils/net_conf.c	2007-07-07 21:41:59 UTC (rev 23746)
+++ branches/SAMBA_3_0_26/source/utils/net_conf.c	2007-07-07 22:18:54 UTC (rev 23747)
@@ -449,7 +449,84 @@
 	return werr;
 }
 
-static int import_process_service(TALLOC_CTX *ctx, 
+static char *parm_valstr(TALLOC_CTX *ctx, struct parm_struct *parm,
+			 struct share_params *share)
+{
+	char *valstr = NULL;
+	int i = 0;
+	void *ptr = parm->ptr;
+
+	if (parm->p_class == P_LOCAL && share->service >= 0) {
+		ptr = lp_local_ptr(share->service, ptr);
+	}
+
+	switch (parm->type) {
+	case P_CHAR:
+		valstr = talloc_asprintf(ctx, "%c", *(char *)ptr);
+		break;
+	case P_STRING:
+	case P_USTRING:
+		valstr = talloc_asprintf(ctx, "%s", *(char **)ptr);
+		break;
+	case P_GSTRING:
+	case P_UGSTRING:
+		valstr = talloc_asprintf(ctx, "%s", (char *)ptr);
+		break;
+	case P_BOOL:
+		valstr = talloc_asprintf(ctx, "%s", BOOLSTR(*(BOOL *)ptr));
+		break;
+	case P_BOOLREV:
+		valstr = talloc_asprintf(ctx, "%s", BOOLSTR(!*(BOOL *)ptr));
+		break;
+	case P_ENUM:
+        	for (i = 0; parm->enum_list[i].name; i++) {
+        	        if (*(int *)ptr == parm->enum_list[i].value)
+			{
+				valstr = talloc_asprintf(ctx, "%s",
+        	                         parm->enum_list[i].name);
+        	                break;
+        	        }
+        	}
+		break;
+	case P_OCTAL:
+		valstr = talloc_asprintf(ctx, "%s", octal_string(*(int *)ptr));
+		break;
+	case P_LIST:
+		valstr = talloc_strdup(ctx, "");
+		if ((char ***)ptr && *(char ***)ptr) {
+			char **list = *(char ***)ptr;
+			for (; *list; list++) {
+				/* surround strings with whitespace
+				 * in double quotes */
+				if (strchr_m(*list, ' '))
+				{
+					valstr = talloc_asprintf_append(
+						valstr, "\"%s\"%s",
+						*list,
+						 ((*(list+1))?", ":""));
+				}
+				else {
+					valstr = talloc_asprintf_append(
+						valstr, "%s%s", *list,
+						 ((*(list+1))?", ":""));
+				}
+			}
+		}
+		break;
+	case P_INTEGER:
+		valstr = talloc_asprintf(ctx, "%d", *(int *)ptr);
+		break;
+	case P_SEP:
+		break;
+	default:
+		valstr = talloc_asprintf(ctx, "<type unimplemented>\n");
+		break;
+	}
+
+	return valstr;
+}
+
+static int import_process_service(TALLOC_CTX *ctx,
 				  struct share_params *share)
 {
 	int ret = -1;
@@ -458,7 +535,6 @@
 	const char *servicename;
 	struct registry_key *key;
 	WERROR werr;
-	const char *valtype = NULL;
 	char *valstr = NULL;
 
 	servicename = (share->service == GLOBAL_SECTION_SNUM)?
@@ -482,93 +558,19 @@
 
 	while ((parm = lp_next_parameter(share->service, &pnum, 0)))
 	{
-		void *ptr = parm->ptr;
-		int i = 0;
-
-		if ((share->service < 0 && parm->p_class == P_LOCAL) 
+		if ((share->service < 0 && parm->p_class == P_LOCAL)
 		    && !(parm->flags & FLAG_GLOBAL))
 			continue;
 
-		if (parm->p_class == P_LOCAL && share->service >= 0) {
-			ptr = lp_local_ptr(share->service, ptr);
-		}
+		valstr = parm_valstr(ctx, parm, share);
 
-		valtype = "sz";
-
-		switch (parm->type) {
-		case P_CHAR:
-			valstr = talloc_asprintf(ctx, "%c", *(char *)ptr);
-			break;
-		case P_STRING:
-		case P_USTRING:
-			valstr = talloc_asprintf(ctx, "%s", *(char **)ptr);
-			break;
-		case P_GSTRING:
-		case P_UGSTRING:
-			valstr = talloc_asprintf(ctx, "%s", (char *)ptr);
-			break;
-		case P_BOOL:
-			valstr = talloc_asprintf(ctx, "%s", 
-						BOOLSTR(*(BOOL *)ptr));
-			break;
-		case P_BOOLREV:
-			valstr = talloc_asprintf(ctx, "%s", 
-						BOOLSTR(!*(BOOL *)ptr));
-			break;
-		case P_ENUM:
-                	for (i = 0; parm->enum_list[i].name; i++) {
-                	        if (*(int *)ptr == 
-				    parm->enum_list[i].value) 
-				{
-					valstr = talloc_asprintf(ctx, "%s",
-                	                         parm->enum_list[i].name);
-                	                break;
-                	        }
-                	}
-			break;
-		case P_OCTAL:
-			valstr = talloc_asprintf(ctx, "%s", octal_string(*(int *)ptr));
-			break;
-		case P_LIST:
-			valstr = talloc_strdup(ctx, "");
-			if ((char ***)ptr && *(char ***)ptr) {
-				char **list = *(char ***)ptr;
-				for (; *list; list++) {
-					/* surround strings with whitespace 
-					 * in double quotes */
-					if (strchr_m(*list, ' '))
-					{
-						valstr = talloc_asprintf_append(
-							valstr, "\"%s\"%s", 
-							*list, 
-							 ((*(list+1))?", ":""));
-					}
-					else {
-						valstr = talloc_asprintf_append(
-							valstr, "%s%s", *list, 
-							 ((*(list+1))?", ":""));
-					}
-				}
-			}
-			break;
-		case P_INTEGER:
-			valtype = "dword";
-			valstr = talloc_asprintf(ctx, "%d", *(int *)ptr);
-			break;
-		case P_SEP:
-			break;
-		default:
-			valstr = talloc_asprintf(ctx, "<type unimplemented>\n");
-			break;
-		}
-
 		if (parm->type != P_SEP) {
 			if (opt_testmode) {
 				d_printf("\t%s = %s\n", parm->label, valstr);
 			}
 			else {
-				werr = reg_setvalue_internal(key, parm->label, 
-							     valtype, valstr);
+				werr = reg_setvalue_internal(key, parm->label,
+							     "sz", valstr);
 				if (!W_ERROR_IS_OK(werr)) {
 					goto done;
 				}



More information about the samba-cvs mailing list