Fix problems with overlong directory names: phase #1
[mono.git] / mcs / class / Mono.Posix / Mono.Unix / UnixGroupInfo.cs
index 417dd2652a04c488d57e76beb3de89a04dbc6eb0..50911f7d93536637f7dabc92b6a1ac74c7f47a60 100644 (file)
@@ -55,19 +55,21 @@ namespace Mono.Unix {
                                throw new ArgumentException (Locale.GetText ("invalid group id"), "group");
                }
 
-               [Obsolete ("Use UnixGroupInfo(Mono.Unix.Native.Group)", true)]
-               public UnixGroupInfo (Group group)
+               public UnixGroupInfo (Native.Group group)
                {
-                       this.group = new Native.Group ();
-                       this.group.gr_name    = group.gr_name;
-                       this.group.gr_passwd  = group.gr_passwd;
-                       this.group.gr_gid     = group.gr_gid;
-                       this.group.gr_mem     = group.gr_mem;
+                       this.group = CopyGroup (group);
                }
 
-               public UnixGroupInfo (Native.Group group)
+               private static Native.Group CopyGroup (Native.Group group)
                {
-                       this.group = group;
+                       Native.Group g = new Native.Group ();
+
+                       g.gr_gid    = group.gr_gid;
+                       g.gr_mem    = group.gr_mem;
+                       g.gr_name   = group.gr_name;
+                       g.gr_passwd = group.gr_passwd;
+
+                       return g;
                }
 
                public string GroupName {
@@ -82,11 +84,6 @@ namespace Mono.Unix {
                        get {return group.gr_gid;}
                }
 
-               [Obsolete ("Use GetMemberNames()", true)]
-               public string[] Members {
-                       get {return group.gr_mem;}
-               }
-
                public UnixUserInfo[] GetMembers ()
                {
                        UnixUserInfo[] members = new UnixUserInfo [group.gr_mem.Length];
@@ -97,7 +94,7 @@ namespace Mono.Unix {
 
                public string[] GetMemberNames ()
                {
-                       return group.gr_mem;
+                       return (string[]) group.gr_mem.Clone ();
                }
 
                public override int GetHashCode ()
@@ -119,7 +116,7 @@ namespace Mono.Unix {
 
                public Native.Group ToGroup ()
                {
-                       return group;
+                       return CopyGroup (group);
                }
 
                public static UnixGroupInfo[] GetLocalGroups ()