void setup_environment (void) { const gchar *lang; const gchar *sm; gchar *authfile; int fd; /* check that no other session manager is running */ sm = g_getenv ("SESSION_MANAGER"); if (sm != NULL && strlen (sm) > 0) { fprintf (stderr, "xfce4-session: Another session manager is already running\n"); exit (EXIT_FAILURE); } /* check if running in verbose mode */ if (g_getenv ("XFSM_VERBOSE") != NULL) xfsm_enable_verbose (); /* pass correct DISPLAY to children, in case of --display in argv */ xfce_setenv ("DISPLAY", gdk_display_get_name (gdk_display_get_default ()), TRUE); /* this is for compatibility with the GNOME Display Manager */ lang = g_getenv ("GDM_LANG"); if (lang != NULL) { xfce_setenv ("LANG", lang, TRUE); xfce_unsetenv ("GDM_LANG"); } /* check access to $HOME/.ICEauthority */ authfile = xfce_get_homefile (".ICEauthority", NULL); fd = open (authfile, O_RDWR | O_CREAT, 0600); if (fd < 0) { fprintf (stderr, "xfce4-session: Unable to access file %s: %s\n", authfile, g_strerror (errno)); exit (EXIT_FAILURE); } g_free (authfile); close (fd); }
void xfsm_verbose_real (const char *func, const char *file, int line, const char *format, ...) { static FILE *fp = NULL; gchar *logfile; va_list valist; if (G_UNLIKELY (fp == NULL)) { logfile = xfce_get_homefile (".xfce4-session.verbose-log", NULL); /* rename an existing log file to -log.last */ if (logfile && g_file_test (logfile, G_FILE_TEST_EXISTS)) { gchar *oldlogfile = g_strdup_printf ("%s.last", logfile); if (oldlogfile) { rename (logfile, oldlogfile); g_free (oldlogfile); } } fp = fopen (logfile, "w"); g_free (logfile); fprintf(fp, "log file opened\n"); } fprintf (fp, "TRACE[%s:%d] %s(): ", file, line, func); va_start (valist, format); vfprintf (fp, format, valist); fflush (fp); va_end (valist); }