Beispiel #1
0
        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);
        }
Beispiel #2
0
        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);
        }