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;

Reply via email to