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