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

📄 main.c

📁 源码,标准c++用力
💻 C
📖 第 1 页 / 共 5 页
字号:
    {"ttyModes", "TtyModes", XtRString, sizeof(char *),	offset(tty_modes), XtRString, (caddr_t) NULL},    {"utmpInhibit", "UtmpInhibit", XtRBoolean, sizeof (Boolean),	offset(utmpInhibit), XtRString, "false"},    {"sunFunctionKeys", "SunFunctionKeys", XtRBoolean, sizeof (Boolean),	offset(sunFunctionKeys), XtRString, "false"},    {"waitForMap", "WaitForMap", XtRBoolean, sizeof (Boolean),        offset(wait_for_map), XtRString, "false"},    {"useInsertMode", "UseInsertMode", XtRBoolean, sizeof (Boolean),        offset(useInsertMode), XtRString, "false"},};#undef offsetstatic char *fallback_resources[] = {    "XTerm*SimpleMenu*menuLabel.vertSpace: 100",    "XTerm*SimpleMenu*HorizontalMargins: 16",    "XTerm*SimpleMenu*Sme.height: 16",    "XTerm*SimpleMenu*Cursor: left_ptr",    "XTerm*mainMenu.Label:  Main Options (no app-defaults)",    "XTerm*vtMenu.Label:  VT Options (no app-defaults)",    "XTerm*fontMenu.Label:  VT Fonts (no app-defaults)",    "XTerm*tekMenu.Label:  Tek Options (no app-defaults)",    NULL};/* Command line options table.  Only resources are entered here...there is a   pass over the remaining options after XrmParseCommand is let loose. */static XrmOptionDescRec optionDescList[] = {{"-geometry",	"*vt100.geometry",XrmoptionSepArg,	(caddr_t) NULL},{"-132",	"*c132",	XrmoptionNoArg,		(caddr_t) "on"},{"+132",	"*c132",	XrmoptionNoArg,		(caddr_t) "off"},{"-ah",		"*alwaysHighlight", XrmoptionNoArg,	(caddr_t) "on"},{"+ah",		"*alwaysHighlight", XrmoptionNoArg,	(caddr_t) "off"},{"-b",		"*internalBorder",XrmoptionSepArg,	(caddr_t) NULL},{"-cb",		"*cutToBeginningOfLine", XrmoptionNoArg, (caddr_t) "off"},{"+cb",		"*cutToBeginningOfLine", XrmoptionNoArg, (caddr_t) "on"},{"-cc",		"*charClass",	XrmoptionSepArg,	(caddr_t) NULL},{"-cn",		"*cutNewline",	XrmoptionNoArg,		(caddr_t) "off"},{"+cn",		"*cutNewline",	XrmoptionNoArg,		(caddr_t) "on"},{"-cr",		"*cursorColor",	XrmoptionSepArg,	(caddr_t) NULL},{"-cu",		"*curses",	XrmoptionNoArg,		(caddr_t) "on"},{"+cu",		"*curses",	XrmoptionNoArg,		(caddr_t) "off"},{"-dc",		"*dynamicColors",XrmoptionNoArg,	(caddr_t) "off"},{"+dc", 	"*dynamicColors",XrmoptionNoArg,	(caddr_t) "on"},{"-e",		NULL,		XrmoptionSkipLine,	(caddr_t) NULL},{"-fb",		"*boldFont",	XrmoptionSepArg,	(caddr_t) NULL},{"-j",		"*jumpScroll",	XrmoptionNoArg,		(caddr_t) "on"},{"+j",		"*jumpScroll",	XrmoptionNoArg,		(caddr_t) "off"},/* parse logging options anyway for compatibility */{"-l",		"*logging",	XrmoptionNoArg,		(caddr_t) "on"},{"+l",		"*logging",	XrmoptionNoArg,		(caddr_t) "off"},{"-lf",		"*logFile",	XrmoptionSepArg,	(caddr_t) NULL},{"-ls",		"*loginShell",	XrmoptionNoArg,		(caddr_t) "on"},{"+ls",		"*loginShell",	XrmoptionNoArg,		(caddr_t) "off"},{"-mb",		"*marginBell",	XrmoptionNoArg,		(caddr_t) "on"},{"+mb",		"*marginBell",	XrmoptionNoArg,		(caddr_t) "off"},{"-mc",		"*multiClickTime", XrmoptionSepArg,	(caddr_t) NULL},{"-ms",		"*pointerColor",XrmoptionSepArg,	(caddr_t) NULL},{"-nb",		"*nMarginBell",	XrmoptionSepArg,	(caddr_t) NULL},{"-rw",		"*reverseWrap",	XrmoptionNoArg,		(caddr_t) "on"},{"+rw",		"*reverseWrap",	XrmoptionNoArg,		(caddr_t) "off"},{"-aw",		"*autoWrap",	XrmoptionNoArg,		(caddr_t) "on"},{"+aw",		"*autoWrap",	XrmoptionNoArg,		(caddr_t) "off"},{"-s",		"*multiScroll",	XrmoptionNoArg,		(caddr_t) "on"},{"+s",		"*multiScroll",	XrmoptionNoArg,		(caddr_t) "off"},{"-sb",		"*scrollBar",	XrmoptionNoArg,		(caddr_t) "on"},{"+sb",		"*scrollBar",	XrmoptionNoArg,		(caddr_t) "off"},{"-sf",		"*sunFunctionKeys", XrmoptionNoArg,	(caddr_t) "on"},{"+sf",		"*sunFunctionKeys", XrmoptionNoArg,	(caddr_t) "off"},{"-si",		"*scrollTtyOutput",	XrmoptionNoArg,		(caddr_t) "off"},{"+si",		"*scrollTtyOutput",	XrmoptionNoArg,		(caddr_t) "on"},{"-sk",		"*scrollKey",	XrmoptionNoArg,		(caddr_t) "on"},{"+sk",		"*scrollKey",	XrmoptionNoArg,		(caddr_t) "off"},{"-sl",		"*saveLines",	XrmoptionSepArg,	(caddr_t) NULL},{"-t",		"*tekStartup",	XrmoptionNoArg,		(caddr_t) "on"},{"+t",		"*tekStartup",	XrmoptionNoArg,		(caddr_t) "off"},{"-tm",		"*ttyModes",	XrmoptionSepArg,	(caddr_t) NULL},{"-tn",		"*termName",	XrmoptionSepArg,	(caddr_t) NULL},{"-ut",		"*utmpInhibit",	XrmoptionNoArg,		(caddr_t) "on"},{"+ut",		"*utmpInhibit",	XrmoptionNoArg,		(caddr_t) "off"},{"-im",		"*useInsertMode", XrmoptionNoArg,	(caddr_t) "on"},{"+im",		"*useInsertMode", XrmoptionNoArg,	(caddr_t) "off"},{"-vb",		"*visualBell",	XrmoptionNoArg,		(caddr_t) "on"},{"+vb",		"*visualBell",	XrmoptionNoArg,		(caddr_t) "off"},{"-wf",		"*waitForMap",	XrmoptionNoArg,		(caddr_t) "on"},{"+wf",		"*waitForMap",	XrmoptionNoArg,		(caddr_t) "off"},/* bogus old compatibility stuff for which there are   standard XtAppInitialize options now */{"%",		"*tekGeometry",	XrmoptionStickyArg,	(caddr_t) NULL},{"#",		".iconGeometry",XrmoptionStickyArg,	(caddr_t) NULL},{"-T",		"*title",	XrmoptionSepArg,	(caddr_t) NULL},{"-n",		"*iconName",	XrmoptionSepArg,	(caddr_t) NULL},{"-r",		"*reverseVideo",XrmoptionNoArg,		(caddr_t) "on"},{"+r",		"*reverseVideo",XrmoptionNoArg,		(caddr_t) "off"},{"-rv",		"*reverseVideo",XrmoptionNoArg,		(caddr_t) "on"},{"+rv",		"*reverseVideo",XrmoptionNoArg,		(caddr_t) "off"},{"-w",		".borderWidth", XrmoptionSepArg,	(caddr_t) NULL},};static struct _options {  char *opt;  char *desc;} options[] = {{ "-help",                 "print out this message" },{ "-display displayname",  "X server to contact" },{ "-geometry geom",        "size (in characters) and position" },{ "-/+rv",                 "turn on/off reverse video" },{ "-bg color",             "background color" },{ "-fg color",             "foreground color" },{ "-bd color",             "border color" },{ "-bw number",            "border width in pixels" },{ "-fn fontname",          "normal text font" },{ "-iconic",               "start iconic" },{ "-name string",          "client instance, icon, and title strings" },{ "-title string",         "title string" },{ "-xrm resourcestring",   "additional resource specifications" },{ "-/+132",                "turn on/off column switch inhibiting" },{ "-/+ah",                 "turn on/off always highlight" },{ "-b number",             "internal border in pixels" },{ "-/+cb",                 "turn on/off cut-to-beginning-of-line inhibit" },{ "-cc classrange",        "specify additional character classes" },{ "-/+cn",                 "turn on/off cut newline inhibit" },{ "-cr color",             "text cursor color" },{ "-/+cu",                 "turn on/off curses emulation" },{ "-fb fontname",          "bold text font" },{ "-/+im",		   "use insert mode for TERMCAP" },{ "-/+j",                  "turn on/off jump scroll" },#ifdef ALLOWLOGGING{ "-/+l",                  "turn on/off logging" },{ "-lf filename",          "logging filename" },#else{ "-/+l",                  "turn on/off logging (not supported)" },{ "-lf filename",          "logging filename (not supported)" },#endif{ "-/+ls",                 "turn on/off login shell" },{ "-/+mb",                 "turn on/off margin bell" },{ "-mc milliseconds",      "multiclick time in milliseconds" },{ "-ms color",             "pointer color" },{ "-nb number",            "margin bell in characters from right end" },{ "-/+aw",                 "turn on/off auto wraparound" },{ "-/+rw",                 "turn on/off reverse wraparound" },{ "-/+s",                  "turn on/off multiscroll" },{ "-/+sb",                 "turn on/off scrollbar" },{ "-/+sf",                 "turn on/off Sun Function Key escape codes" },{ "-/+si",                 "turn on/off scroll-on-tty-output inhibit" },{ "-/+sk",                 "turn on/off scroll-on-keypress" },{ "-sl number",            "number of scrolled lines to save" },{ "-/+t",                  "turn on/off Tek emulation window" },{ "-tm string",            "terminal mode keywords and characters" },{ "-tn name",              "TERM environment variable name" },#ifdef UTMP{ "-/+ut",                 "turn on/off utmp inhibit" },#else{ "-/+ut",                 "turn on/off utmp inhibit (not supported)" },#endif{ "-/+vb",                 "turn on/off visual bell" },{ "-/+wf",                 "turn on/off wait for map before command exec" },{ "-e command args ...",   "command to execute" },{ "%geom",                 "Tek window geometry" },{ "#geom",                 "icon window geometry" },{ "-T string",             "title name for window" },{ "-n string",             "icon name for window" },#ifdef TIOCCONS{ "-C",                    "intercept console messages" },#else{ "-C",                    "intercept console messages (not supported)" },#endif{ "-Sxxd",                 "slave mode on \"ttyxx\", file descriptor \"d\"" },{ "-/+dc",				"turn off/on dynamic color selection" },{ "-jobs",				"manual job control" },{ "-version", 			"display version information" },{ NULL, NULL }};static char *message[] = {"Fonts must be fixed width and, if both normal and bold are specified, must","have the same size.  If only a normal font is specified, it will be used for","both normal and bold text (by doing overstriking).  The -e option, if given,","must be appear at the end of the command line, otherwise the user's default","shell will be started.  Options that start with a plus sign (+) restore the","default.",NULL};static void Syntax (badOption)    char *badOption;{    struct _options *opt;    int col;    fprintf (stderr, "%s:  bad command line option \"%s\"\r\n\n",	     ProgramName, badOption);    fprintf (stderr, "usage:  %s", ProgramName);    col = 8 + strlen(ProgramName);    for (opt = options; opt->opt; opt++) {	int len = 3 + strlen(opt->opt);	 /* space [ string ] */	if (col + len > 79) {	    fprintf (stderr, "\r\n   ");  /* 3 spaces */	    col = 3;	}	fprintf (stderr, " [%s]", opt->opt);	col += len;    }    fprintf (stderr, "\r\n\nType %s -help for a full description.\r\n\n",	     ProgramName);    exit (1);}static void Help (){    struct _options *opt;    char **cpp;    fprintf (stderr, "usage:\n        %s [-options ...] [-e command args]\n\n",	     ProgramName);    fprintf (stderr, "where options include:\n");    for (opt = options; opt->opt; opt++) {	fprintf (stderr, "    %-28s %s\n", opt->opt, opt->desc);    }    putc ('\n', stderr);    for (cpp = message; *cpp; cpp++) {	fputs (*cpp, stderr);	putc ('\n', stderr);    }    putc ('\n', stderr);    exit (0);}#ifdef TIOCCONS/* ARGSUSED */static BooleanConvertConsoleSelection(w, selection, target, type, value, length, format)    Widget w;    Atom *selection, *target, *type;    XtPointer *value;    unsigned long *length;    int *format;{#ifdef DEBUGGING	fprintf(stderr, "entered ConvertConsoleSelection\n");#endif    /* we don't save console output, so can't offer it */    return False;}#endif /* TIOCCONS */extern WidgetClass xtermWidgetClass;Arg ourTopLevelShellArgs[] = {	{ XtNallowShellResize, (XtArgVal) TRUE },		{ XtNinput, (XtArgVal) TRUE },};int number_ourTopLevelShellArgs = 2;	XtAppContext app_con;Widget toplevel;Bool waiting_for_initial_map;extern void do_hangup();/* * DeleteWindow(): Action proc to implement ICCCM delete_window. *//* ARGSUSED */voidDeleteWindow(w, event, params, num_params)    Widget w;    XEvent *event;    String *params;    Cardinal *num_params;{#ifdef DEBUGGING	fprintf(stderr, "entered DeleteWindow\n");#endif  if (w == toplevel)    if (term->screen.Tshow)      hide_vt_window();    else      do_hangup(w);  else    if (term->screen.Vshow)      hide_tek_window();    else      do_hangup(w);}/* ARGSUSED */voidKeyboardMapping(w, event, params, num_params)    Widget w;    XEvent *event;    String *params;    Cardinal *num_params;{#ifdef DEBUGGING	fprintf(stderr, "entered KeyboardMapping\n");#endif    switch (event->type) {       case MappingNotify:	  XRefreshKeyboardMapping(&event->xmapping);	  break;    }#ifdef DEBUGGING	fprintf(stderr, "left KeyboardMapping\n");#endif}XtActionsRec actionProcs[] = {    "DeleteWindow", DeleteWindow,    "KeyboardMapping", KeyboardMapping,};Atom wm_delete_window;#ifdef GAPING_SECURITY_HOLE	int resetuid = 1;	/* Reset uid when spawning? */#endifmain (argc, argv)int argc;char **argv;{	register TScreen *screen;	register int pty;	int Xsocket, mode;	char *base_name();	int xerror(), xioerror();	int jobs=0;		/* Automatic/manual job control.  -- JLM */#ifdef DEBUGGING	fprintf(stderr, "entered Main\n");#endif	ProgramName = argv[0];	ttydev = (char *) malloc (strlen (TTYDEV) + 1);	ptydev = (char *) malloc (strlen (PTYDEV) + 1);	if (!ttydev || !ptydev) {	    fprintf (stderr, 	    	     "%s:  unable to allocate memory for ttydev or ptydev\n",		     ProgramName);	    exit (1);	}	strcpy (ttydev, TTYDEV);	strcpy (ptydev, PTYDEV);#ifdef USE_SYSV_TERMIO	/* Initialization is done here rather than above in order	** to prevent any assumptions about the order of the contents	** of the various terminal structures (which may change from	** implementation to implementation).	*/#if defined(macII) || defined(ATT) || defined(CRAY)	d_tio.c_iflag = ICRNL|IXON;	d_tio.c_oflag = OPOST|ONLCR|TAB3;    	d_tio.c_cflag = B9600|CS8|CREAD|PARENB|HUPCL;    	d_tio.c_lflag = ISIG|ICANON|ECHO|ECHOE|ECHOK;#ifndef USE_TERMIOS	d_tio.c_line = 0;#endif	d_tio.c_cc[VINTR] = CINTR;	d_tio.c_cc[VQUIT] = CQUIT;	d_tio.c_cc[VERASE] = CERASE;	d_tio.c_cc[VKILL] = CKILL;    	d_tio.c_cc[VEOF] = CEOF;	d_tio.c_cc[VEOL] = CNUL;	d_tio.c_cc[VEOL2] = CNUL;	d_tio.c_cc[VSWTCH] = CNUL;#ifdef USE_TERMIOS	d_tio.c_cc[VSUSP] = CSUSP;	d_tio.c_cc[VDSUSP] = CDSUSP;	d_tio.c_cc[VREPRINT] = CNUL;	d_tio.c_cc[VDISCARD] = CNUL;	d_tio.c_cc[VWERASE] = CNUL;	d_tio.c_cc[VLNEXT] = CNUL;#endif#ifdef TIOCSLTC        d_ltc.t_suspc = CSUSP;		/* t_suspc */        d_ltc.t_dsuspc = CDSUSP;	/* t_dsuspc */        d_ltc.t_rprntc = 0;		/* reserved...*/        d_ltc.t_flushc = 0;        d_ltc.t_werasc = 0;        d_ltc.t_lnextc = 0;#endif /* TIOCSLTC */#ifdef TIOCLSET	d_lmode = 0;#endif /* TIOCLSET */#else  /* else !macII */	d_tio.c_iflag = ICRNL|IXON;	d_tio.c_oflag = OPOST|ONLCR#ifndef BSD_TERMIOS		/* NetBSD doesn't have TAB3, uses OXTABS   -- JLM */					|TAB3#else					|OXTABS#endif					;#ifdef BAUD_0    	d_tio.c_cflag = CS8|CREAD|PARENB|HUPCL;#else	/* !BAUD_0 */    	d_tio.c_cflag = B9600|CS8|CREAD|PARENB|HUPCL;#endif	/* !BAUD_0 */    	d_tio.c_lflag = ISIG|ICANON|ECHO|ECHOE|ECHOK;#ifndef BSD_TERMIOS		/* NetBSD doesn't have c_line   -- JLM */	d_tio.c_line = 0;#endif	d_tio.c_cc[VINTR] = 0x7f;		/* DEL  */	d_tio.c_cc[VQUIT] = '\\' & 0x3f;	/* '^\'	*/	d_tio.c_cc[VERASE] = '#';		/* '#'	*/	d_tio.c_cc[VKILL] = '@';		/* '@'	*/    	d_tio.c_cc[VEOF] = 'D' & 0x3f;		/* '^D'	*/	d_tio.c_cc[VEOL] = '@' & 0x3f;		/* '^@'	*/#ifdef VSWTCH	d_tio.c_cc[VSWTCH] = '@' & 0x3f;	/* '^@'	*/#endif	/* VSWTCH */	/* now, try to inherit tty settings */	{	    int i;	    for (i = 0; i <= 2; i++) {		struct termio deftio;		if (ioctl (i, TCGETA, &deftio) == 0) {		    d_tio.c_cc[VINTR] = deftio.c_cc[VINTR];		    d_tio.c_cc[VQUIT] = deftio.c_cc[VQUIT];		    d_tio.c_cc[VERASE] = deftio.c_cc[VERASE];		    d_tio.c_cc[VKILL] = deftio.c_cc[VKILL];		    d_tio.c_cc[VEOF] = deftio.c_cc[VEOF];		    d_tio.c_cc[VEOL] = deftio.c_cc[VEOL];#ifdef VSWTCH		    d_tio.c_cc[VSWTCH] = deftio.c_cc[VSWTCH];#endif /* VSWTCH */		    break;		}	    }	}#ifdef TIOCSLTC        d_ltc.t_suspc = '\000';		/* t_suspc */        d_ltc.t_dsuspc = '\000';	/* t_dsuspc */        d_ltc.t_rprntc = '\377';	/* reserved...*/        d_ltc.t_flushc = '\377';        d_ltc.t_werasc = '\377';        d_ltc.t_lnextc = '\377';#endif	/* TIOCSLTC */#ifdef USE_TERMIOS	d_tio.c_cc[VSUSP] = '\000';	d_tio.c_cc[VDSUSP] = '\000';	d_tio.c_cc[VREPRINT] = '\377';	d_tio.c_cc[VDISCARD] = '\377';	d_tio.c_cc[VWERASE] = '\377';	d_tio.c_cc[VLNEXT] = '\377';#endif#ifdef TIOCLSET	d_lmode = 0;#endif	/* TIOCLSET */#endif  /* macII */#endif	/* USE_SYSV_TERMIO */	/* Init the Toolkit. */	toplevel = XtAppInitialize (&app_con, "XTerm", 				    optionDescList, XtNumber(optionDescList), 				    &argc, argv, fallback_resources, NULL, 0);	XtGetApplicationResources(toplevel, (XtPointer) &resource,				  application_resources,				  XtNumber(application_resources), NULL, 0);	waiting_for_initial_map = resource.wait_for_map;	/*	 * ICCCM delete_window.

⌨️ 快捷键说明

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