⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 init.c

📁 rxvt经典的linux下的终端.小巧实用
💻 C
📖 第 1 页 / 共 3 页
字号:
/*--------------------------------*-C-*---------------------------------* * File:	init.c *----------------------------------------------------------------------* * $Id: init.c,v 1.103 2002/12/04 05:21:29 gcw Exp $ * * All portions of code are copyright by their respective author/s. * Copyright (c) 1992      John Bovey, University of Kent at Canterbury <jdb@ukc.ac.uk> *				- original version * Copyright (c) 1994      Robert Nation <nation@rocket.sanders.lockheed.com> * 				- extensive modifications * Copyright (c) 1998-2001 Geoff Wing <gcw@pobox.com> * 				- extensive modifications * Copyright (c) 1999      D J Hawkey Jr <hawkeyd@visi.com> *				- QNX support * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. *---------------------------------------------------------------------*//* * Initialisation routines. */#include "../config.h"		/* NECESSARY */#include "rxvt.h"		/* NECESSARY */#include "init.h"#include <signal.h>const char *const def_colorName[] = {    COLOR_FOREGROUND,    COLOR_BACKGROUND,/* low-intensity colors */    "Black",			/* 0: black             (#000000) */#ifndef NO_BRIGHTCOLOR    "Red3",			/* 1: red               (#CD0000) */    "Green3",			/* 2: green             (#00CD00) */    "Yellow3",			/* 3: yellow            (#CDCD00) */    "Blue3",			/* 4: blue              (#0000CD) */    "Magenta3",			/* 5: magenta           (#CD00CD) */    "Cyan3",			/* 6: cyan              (#00CDCD) */# ifdef XTERM_COLORS    "Grey90",			/* 7: white             (#E5E5E5) */# else    "AntiqueWhite",		/* 7: white             (#FAEBD7) */# endif/* high-intensity colors */# ifdef XTERM_COLORS    "Grey30",			/* 8: bright black      (#4D4D4D) */# else    "Grey25",			/* 8: bright black      (#404040) */# endif#endif				/* NO_BRIGHTCOLOR */    "Red",			/* 1/9: bright red      (#FF0000) */    "Green",			/* 2/10: bright green   (#00FF00) */    "Yellow",			/* 3/11: bright yellow  (#FFFF00) */    "Blue",			/* 4/12: bright blue    (#0000FF) */    "Magenta",			/* 5/13: bright magenta (#FF00FF) */    "Cyan",			/* 6/14: bright cyan    (#00FFFF) */    "White",			/* 7/15: bright white   (#FFFFFF) */#ifdef TTY_256COLOR    "rgb:00/00/00",		/* default 16-255 color table     */    "rgb:00/00/2a",    "rgb:00/00/55",    "rgb:00/00/7f",    "rgb:00/00/aa",    "rgb:00/00/d4",    "rgb:00/2a/00",    "rgb:00/2a/2a",    "rgb:00/2a/55",    "rgb:00/2a/7f",    "rgb:00/2a/aa",    "rgb:00/2a/d4",    "rgb:00/55/00",    "rgb:00/55/2a",    "rgb:00/55/55",    "rgb:00/55/7f",    "rgb:00/55/aa",    "rgb:00/55/d4",    "rgb:00/7f/00",    "rgb:00/7f/2a",    "rgb:00/7f/55",    "rgb:00/7f/7f",    "rgb:00/7f/aa",    "rgb:00/7f/d4",    "rgb:00/aa/00",    "rgb:00/aa/2a",    "rgb:00/aa/55",    "rgb:00/aa/7f",    "rgb:00/aa/aa",    "rgb:00/aa/d4",    "rgb:00/d4/00",    "rgb:00/d4/2a",    "rgb:00/d4/55",    "rgb:00/d4/7f",    "rgb:00/d4/aa",    "rgb:00/d4/d4",    "rgb:2a/00/00",    "rgb:2a/00/2a",    "rgb:2a/00/55",    "rgb:2a/00/7f",    "rgb:2a/00/aa",    "rgb:2a/00/d4",    "rgb:2a/2a/00",    "rgb:2a/2a/2a",    "rgb:2a/2a/55",    "rgb:2a/2a/7f",    "rgb:2a/2a/aa",    "rgb:2a/2a/d4",    "rgb:2a/55/00",    "rgb:2a/55/2a",    "rgb:2a/55/55",    "rgb:2a/55/7f",    "rgb:2a/55/aa",    "rgb:2a/55/d4",    "rgb:2a/7f/00",    "rgb:2a/7f/2a",    "rgb:2a/7f/55",    "rgb:2a/7f/7f",    "rgb:2a/7f/aa",    "rgb:2a/7f/d4",    "rgb:2a/aa/00",    "rgb:2a/aa/2a",    "rgb:2a/aa/55",    "rgb:2a/aa/7f",    "rgb:2a/aa/aa",    "rgb:2a/aa/d4",    "rgb:2a/d4/00",    "rgb:2a/d4/2a",    "rgb:2a/d4/55",    "rgb:2a/d4/7f",    "rgb:2a/d4/aa",    "rgb:2a/d4/d4",    "rgb:55/00/00",    "rgb:55/00/2a",    "rgb:55/00/55",    "rgb:55/00/7f",    "rgb:55/00/aa",    "rgb:55/00/d4",    "rgb:55/2a/00",    "rgb:55/2a/2a",    "rgb:55/2a/55",    "rgb:55/2a/7f",    "rgb:55/2a/aa",    "rgb:55/2a/d4",    "rgb:55/55/00",    "rgb:55/55/2a",    "rgb:55/55/55",    "rgb:55/55/7f",    "rgb:55/55/aa",    "rgb:55/55/d4",    "rgb:55/7f/00",    "rgb:55/7f/2a",    "rgb:55/7f/55",    "rgb:55/7f/7f",    "rgb:55/7f/aa",    "rgb:55/7f/d4",    "rgb:55/aa/00",    "rgb:55/aa/2a",    "rgb:55/aa/55",    "rgb:55/aa/7f",    "rgb:55/aa/aa",    "rgb:55/aa/d4",    "rgb:55/d4/00",    "rgb:55/d4/2a",    "rgb:55/d4/55",    "rgb:55/d4/7f",    "rgb:55/d4/aa",    "rgb:55/d4/d4",    "rgb:7f/00/00",    "rgb:7f/00/2a",    "rgb:7f/00/55",    "rgb:7f/00/7f",    "rgb:7f/00/aa",    "rgb:7f/00/d4",    "rgb:7f/2a/00",    "rgb:7f/2a/2a",    "rgb:7f/2a/55",    "rgb:7f/2a/7f",    "rgb:7f/2a/aa",    "rgb:7f/2a/d4",    "rgb:7f/55/00",    "rgb:7f/55/2a",    "rgb:7f/55/55",    "rgb:7f/55/7f",    "rgb:7f/55/aa",    "rgb:7f/55/d4",    "rgb:7f/7f/00",    "rgb:7f/7f/2a",    "rgb:7f/7f/55",    "rgb:7f/7f/7f",    "rgb:7f/7f/aa",    "rgb:7f/7f/d4",    "rgb:7f/aa/00",    "rgb:7f/aa/2a",    "rgb:7f/aa/55",    "rgb:7f/aa/7f",    "rgb:7f/aa/aa",    "rgb:7f/aa/d4",    "rgb:7f/d4/00",    "rgb:7f/d4/2a",    "rgb:7f/d4/55",    "rgb:7f/d4/7f",    "rgb:7f/d4/aa",    "rgb:7f/d4/d4",    "rgb:aa/00/00",    "rgb:aa/00/2a",    "rgb:aa/00/55",    "rgb:aa/00/7f",    "rgb:aa/00/aa",    "rgb:aa/00/d4",    "rgb:aa/2a/00",    "rgb:aa/2a/2a",    "rgb:aa/2a/55",    "rgb:aa/2a/7f",    "rgb:aa/2a/aa",    "rgb:aa/2a/d4",    "rgb:aa/55/00",    "rgb:aa/55/2a",    "rgb:aa/55/55",    "rgb:aa/55/7f",    "rgb:aa/55/aa",    "rgb:aa/55/d4",    "rgb:aa/7f/00",    "rgb:aa/7f/2a",    "rgb:aa/7f/55",    "rgb:aa/7f/7f",    "rgb:aa/7f/aa",    "rgb:aa/7f/d4",    "rgb:aa/aa/00",    "rgb:aa/aa/2a",    "rgb:aa/aa/55",    "rgb:aa/aa/7f",    "rgb:aa/aa/aa",    "rgb:aa/aa/d4",    "rgb:aa/d4/00",    "rgb:aa/d4/2a",    "rgb:aa/d4/55",    "rgb:aa/d4/7f",    "rgb:aa/d4/aa",    "rgb:aa/d4/d4",    "rgb:d4/00/00",    "rgb:d4/00/2a",    "rgb:d4/00/55",    "rgb:d4/00/7f",    "rgb:d4/00/aa",    "rgb:d4/00/d4",    "rgb:d4/2a/00",    "rgb:d4/2a/2a",    "rgb:d4/2a/55",    "rgb:d4/2a/7f",    "rgb:d4/2a/aa",    "rgb:d4/2a/d4",    "rgb:d4/55/00",    "rgb:d4/55/2a",    "rgb:d4/55/55",    "rgb:d4/55/7f",    "rgb:d4/55/aa",    "rgb:d4/55/d4",    "rgb:d4/7f/00",    "rgb:d4/7f/2a",    "rgb:d4/7f/55",    "rgb:d4/7f/7f",    "rgb:d4/7f/aa",    "rgb:d4/7f/d4",    "rgb:d4/aa/00",    "rgb:d4/aa/2a",    "rgb:d4/aa/55",    "rgb:d4/aa/7f",    "rgb:d4/aa/aa",    "rgb:d4/aa/d4",    "rgb:d4/d4/00",    "rgb:d4/d4/2a",    "rgb:d4/d4/55",    "rgb:d4/d4/7f",    "rgb:d4/d4/aa",    "rgb:d4/d4/d4",    "rgb:08/08/08",    "rgb:12/12/12",    "rgb:1c/1c/1c",    "rgb:26/26/26",    "rgb:30/30/30",    "rgb:3a/3a/3a",    "rgb:44/44/44",    "rgb:4e/4e/4e",    "rgb:58/58/58",    "rgb:62/62/62",    "rgb:6c/6c/6c",    "rgb:76/76/76",    "rgb:80/80/80",    "rgb:8a/8a/8a",    "rgb:94/94/94",    "rgb:9e/9e/9e",    "rgb:a8/a8/a8",    "rgb:b2/b2/b2",    "rgb:bc/bc/bc",    "rgb:c6/c6/c6",    "rgb:d0/d0/d0",    "rgb:da/da/da",    "rgb:e4/e4/e4",    "rgb:ee/ee/ee",#endif#ifndef NO_CURSORCOLOR    COLOR_CURSOR_BACKGROUND,    COLOR_CURSOR_FOREGROUND,#endif				/* ! NO_CURSORCOLOR */    NULL,			/* Color_pointer                  */    NULL,			/* Color_border                   */#ifndef NO_BOLD_UNDERLINE_REVERSE    NULL,			/* Color_BD                       */    NULL,			/* Color_UL                       */    NULL,			/* Color_RV                       */#endif				/* ! NO_BOLD_UNDERLINE_REVERSE */#ifdef OPTION_HC    NULL,#endif#ifdef KEEP_SCROLLCOLOR    COLOR_SCROLLBAR,    COLOR_SCROLLTROUGH,#endif				/* KEEP_SCROLLCOLOR */};const char *const xa_names[NUM_XA] = {    "COMPOUND_TEXT",    "MULTIPLE",	    "TARGETS",	    "TEXT",    "TIMESTAMP",    "VT_SELECTION",    "INCR",    "WM_DELETE_WINDOW",#ifdef TRANSPARENT    "_XROOTPMAP_ID",#endif#ifdef OFFIX_DND    "DndProtocol",    "DndSelection",#endif    "CLIPBOARD"};/*----------------------------------------------------------------------*//* substitute system functions */#if defined(__svr4__) && ! defined(_POSIX_VERSION)/* INTPROTO */intrxvt_getdtablesize(void){    struct rlimit   rlim;    getrlimit(RLIMIT_NOFILE, &rlim);    return rlim.rlim_cur;}#endif/*----------------------------------------------------------------------*//* EXTPROTO */intrxvt_init_vars(rxvt_t *r){    struct rxvt_hidden *h;#ifndef NULLS_ARE_NOT_ZEROS    MEMSET(r, 0, sizeof(rxvt_t));#endif    h = r->h = (struct rxvt_hidden *)rxvt_calloc(1, sizeof(struct rxvt_hidden));    r->PixColors = (Pixel *)rxvt_malloc(sizeof(Pixel) * TOTAL_COLORS);    if (r->h == NULL || r->PixColors == NULL)	return -1;#ifdef NULLS_ARE_NOT_ZEROS    r->Xdisplay = NULL;    r->TermWin.fontset = NULL;#ifndef NO_BOLDFONT    r->TermWin.boldFont_loaded = NULL;#endif    r->h->ttydev = NULL;    h->xa[XA_COMPOUND_TEXT] = h->xa[XA_MULTIPLE] = h->xa[XA_TARGETS] =	h->xa[XA_TEXT] = h->xa[XA_TIMESTAMP] = h->xa[XA_VT_SELECTION] =	h->xa[XA_INCR] = NULL;    h->locale = NULL;# ifdef MENUBAR    h->menubarGC = None;    h->BuildMenu = NULL;	/* the menu currently being built */#  if (MENUBAR_MAX > 1)    h->CurrentBar = NULL;#  endif			/* (MENUBAR_MAX > 1) */# endif# ifdef USE_XIM    h->Input_Context = NULL;# endif    h->v_bufstr = NULL;# ifdef RXVT_GRAPHICS    h->gr_root = NULL;    h->gr_last_id = None;# endif    h->buffer = NULL;    h->compose.compose_ptr = NULL;#endif				/* NULLS_ARE_NOT_ZEROS */#if defined(XPM_BACKGROUND) || defined(TRANSPARENT)    r->TermWin.pixmap = None;#endif#ifdef UTMP_SUPPORT    h->next_utmp_action = SAVE;#endif#ifndef NO_SETOWNER_TTYDEV    h->next_tty_action = SAVE;#endif    h->MEvent.time = CurrentTime;    h->MEvent.button = AnyButton;    r->Options = DEFAULT_OPTIONS;    h->want_refresh = 1;    h->cmd_pid = -1;    r->cmd_fd = r->tty_fd = r->Xfd = -1;    h->PrivateModes = h->SavedModes = PrivMode_Default;    r->TermWin.focus = 1;    r->TermWin.ncol = 80;    r->TermWin.nrow = 24;    r->TermWin.int_bwidth = INTERNALBORDERWIDTH;    r->TermWin.ext_bwidth = EXTERNALBORDERWIDTH;    r->TermWin.lineSpace = LINESPACE;    r->TermWin.saveLines = SAVELINES;    r->numPixColors = TOTAL_COLORS;#ifndef NO_NEW_SELECTION    r->selection_style = NEW_SELECT;#else    r->selection_style = OLD_SELECT;#endif#ifndef NO_BRIGHTCOLOR    h->colorfgbg = DEFAULT_RSTYLE;#endif#if defined (HOTKEY_CTRL) || defined (HOTKEY_META)    h->ks_bigfont = XK_greater;    h->ks_smallfont = XK_less;#endif#ifdef GREEK_SUPPORT    h->ks_greekmodeswith = GREEK_KEYBOARD_MODESWITCH;#endif    h->refresh_limit = 1;    h->refresh_type = SLOW_REFRESH;    h->prev_nrow = h->prev_ncol = 0;#ifdef MULTICHAR_SET# ifdef MULTICHAR_ENCODING    r->encoding_method = MULTICHAR_ENCODING;# endif    h->multichar_decode = rxvt_euc2jis;#endif    h->oldcursor.row = h->oldcursor.col = -1;#ifdef XPM_BACKGROUND/*  h->bgPixmap.w = h->bgPixmap.h = 0; */    h->bgPixmap.x = h->bgPixmap.y = 50;    h->bgPixmap.pixmap = None;#endif    h->last_bot = h->last_state = -1;#ifdef MENUBAR    h->menu_readonly = 1;# if !(MENUBAR_MAX > 1)    h->CurrentBar = &(h->BarList);# endif				/* (MENUBAR_MAX > 1) */#endif    return 0;}/* EXTPROTO */voidrxvt_init_secondary(rxvt_t *r){#ifdef TTY_GID_SUPPORT    struct group   *gr = getgrnam("tty");    if (gr) {		/* change group ownership of tty to "tty" */	r->h->ttymode = S_IRUSR | S_IWUSR | S_IWGRP;	r->h->ttygid = gr->gr_gid;    } else#endif				/* TTY_GID_SUPPORT */    {	r->h->ttymode = S_IRUSR | S_IWUSR | S_IWGRP | S_IWOTH;	r->h->ttygid = getgid();    }#if defined(HAVE_XSETLOCALE) || defined(HAVE_SETLOCALE)    r->h->locale = setlocale(LC_CTYPE, "");#endif}/*----------------------------------------------------------------------*//* EXTPROTO */const char    **rxvt_init_resources(rxvt_t *r, int argc, const char *const *argv){    int             i, r_argc;    char           *val;    const char    **cmd_argv, **r_argv;    const char    **rs;/* * Look for -exec option.  Find => split and make cmd_argv[] of command args */    for (r_argc = 0; r_argc < argc; r_argc++)	if (!STRCMP(argv[r_argc], "-e") || !STRCMP(argv[r_argc], "-exec"))	    break;    r_argv = (const char **)rxvt_malloc(sizeof(char *) * (r_argc + 1));    for (i = 0; i < r_argc; i++)	r_argv[i] = (const char *)argv[i];    r_argv[i] = NULL;    if (r_argc == argc)	cmd_argv = NULL;    else {	cmd_argv = (const char **)rxvt_malloc(sizeof(char *) * (argc - r_argc));	for (i = 0; i < argc - r_argc - 1; i++)	    cmd_argv[i] = (const char *)argv[i + r_argc + 1];	cmd_argv[i] = NULL;    }/* clear all resources */    rs = r->h->rs;    for (i = 0; i < NUM_RESOURCES;)	rs[i++] = NULL;    rs[Rs_name] = rxvt_r_basename(argv[0]);/* * Open display, get options/resources and create the window */    if ((rs[Rs_display_name] = getenv("DISPLAY")) == NULL)	rs[Rs_display_name] = ":0";    rxvt_get_options(r, r_argc, r_argv);    free(r_argv);#ifdef LOCAL_X_IS_UNIX    if (rs[Rs_display_name][0] == ':') {	val = rxvt_malloc(5 + STRLEN(rs[Rs_display_name]));	STRCPY(val, "unix");	STRCAT(val, rs[Rs_display_name]);	r->Xdisplay = XOpenDisplay(val);	free(val);    }#endif    if (r->Xdisplay == NULL	&& (r->Xdisplay = XOpenDisplay(rs[Rs_display_name])) == NULL) {	rxvt_print_error("can't open display %s", rs[Rs_display_name]);	exit(EXIT_FAILURE);    }    rxvt_extract_resources(r, r->Xdisplay, rs[Rs_name]);/* * set any defaults not already set */    if (cmd_argv && cmd_argv[0]) {

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -