Rev 5296: * fix handling of local string type parameters (needed to
get "ptr" in http://samba.sernet.de/ma/bzr/SAMBA_3_0-registry.bzr/
Michael Adam
ma at sernet.de
Wed Mar 21 15:59:04 GMT 2007
At http://samba.sernet.de/ma/bzr/SAMBA_3_0-registry.bzr/
------------------------------------------------------------
revno: 5296
revision-id: ma at sernet.de-20070321155901-50f3cb442459b7e5
parent: ma at sernet.de-20070321111540-96c903c02ca88d77
committer: Michael Adam <ma at sernet.de>
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;
More information about the samba-cvs
mailing list