--- rxvt-unicode/src/init.C 2004/03/14 23:14:39 1.40 +++ rxvt-unicode/src/init.C 2004/04/08 20:31:45 1.50 @@ -1,5 +1,5 @@ /*--------------------------------*-C-*---------------------------------* - * File: init.c + * File: init.C *----------------------------------------------------------------------* * * All portions of code are copyright by their respective author/s. @@ -315,7 +315,8 @@ COLOR_CURSOR_BACKGROUND, COLOR_CURSOR_FOREGROUND, #endif /* ! NO_CURSORCOLOR */ - NULL, /* Color_pointer */ + NULL, /* Color_pointer_fg */ + NULL, /* Color_pointer_bg */ NULL, /* Color_border */ #ifndef NO_BOLD_UNDERLINE_REVERSE NULL, /* Color_BD */ @@ -325,6 +326,9 @@ #ifdef OPTION_HC NULL, #endif +#if TINTING + NULL, +#endif #ifdef KEEP_SCROLLCOLOR COLOR_SCROLLBAR, COLOR_SCROLLTROUGH, @@ -496,10 +500,6 @@ cmd_argv[i] = NULL; } - /* clear all resources */ - for (i = 0; i < NUM_RESOURCES;) - rs[i++] = NULL; - rs[Rs_name] = rxvt_r_basename (argv[0]); /* @@ -524,10 +524,7 @@ if (!display && ! (display = displays.get (rs[Rs_display_name]))) - { - rxvt_print_error ("can't open display %s", rs[Rs_display_name]); - exit (EXIT_FAILURE); - } + rxvt_fatal ("can't open display %s", rs[Rs_display_name]); extract_resources (display->display, rs[Rs_name]); @@ -653,7 +650,8 @@ color_aliases (Color_cursor); color_aliases (Color_cursor2); #endif /* NO_CURSORCOLOR */ - color_aliases (Color_pointer); + color_aliases (Color_pointer_fg); + color_aliases (Color_pointer_bg); color_aliases (Color_border); #ifndef NO_BOLD_UNDERLINE_REVERSE color_aliases (Color_BD); @@ -761,6 +759,7 @@ SET_LOCALE (this->locale); mbstate.reset (); #endif +#if 0 #if HAVE_NL_LANGINFO free (codeset); codeset = strdup (nl_langinfo (CODESET)); @@ -769,6 +768,7 @@ #else enc_utf8 = 1; #endif +#endif } void @@ -776,7 +776,7 @@ { #ifdef USE_XIM if (!locale) - rxvt_print_error ("Setting locale failed."); + rxvt_warn ("setting locale failed, working without locale support.\n"); else { Atom wmlocale; @@ -788,7 +788,7 @@ if (!XSupportsLocale ()) { - rxvt_print_error ("The locale is not supported by Xlib"); + rxvt_warn ("the locale is not supported by Xlib, working withotu locale support.\n"); return; } @@ -858,10 +858,7 @@ #endif if ((cmd_fd = run_command (argv)) < 0) - { - rxvt_print_error ("aborting"); - exit (EXIT_FAILURE); - } + rxvt_fatal ("failure while running command, aborting"); } /*----------------------------------------------------------------------*/ @@ -896,8 +893,7 @@ case Color_fg: case Color_bg: /* fatal: need bg/fg color */ - rxvt_print_error ("aborting"); - exit (EXIT_FAILURE); + rxvt_fatal ("unable to get foreground/background colour, aborting"); /* NOTREACHED */ break; #ifndef NO_CURSORCOLOR @@ -905,7 +901,7 @@ xcol = PixColors[Color_fg]; break; #endif /* ! NO_CURSORCOLOR */ - case Color_pointer: + case Color_pointer_fg: xcol = PixColors[Color_fg]; break; default: @@ -919,10 +915,12 @@ SET_PIXCOLOR (i); } - if (XDEPTH <= 2 || !rs[Rs_color + Color_pointer]) - PixColors[Color_pointer] = PixColors[Color_fg]; - if (XDEPTH <= 2 || !rs[Rs_color + Color_border]) - PixColors[Color_border] = PixColors[Color_fg]; + if (XDEPTH <= 2) + { + if (!rs[Rs_color + Color_pointer_fg]) PixColors[Color_pointer_fg] = PixColors[Color_fg]; + if (!rs[Rs_color + Color_pointer_bg]) PixColors[Color_pointer_bg] = PixColors[Color_bg]; + if (!rs[Rs_color + Color_border] ) PixColors[Color_border] = PixColors[Color_fg]; + } /* * get scrollBar/menuBar shadow colors @@ -1130,8 +1128,8 @@ PixColors[Color_fg]); #endif - xterm_seq (XTerm_title, rs[Rs_title], CHAR_ST); - xterm_seq (XTerm_iconName, rs[Rs_iconName], CHAR_ST); + process_xterm_seq (XTerm_title, rs[Rs_title], CHAR_ST); + process_xterm_seq (XTerm_iconName, rs[Rs_iconName], CHAR_ST); classHint.res_name = (char *)rs[Rs_name]; classHint.res_class = (char *)RESCLASS; @@ -1143,7 +1141,14 @@ wmHint.window_group = TermWin.parent[0]; XSetWMProperties (display->display, TermWin.parent[0], NULL, NULL, - (char **)argv, argc, &szHint, &wmHint, &classHint); + (char **)argv, argc, &szHint, &wmHint, &classHint); + +#ifndef NO_FRILLS + long pid = getpid (); + XChangeProperty (display->display, TermWin.parent[0], + display->atom ("_NET_WM_PID"), XA_CARDINAL, 32, + PropModeReplace, (unsigned char *)&pid, 1); +#endif XSelectInput (display->display, TermWin.parent[0], KeyPressMask @@ -1251,8 +1256,8 @@ gcvalue.background = PixColors[Color_bg]; gcvalue.graphics_exposures = 1; TermWin.gc = XCreateGC (display->display, TermWin.vt, - GCForeground | GCBackground - | GCGraphicsExposures, &gcvalue); + GCForeground | GCBackground | GCGraphicsExposures, + &gcvalue); TermWin.drawable = new rxvt_drawable (display, TermWin.vt); @@ -1279,10 +1284,7 @@ /* get master (pty) */ if ((cfd = rxvt_get_pty (& (tty_fd), & (ttydev))) < 0) - { - rxvt_print_error ("can't open pseudo-tty"); - return -1; - } + rxvt_fatal ("can't open pseudo-tty"); fcntl (cfd, F_SETFL, O_NONBLOCK); @@ -1296,8 +1298,7 @@ if ((tty_fd = rxvt_get_tty (ttydev)) < 0) { close (cfd); - rxvt_print_error ("can't open slave tty %s", ttydev); - return -1; + rxvt_fatal ("can't open slave tty %s", ttydev); } } #ifndef NO_BACKSPACE_KEY @@ -1317,15 +1318,14 @@ switch (cmd_pid = fork ()) { case -1: - rxvt_print_error ("can't fork"); - return -1; + rxvt_fatal ("can't fork"); case 0: close (cfd); /* only keep tty_fd and STDERR open */ init_env (); if (rxvt_control_tty (tty_fd, ttydev) < 0) - rxvt_print_error ("could not obtain control of tty"); + fprintf (stderr, "%s: could not obtain control of tty.", RESNAME); else { /* Reopen stdin, stdout and stderr over the tty file descriptor */ @@ -1337,9 +1337,11 @@ close (tty_fd); run_child (argv); + fprintf (stderr, "%s: unable to exec child.", RESNAME); } - exit (EXIT_FAILURE); - /* NOTREACHED */ + + _exit (EXIT_FAILURE); + default: { #if defined(HAVE_STRUCT_UTMP) && defined(HAVE_TTYSLOT) @@ -1358,8 +1360,8 @@ dup2 (fdstdin, STDIN_FILENO); close (fdstdin); #endif - } + close (tty_fd); /* keep STDERR_FILENO, cmd_fd, display->fd () open */ break; }