public string FindLatipiumDir(string user) { string home = Marshal.PtrToStringAuto(objc_msgSend(NSHomeDirectoryForUser(objc_msgSend(NSString, stringWithUTF8String, user)), cStringUsingEncoding, NSUTF8StringEncoding)); IntPtr passwdPtr = getpwnam(user); passwd passwd = (passwd)Marshal.PtrToStructure(passwdPtr, typeof(passwd)); string dir = Path.Combine(home, "Library", "Application Support", "latipium"); Directory.CreateDirectory(dir); chown(dir, passwd.pw_uid, passwd.pw_gid); return(dir); }
public string FindLatipiumDir(string user) { setpwent(); IntPtr passwdPtr; while ((passwdPtr = getpwent()) != IntPtr.Zero) { passwd passwd = (passwd)Marshal.PtrToStructure(passwdPtr, typeof(passwd)); if (Marshal.PtrToStringAuto(passwd.pw_name) == user) { string dir = Path.Combine(Marshal.PtrToStringAuto(passwd.pw_dir), ".latipium"); Directory.CreateDirectory(dir); chown(dir, passwd.pw_uid, passwd.pw_gid); endpwent(); return(dir); } } endpwent(); return(null); }