--- rxvt-unicode/src/init.C 2011/12/20 02:52:39 1.309 +++ rxvt-unicode/src/init.C 2012/01/19 13:33:43 1.319 @@ -40,7 +40,7 @@ #include -#include +#include #include @@ -49,7 +49,7 @@ # include #else # ifdef HAVE_SETLOCALE -# include +# include # endif #endif @@ -854,7 +854,7 @@ rootwin_ev.start (display, display->root); #endif - set_colorfgbg (); + init_done = 1; init_command (cmd_argv); @@ -908,6 +908,10 @@ rxvt_term::init_env () { char *val; + char *env_display; + char *env_windowid; + char *env_colorfgbg; + char *env_term; #ifdef DISPLAY_IS_IP /* Fixup display_name for export over pty to any interested terminal @@ -934,6 +938,7 @@ sprintf (env_display, "DISPLAY=%s", val); + env_windowid = (char *)rxvt_malloc (21); sprintf (env_windowid, "WINDOWID=%lu", (unsigned long)parent); /* add entries to the environment: @@ -947,8 +952,8 @@ putenv (env_display); putenv (env_windowid); - if (env_colorfgbg) - putenv (env_colorfgbg); + env_colorfgbg = get_colorfgbg (); + putenv (env_colorfgbg); #ifdef RXVT_TERMINFO putenv ("TERMINFO=" RXVT_TERMINFO); @@ -1190,7 +1195,7 @@ void rxvt_term::color_aliases (int idx) { - if (rs[Rs_color + idx] && isdigit (* (rs[Rs_color + idx]))) + if (rs[Rs_color + idx] && isdigit (*rs[Rs_color + idx])) { int i = atoi (rs[Rs_color + idx]); @@ -1476,9 +1481,6 @@ this->parent = top; - old_width = szHint.width; - old_height = szHint.height; - set_title (rs [Rs_title]); set_icon_name (rs [Rs_iconName]); @@ -1550,7 +1552,7 @@ /* the vt window */ vt = XCreateSimpleWindow (dpy, top, window_vt_x, window_vt_y, - width, height, + vt_width, vt_height, 0, pix_colors_focused[Color_fg], pix_colors_focused[Color_bg]); @@ -1678,7 +1680,14 @@ default: if (!option (Opt_utmpInhibit)) - pty->login (cmd_pid, option (Opt_loginShell), rs[Rs_display_name]); + { +#ifdef LOG_ONLY_ON_LOGIN + bool login_shell = option (Opt_loginShell); +#else + bool login_shell = true; +#endif + pty->login (cmd_pid, login_shell, rs[Rs_display_name]); + } pty->close_tty (); @@ -1713,8 +1722,10 @@ fd = open (CONSOLE, O_WRONLY, 0); if (fd >= 0) - if (ioctl (fd, SRIOCSREDIR, NULL) < 0) + { + ioctl (fd, SRIOCSREDIR, STDIN_FILENO); close (fd); + } #endif /* SRIOCSREDIR */ }