Author: jpeach Date: 2006-03-11 10:59:03 +0000 (Sat, 11 Mar 2006) New Revision: 14207
WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=rev&root=samba&rev=14207 Log: Convert the lp_acl_compatibility() param into an enum. Modified: branches/SAMBA_3_0/source/include/smb.h branches/SAMBA_3_0/source/param/loadparm.c branches/SAMBA_3_0/source/smbd/posix_acls.c trunk/source/include/smb.h trunk/source/param/loadparm.c trunk/source/smbd/posix_acls.c Changeset: Modified: branches/SAMBA_3_0/source/include/smb.h =================================================================== --- branches/SAMBA_3_0/source/include/smb.h 2006-03-11 10:45:40 UTC (rev 14206) +++ branches/SAMBA_3_0/source/include/smb.h 2006-03-11 10:59:03 UTC (rev 14207) @@ -1441,6 +1441,8 @@ /* case handling */ enum case_handling {CASE_LOWER,CASE_UPPER}; +/* ACL compatibility */ +enum acl_compatibility {ACL_COMPAT_AUTO, ACL_COMPAT_WINNT, ACL_COMPAT_WIN2K}; /* * Global value meaing that the smb_uid field should be * ingored (in share level security and protocol level == CORE) Modified: branches/SAMBA_3_0/source/param/loadparm.c =================================================================== --- branches/SAMBA_3_0/source/param/loadparm.c 2006-03-11 10:45:40 UTC (rev 14206) +++ branches/SAMBA_3_0/source/param/loadparm.c 2006-03-11 10:59:03 UTC (rev 14207) @@ -622,7 +622,6 @@ static BOOL handle_netbios_aliases( int snum, const char *pszParmValue, char **ptr ); static BOOL handle_netbios_scope( int snum, const char *pszParmValue, char **ptr ); static BOOL handle_charset( int snum, const char *pszParmValue, char **ptr ); -static BOOL handle_acl_compatibility( int snum, const char *pszParmValue, char **ptr); static BOOL handle_printing( int snum, const char *pszParmValue, char **ptr); static void set_server_role(void); @@ -778,6 +777,13 @@ {-1, NULL} }; +/* ACL compatibility options. */ +static const struct enum_list enum_acl_compat_vals[] = { + { ACL_COMPAT_AUTO, "auto" }, + { ACL_COMPAT_WINNT, "winnt" }, + { ACL_COMPAT_WIN2K, "win2k" }, + { -1, NULL} +}; /* Do you want session setups at user level security with a invalid @@ -969,7 +975,7 @@ {"disable netbios", P_BOOL, P_GLOBAL, &Globals.bDisableNetbios, NULL, NULL, FLAG_ADVANCED}, {"reset on zero vc", P_BOOL, P_GLOBAL, &Globals.bResetOnZeroVC, NULL, NULL, FLAG_ADVANCED}, - {"acl compatibility", P_STRING, P_GLOBAL, &Globals.szAclCompat, handle_acl_compatibility, NULL, FLAG_ADVANCED | FLAG_SHARE | FLAG_GLOBAL}, + {"acl compatibility", P_STRING, P_GLOBAL, &Globals.szAclCompat, NULL, enum_acl_compat_vals, FLAG_ADVANCED | FLAG_SHARE | FLAG_GLOBAL}, {"defer sharing violations", P_BOOL, P_GLOBAL, &Globals.bDeferSharingViolations, NULL, NULL, FLAG_ADVANCED | FLAG_GLOBAL}, {"ea support", P_BOOL, P_LOCAL, &sDefault.bEASupport, NULL, NULL, FLAG_ADVANCED | FLAG_SHARE | FLAG_GLOBAL}, {"nt acl support", P_BOOL, P_LOCAL, &sDefault.bNTAclSupport, NULL, NULL, FLAG_ADVANCED | FLAG_SHARE | FLAG_GLOBAL}, @@ -1832,7 +1838,7 @@ FN_GLOBAL_CONST_STRING(lp_template_homedir, &Globals.szTemplateHomedir) FN_GLOBAL_CONST_STRING(lp_template_shell, &Globals.szTemplateShell) FN_GLOBAL_CONST_STRING(lp_winbind_separator, &Globals.szWinbindSeparator) -FN_GLOBAL_STRING(lp_acl_compatibility, &Globals.szAclCompat) +FN_GLOBAL_INTEGER(lp_acl_compatibility, &Globals.szAclCompat) FN_GLOBAL_BOOL(lp_winbind_enum_users, &Globals.bWinbindEnumUsers) FN_GLOBAL_BOOL(lp_winbind_enum_groups, &Globals.bWinbindEnumGroups) FN_GLOBAL_BOOL(lp_winbind_use_default_domain, &Globals.bWinbindUseDefaultDomain) @@ -3305,23 +3311,6 @@ return lp_string(Globals.szLdapSuffix); } -/*************************************************************************** -***************************************************************************/ - -static BOOL handle_acl_compatibility(int snum, const char *pszParmValue, char **ptr) -{ - if (strequal(pszParmValue, "auto")) - string_set(ptr, ""); - else if (strequal(pszParmValue, "winnt")) - string_set(ptr, "winnt"); - else if (strequal(pszParmValue, "win2k")) - string_set(ptr, "win2k"); - else - return False; - - return True; -} - /**************************************************************************** set the value for a P_ENUM ***************************************************************************/ Modified: branches/SAMBA_3_0/source/smbd/posix_acls.c =================================================================== --- branches/SAMBA_3_0/source/smbd/posix_acls.c 2006-03-11 10:45:40 UTC (rev 14206) +++ branches/SAMBA_3_0/source/smbd/posix_acls.c 2006-03-11 10:59:03 UTC (rev 14207) @@ -783,15 +783,15 @@ static BOOL nt4_compatible_acls(void) { - const char *compat = lp_acl_compatibility(); + int compat = lp_acl_compatibility(); - if (*compat == '\0') { + if (compat == ACL_COMPAT_AUTO) { enum remote_arch_types ra_type = get_remote_arch(); /* Automatically adapt to client */ return (ra_type <= RA_WINNT); } else - return (strequal(compat, "winnt")); + return (compat == ACL_COMPAT_WINNT); } Modified: trunk/source/include/smb.h =================================================================== --- trunk/source/include/smb.h 2006-03-11 10:45:40 UTC (rev 14206) +++ trunk/source/include/smb.h 2006-03-11 10:59:03 UTC (rev 14207) @@ -1455,6 +1455,8 @@ /* case handling */ enum case_handling {CASE_LOWER,CASE_UPPER}; +/* ACL compatibility */ +enum acl_compatibility {ACL_COMPAT_AUTO, ACL_COMPAT_WINNT, ACL_COMPAT_WIN2K}; /* * Global value meaing that the smb_uid field should be * ingored (in share level security and protocol level == CORE) Modified: trunk/source/param/loadparm.c =================================================================== --- trunk/source/param/loadparm.c 2006-03-11 10:45:40 UTC (rev 14206) +++ trunk/source/param/loadparm.c 2006-03-11 10:59:03 UTC (rev 14207) @@ -622,7 +622,6 @@ static BOOL handle_netbios_aliases( int snum, const char *pszParmValue, char **ptr ); static BOOL handle_netbios_scope( int snum, const char *pszParmValue, char **ptr ); static BOOL handle_charset( int snum, const char *pszParmValue, char **ptr ); -static BOOL handle_acl_compatibility( int snum, const char *pszParmValue, char **ptr); static BOOL handle_printing( int snum, const char *pszParmValue, char **ptr); static void set_server_role(void); @@ -778,6 +777,13 @@ {-1, NULL} }; +/* ACL compatibility options. */ +static const struct enum_list enum_acl_compat_vals[] = { + { ACL_COMPAT_AUTO, "auto" }, + { ACL_COMPAT_WINNT, "winnt" }, + { ACL_COMPAT_WIN2K, "win2k" }, + { -1, NULL} +}; /* Do you want session setups at user level security with a invalid @@ -969,7 +975,7 @@ {"disable netbios", P_BOOL, P_GLOBAL, &Globals.bDisableNetbios, NULL, NULL, FLAG_ADVANCED}, {"reset on zero vc", P_BOOL, P_GLOBAL, &Globals.bResetOnZeroVC, NULL, NULL, FLAG_ADVANCED}, - {"acl compatibility", P_STRING, P_GLOBAL, &Globals.szAclCompat, handle_acl_compatibility, NULL, FLAG_ADVANCED | FLAG_SHARE | FLAG_GLOBAL}, + {"acl compatibility", P_STRING, P_GLOBAL, &Globals.szAclCompat, NULL, enum_acl_compat_vals, FLAG_ADVANCED | FLAG_SHARE | FLAG_GLOBAL}, {"defer sharing violations", P_BOOL, P_GLOBAL, &Globals.bDeferSharingViolations, NULL, NULL, FLAG_ADVANCED | FLAG_GLOBAL}, {"ea support", P_BOOL, P_LOCAL, &sDefault.bEASupport, NULL, NULL, FLAG_ADVANCED | FLAG_SHARE | FLAG_GLOBAL}, {"nt acl support", P_BOOL, P_LOCAL, &sDefault.bNTAclSupport, NULL, NULL, FLAG_ADVANCED | FLAG_SHARE | FLAG_GLOBAL}, @@ -1832,7 +1838,7 @@ FN_GLOBAL_CONST_STRING(lp_template_homedir, &Globals.szTemplateHomedir) FN_GLOBAL_CONST_STRING(lp_template_shell, &Globals.szTemplateShell) FN_GLOBAL_CONST_STRING(lp_winbind_separator, &Globals.szWinbindSeparator) -FN_GLOBAL_STRING(lp_acl_compatibility, &Globals.szAclCompat) +FN_GLOBAL_INTEGER(lp_acl_compatibility, &Globals.szAclCompat) FN_GLOBAL_BOOL(lp_winbind_enum_users, &Globals.bWinbindEnumUsers) FN_GLOBAL_BOOL(lp_winbind_enum_groups, &Globals.bWinbindEnumGroups) FN_GLOBAL_BOOL(lp_winbind_use_default_domain, &Globals.bWinbindUseDefaultDomain) @@ -3305,23 +3311,6 @@ return lp_string(Globals.szLdapSuffix); } -/*************************************************************************** -***************************************************************************/ - -static BOOL handle_acl_compatibility(int snum, const char *pszParmValue, char **ptr) -{ - if (strequal(pszParmValue, "auto")) - string_set(ptr, ""); - else if (strequal(pszParmValue, "winnt")) - string_set(ptr, "winnt"); - else if (strequal(pszParmValue, "win2k")) - string_set(ptr, "win2k"); - else - return False; - - return True; -} - /**************************************************************************** set the value for a P_ENUM ***************************************************************************/ Modified: trunk/source/smbd/posix_acls.c =================================================================== --- trunk/source/smbd/posix_acls.c 2006-03-11 10:45:40 UTC (rev 14206) +++ trunk/source/smbd/posix_acls.c 2006-03-11 10:59:03 UTC (rev 14207) @@ -783,15 +783,15 @@ static BOOL nt4_compatible_acls(void) { - const char *compat = lp_acl_compatibility(); + int compat = lp_acl_compatibility(); - if (*compat == '\0') { + if (compat == ACL_COMPAT_AUTO) { enum remote_arch_types ra_type = get_remote_arch(); /* Automatically adapt to client */ return (ra_type <= RA_WINNT); } else - return (strequal(compat, "winnt")); + return (compat == ACL_COMPAT_WINNT); }
