create_session (Display *display, PAMSession *pam_session, const gchar *session_name, gboolean is_greeter, const gchar *log_filename)
{
User *user;
- gchar *sessions_dir, *filename, *path, *command = NULL;
+ gchar *sessions_dir, *filename, *path, *orig_path, *command = NULL;
GKeyFile *session_desktop_file;
Session *session;
gchar *cookie;
set_env_from_pam_session (session, pam_session);
+ /* Insert our own utility directory to PATH */
+ orig_path = process_get_env (PROCESS (session), "PATH");
+ path = g_strdup_printf ("%s:%s", PKGLIBEXEC_DIR, orig_path);
+ process_set_env (PROCESS (session), "PATH", path);
+ g_free (path);
+ g_free (orig_path);
+
process_set_log_file (PROCESS (session), log_filename);
/* Open ConsoleKit session */
g_hash_table_insert (process->priv->env, g_strdup (name), g_strdup (value));
}
+gchar *
+process_get_env (Process *process, const gchar *name)
+{
+ g_return_if_fail (process != NULL);
+ return g_strdup (g_hash_table_lookup (process->priv->env, name));
+}
+
static void
process_watch_cb (GPid pid, gint status, gpointer data)
{
void process_set_env (Process *process, const gchar *name, const gchar *value);
+gchar *process_get_env (Process *process, const gchar *name);
+
gboolean process_start (Process *process,
User *user,
const gchar *working_dir,