Mercurial > pidgin
changeset 4281:d956ac6157cd
[gaim-migrate @ 4532]
(17:42:36) Robot101: this patch sets up a function we'll need for
session management in the future, which also fixes the bug with the
-f/--file option not being retained for subsequent instances of
Gaim (either when cloning or logging in again), and replaces the
'discard' command with /bin/true for the moment.
(17:43:56) Robot101: thanks to Nicol?s Lichtmaier for pointing this
out and inspiring me, also in my last patch he spotted the current
directory wasn't being stored
committer: Tailor Script <tailor@pidgin.im>
author | Luke Schierer <lschiere@pidgin.im> |
---|---|
date | Fri, 10 Jan 2003 22:45:53 +0000 |
parents | 57ab8f0a4263 |
children | aa20cc16dc08 |
files | src/session.c |
diffstat | 1 files changed, 38 insertions(+), 8 deletions(-) [+] |
line wrap: on
line diff
--- a/src/session.c Fri Jan 10 22:41:04 2003 +0000 +++ b/src/session.c Fri Jan 10 22:45:53 2003 +0000 @@ -133,6 +133,34 @@ debug_printf("Session Management: ICE initialised\n"); } +/* my magic utility function */ + +static gchar **session_make_command(gchar *client_id) { + gint i = 2; + gint j = 0; + gchar **ret; + + if (client_id) i += 2; + if (opt_rcfile_arg) i += 2; + + ret = g_new(gchar *, i); + ret[j++] = g_strdup(myself); + + if (client_id) { + ret[j++] = g_strdup("--session"); + ret[j++] = g_strdup(client_id); + } + + if (opt_rcfile_arg) { + ret[j++] = g_strdup("--file"); + ret[j++] = g_strdup(opt_rcfile_arg); + } + + ret[j++] = NULL; + + return ret; +} + /* SM callback handlers */ void session_save_yourself(SmcConn conn, SmPointer data, int save_type, @@ -247,7 +275,7 @@ gchar *client_id = NULL; gchar error[ERROR_LENGTH] = ""; gchar *tmp = NULL; - gchar *cmd[4] = { NULL, NULL, NULL, NULL }; + gchar **cmd = NULL; if (session != NULL) { /* session is already established, what the hell is going on? */ @@ -312,21 +340,23 @@ myself = g_strdup(argv0); debug_printf("Session Management: using %s as command\n", myself); - cmd[0] = myself; - cmd[1] = NULL; + cmd = session_make_command(NULL); session_set_array(session, SmCloneCommand, cmd); + g_strfreev(cmd); /* this is currently useless, but gnome-session warns 'the following applications will not save their current status' bla bla if we don't have it and the user checks 'Save Session' when they log out */ - cmd[1] = "-v"; - cmd[2] = NULL; + cmd = g_new(gchar *, 2); + cmd[0] = g_strdup("/bin/true"); + cmd[1] = NULL; session_set_array(session, SmDiscardCommand, cmd); + g_strfreev(cmd); - cmd[1] = "--session"; - cmd[2] = client_id; - cmd[3] = NULL; + cmd = session_make_command(client_id); session_set_array(session, SmRestartCommand, cmd); + g_strfreev(cmd); + g_free(client_id); #endif /* USE_SM */ }