At http://samba.sernet.de/ma/bzr/SAMBA_3_0-registry.bzr/
------------------------------------------------------------ revno: 5296 revision-id: [EMAIL PROTECTED] parent: [EMAIL PROTECTED] committer: Michael Adam <[EMAIL PROTECTED]> branch nick: SAMBA_3_0-registry.bzr timestamp: Wed 2007-03-21 16:59:01 +0100 message: * fix handling of local string type parameters (needed to get "ptr" correct before accessing the values). * add support for P_ENUM parameters 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-20 15:20:51 +0000 +++ b/source/utils/net_conf.c 2007-03-21 15:59:01 +0000 @@ -286,8 +286,7 @@ struct share_iterator *shares; struct share_params *share; struct parm_struct *parm; - int i = 0; - char *utf8_s1; + int pnum = 0; ctx = talloc_init("net_conf_import"); @@ -319,30 +318,51 @@ 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))) + 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 = ", i, + d_printf("TEST: param %3d : %s = ", pnum, parm->label); } switch (parm->type) { case P_CHAR: - d_printf("%c", *(char *)(parm->ptr)); + d_printf("%c", *(char *)ptr); break; case P_STRING: case P_USTRING: - d_printf("%s\n", *(char **)(parm->ptr)); + d_printf("%s\n", *(char **)ptr); break; case P_GSTRING: case P_UGSTRING: - d_printf("%s\n", (char *)(parm->ptr)); + d_printf("%s\n", (char *)ptr); break; case P_BOOL: - d_printf("%s\n", BOOLSTR(*(BOOL *)(parm->ptr))); + d_printf("%s\n", BOOLSTR(*(BOOL *)ptr)); break; case P_BOOLREV: - d_printf("%s\n", BOOLSTR(!*(BOOL *)(parm->ptr))); + 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_LIST: + d_printf("<type list coming soon...>\n"); break; case P_SEP: break;