private void DoSetUser(ManosApp app, object user_data)
{
#if DISABLE_POSIX
throw new InvalidOperationException ("Attempt to set user on a non-posix build.");
#else
string user = user_data as string;
Console.WriteLine ("setting user to: '{0}'", user);
if (user == null) {
AppHost.Stop ();
throw new InvalidOperationException (String.Format ("Attempting to set user to null."));
}
Passwd pwd = Syscall.getpwnam (user);
if (pwd == null) {
AppHost.Stop ();
throw new InvalidOperationException (String.Format ("Unable to find user '{0}'.", user));
}
int error = Syscall.seteuid (pwd.pw_uid);
if (error != 0) {
AppHost.Stop ();
throw new InvalidOperationException (String.Format ("Unable to switch to user '{0}' error: '{1}'.", user, error));
}
#endif
}