/* Session management module for systems which understand the X Session
management protocol.
-Copyright (C) 2002-2011 Free Software Foundation, Inc.
+Copyright (C) 2002-2014 Free Software Foundation, Inc.
This file is part of GNU Emacs.
#include <unistd.h>
#include <sys/param.h>
#include <stdio.h>
-#include <setjmp.h>
#include "lisp.h"
#include "systime.h"
#include "sysselect.h"
#include "frame.h"
#include "termhooks.h"
-#include "termopts.h"
#include "xterm.h"
#include "process.h"
#include "keyboard.h"
open to a session manager, just return. */
static void
-x_session_check_input (int fd, void *data, int for_read)
+x_session_check_input (int fd, void *data)
{
int ret;
will be called. */
emacs_event.kind = NO_EVENT;
- ret = IceProcessMessages (SmcGetIceConnection (smc_conn),
- (IceReplyWaitInfo *)0, (Bool *)0);
+ ret = IceProcessMessages (SmcGetIceConnection (smc_conn), 0, 0);
if (ret != IceProcessMessagesSuccess)
{
/* Either IO error or Connection closed. */
props[props_idx]->num_vals = 1;
props[props_idx]->vals = &values[val_idx++];
props[props_idx]->vals[0].length = strlen (cwd);
- props[props_idx]->vals[0].value = cwd;
+ props[props_idx]->vals[0].value = xstrdup (cwd);
++props_idx;
}
props[props_idx]->vals[vp_idx].length = strlen (emacs_program);
props[props_idx]->vals[vp_idx++].value = emacs_program;
- smid_opt = xmalloc (strlen (SMID_OPT) + strlen (client_id) + 1);
+ smid_opt = xmalloc_atomic (strlen (SMID_OPT) + strlen (client_id) + 1);
strcpy (smid_opt, SMID_OPT);
strcat (smid_opt, client_id);
if (cwd)
{
- chdir_opt = xmalloc (strlen (CHDIR_OPT) + strlen (cwd) + 1);
+ chdir_opt = xmalloc_atomic (strlen (CHDIR_OPT) + strlen (cwd) + 1);
strcpy (chdir_opt, CHDIR_OPT);
strcat (chdir_opt, cwd);
xfree (smid_opt);
xfree (chdir_opt);
- xfree (cwd);
+ free (cwd);
xfree (vp);
for (i = 0; i < props_idx; ++i)
{
#define SM_ERRORSTRING_LEN 512
char errorstring[SM_ERRORSTRING_LEN];
- char* previous_id = NULL;
+ char *previous_id = NULL;
SmcCallbacks callbacks;
ptrdiff_t name_len = 0;
/* This malloc will not be freed, but it is only done once, and hopefully
not very large */
- emacs_program = xmalloc (name_len + 1);
+ emacs_program = xmalloc_atomic (name_len + 1);
emacs_program[0] = '\0';
if (! EQ (Vinvocation_directory, Qnil))
Vx_session_id = build_string (client_id);
#ifdef USE_GTK
- /* GTK creats a leader window by itself, but we need to tell
+ /* GTK creates a leader window by itself, but we need to tell
it about our client_id. */
gdk_x11_set_sm_client_id (client_id);
#else
prevent. Fix this in next version. */
Fkill_emacs (Qnil);
+#if 0
/* This will not be reached, but we want kill-emacs-hook to be run. */
SmcCloseConnection (smc_conn, 0, 0);
ice_connection_closed ();
+#endif
}
return Qnil;