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

📄 pgw.c

📁 这是一个同样来自贝尔实验室的和UNIX有着渊源的操作系统, 其简洁的设计和实现易于我们学习和理解
💻 C
📖 第 1 页 / 共 2 页
字号:
/* thanks to Caerwyn Jones <caerwyn@comcast.net> for this module */#include <u.h>#include <libc.h>#include <bio.h>#include "dict.h"enum {	Buflen=1000,	Maxaux=5,};/* Possible tags */enum {	B,		/* Bold */	Blockquote,	/* Block quote */	Br,		/* Break line */	Cd,		/* ? coloquial data */	Col,		/* ? Coloquial */	Def,		/* Definition */	Hw, 		/* Head Word */	I,		/* Italics */	P,		/* Paragraph */	Pos,		/* Part of Speach */	Sn,		/* Sense */	U,		/* ? cross reference*/	Wf,		/* ? word form */	Ntag		/* end of tags */};/* Assoc tables must be sorted on first field */static Assoc tagtab[] = {	{"b",			B},	{"blockquote",	Blockquote},	{"BR",		Br},	{"cd",		Cd},	{"col",		Col},	{"def",		Def},	{"hw",		Hw},	{"i",			I},	{"p",			P},	{"pos",		Pos},	{"sn",		Sn},	{"u",			U},	{"wf",		Wf},};/* Possible tag auxilliary info */enum {	Cols,		/* number of columns in a table */	Num,		/* letter or number, for a sense */	St,		/* status (e.g., obs) */	Naux};static Assoc auxtab[] = {	{"cols",	Cols},	{"num",		Num},	{"st",		St}};static Assoc spectab[] = {	{"3on4",	L'¾'},	{"AElig",		L'Æ'},	{"Aacute",	L'Á'},	{"Aang",	L'Å'},	{"Abarab",	L'Ā'},	{"Acirc",	L'Â'},	{"Agrave",	L'À'},	{"Alpha",	L'Α'},	{"Amacr",	L'Ā'},	{"Asg",		L'Ʒ'},		/* Unicyle. Cf "Sake" */	{"Auml",	L'Ä'},	{"Beta",	L'Β'},	{"Cced",	L'Ç'},	{"Chacek",	L'Č'},	{"Chi",		L'Χ'},	{"Chirho",	L'☧'},		/* Chi Rho U+2627 */	{"Csigma",	L'Ϛ'},	{"Delta",	L'Δ'},	{"Eacute",	L'É'},	{"Ecirc",	L'Ê'},	{"Edh",		L'Ð'},	{"Epsilon",	L'Ε'},	{"Eta",		L'Η'},	{"Gamma",	L'Γ'},	{"Iacute",	L'Í'},	{"Icirc",	L'Î'},	{"Imacr",	L'Ī'},	{"Integ",	L'∫'},	{"Iota",	L'Ι'},	{"Kappa",	L'Κ'},	{"Koppa",	L'Ϟ'},	{"Lambda",	L'Λ'},	{"Lbar",	L'Ł'},	{"Mu",		L'Μ'},	{"Naira",	L'N'},		/* should have bar through */	{"Nplus",	L'N'},		/* should have plus above */	{"Ntilde",	L'Ñ'},	{"Nu",		L'Ν'},	{"Oacute",	L'Ó'},	{"Obar",	L'Ø'},	{"Ocirc",	L'Ô'},	{"Oe",		L'Œ'},	{"Omega",	L'Ω'},	{"Omicron",	L'Ο'},	{"Ouml",	L'Ö'},	{"Phi",		L'Φ'},	{"Pi",		L'Π'},	{"Psi",		L'Ψ'},	{"Rho",		L'Ρ'},	{"Sacute",	L'Ś'},	{"Sigma",	L'Σ'},	{"Summ",	L'∑'},	{"Tau",		L'Τ'},	{"Th",		L'Þ'},	{"Theta",	L'Θ'},	{"Tse",		L'Ц'},	{"Uacute",	L'Ú'},	{"Ucirc",	L'Û'},	{"Upsilon",	L'Υ'},	{"Uuml",	L'Ü'},	{"Wyn",		L'ƿ'},		/* wynn U+01BF */	{"Xi",		L'Ξ'},	{"Ygh",		L'Ʒ'},		/* Yogh	U+01B7 */	{"Zeta",	L'Ζ'},	{"Zh",		L'Ʒ'},		/* looks like Yogh. Cf "Sake" */	{"a",		L'a'},		/* ante */	{"aacute",	L'á'},	{"aang",	L'å'},	{"aasper",	MAAS},	{"abreve",	L'ă'},	{"acirc",	L'â'},	{"acute",		LACU},	{"aelig",		L'æ'},	{"agrave",	L'à'},	{"ahook",	L'ą'},	{"alenis",	MALN},	{"alpha",	L'α'},	{"amacr",	L'ā'},	{"amp",		L'&'},	{"and",		MAND},	{"ang",		LRNG},	{"angle",	L'∠'},	{"ankh",	L'☥'},		/* ankh U+2625 */	{"ante",	L'a'},		/* before (year) */	{"aonq",	MAOQ},	{"appreq",	L'≃'},	{"aquar",	L'♒'},	{"arDadfull",	L'ض'},		/* Dad U+0636 */	{"arHa",	L'ح'},		/* haa U+062D */	{"arTa",	L'ت'},		/* taa U+062A */	{"arain",	L'ع'},		/* ain U+0639 */	{"arainfull",	L'ع'},		/* ain U+0639 */	{"aralif",	L'ا'},		/* alef U+0627 */	{"arba",	L'ب'},		/* baa U+0628 */	{"arha",	L'ه'},		/* ha U+0647 */	{"aries",	L'♈'},	{"arnun",	L'ن'},		/* noon U+0646 */	{"arnunfull",	L'ن'},		/* noon U+0646 */	{"arpa",	L'ه'},		/* ha U+0647 */	{"arqoph",	L'ق'},		/* qaf U+0642 */	{"arshinfull",	L'ش'},		/* sheen U+0634 */	{"arta",	L'ت'},		/* taa U+062A */	{"artafull",	L'ت'},		/* taa U+062A */	{"artha",	L'ث'},		/* thaa U+062B */	{"arwaw",	L'و'},		/* waw U+0648 */	{"arya",	L'ي'},		/* ya U+064A */	{"aryafull",	L'ي'},		/* ya U+064A */	{"arzero",	L'٠'},		/* indic zero U+0660 */	{"asg",		L'ʒ'},		/* unicycle character. Cf "hallow" */	{"asper",	LASP},	{"assert",	L'⊢'},	{"astm",	L'⁂'},		/* asterism: should be upside down */	{"at",		L'@'},	{"atilde",	L'ã'},	{"auml",	L'ä'},	{"ayin",	L'ع'},		/* arabic ain U+0639 */	{"b1",		L'-'},		/* single bond */	{"b2",		L'='},		/* double bond */	{"b3",		L'≡'},		/* triple bond */	{"bbar",	L'ƀ'},		/* b with bar U+0180 */	{"beta",	L'β'},	{"bigobl",	L'/'},	{"blC",		L'C'},		/* should be black letter */	{"blJ",		L'J'},		/* should be black letter */	{"blU",		L'U'},		/* should be black letter */	{"blb",		L'b'},		/* should be black letter */	{"blozenge",	L'◊'},		/* U+25CA; should be black */	{"bly",		L'y'},		/* should be black letter */	{"bra",		MBRA},	{"brbl",	LBRB},	{"breve",	LBRV},	{"bslash",	L'\\'},	{"bsquare",	L'■'},		/* black square U+25A0 */	{"btril",	L'◀'},		/* U+25C0 */	{"btrir",	L'▶'},		/* U+25B6 */	{"c",		L'c'},		/* circa */	{"cab",		L'〉'},	{"cacute",	L'ć'},	{"canc",	L'♋'},	{"capr",	L'♑'},	{"caret",	L'^'},	{"cb",		L'}'},	{"cbigb",	L'}'},	{"cbigpren",	L')'},	{"cbigsb",	L']'},	{"cced",	L'ç'},	{"cdil",	LCED},	{"cdsb",	L'〛'},		/* ]] U+301b */	{"cent",	L'¢'},	{"chacek",	L'č'},	{"chi",		L'χ'},	{"circ",	LRNG},	{"circa",	L'c'},		/* about (year) */	{"circbl",	L'̥'},		/* ring below accent U+0325 */	{"circle",	L'○'},		/* U+25CB */	{"circledot",	L'⊙'},	{"click",	L'ʖ'},	{"club",	L'♣'},	{"comtime",	L'C'},	{"conj",	L'☌'},	{"cprt",	L'©'},	{"cq",		L'\''},	{"cqq",		L'”'},	{"cross",	L'✠'},		/* maltese cross U+2720 */	{"crotchet",	L'♩'},	{"csb",		L']'},	{"ctilde",	L'c'},		/* +tilde */	{"ctlig",	MLCT},	{"cyra",	L'а'},	{"cyre",	L'е'},	{"cyrhard",	L'ъ'},	{"cyrjat",	L'ѣ'},	{"cyrm",	L'м'},	{"cyrn",	L'н'},	{"cyrr",	L'р'},	{"cyrsoft",	L'ь'},	{"cyrt",	L'т'},	{"cyry",	L'ы'},	{"dag",		L'†'},	{"dbar",	L'đ'},	{"dblar",	L'⇋'},	{"dblgt",	L'≫'},	{"dbllt",	L'≪'},	{"dced",	L'd'},		/* +cedilla */	{"dd",		MDD},	{"ddag",	L'‡'},	{"ddd",		MDDD},	{"decr",	L'↓'},	{"deg",		L'°'},	{"dele",	L'd'},		/* should be dele */	{"delta",	L'δ'},	{"descnode",	L'☋'},		/* descending node U+260B */	{"diamond",	L'♢'},	{"digamma",	L'ϝ'},	{"div",		L'÷'},	{"dlessi",	L'ı'},	{"dlessj1",	L'j'},		/* should be dotless */	{"dlessj2",	L'j'},		/* should be dotless */	{"dlessj3",	L'j'},		/* should be dotless */	{"dollar",	L'$'},	{"dotab",	LDOT},	{"dotbl",	LDTB},	{"drachm",	L'ʒ'},	{"dubh",	L'-'},	{"eacute",	L'é'},	{"earth",	L'♁'},	{"easper",	MEAS},	{"ebreve",	L'ĕ'},	{"ecirc",	L'ê'},	{"edh",		L'ð'},	{"egrave",	L'è'},	{"ehacek",	L'ě'},	{"ehook",	L'ę'},	{"elem",	L'∊'},	{"elenis",	MELN},	{"em",		L'—'},	{"emacr",	L'ē'},	{"emem",	MEMM},	{"en",		L'–'},	{"epsilon",	L'ε'},	{"equil",	L'⇋'},	{"ergo",	L'∴'},	{"es",		MES},	{"eszett",	L'ß'},	{"eta",		L'η'},	{"eth",		L'ð'},	{"euml",	L'ë'},	{"expon",	L'↑'},	{"fact",	L'!'},	{"fata",	L'ɑ'},	{"fatpara",	L'¶'},		/* should have fatter, filled in bowl */	{"female",	L'♀'},	{"ffilig",	MLFFI},	{"fflig",	MLFF},	{"ffllig",	MLFFL},	{"filig",	MLFI},	{"flat",	L'♭'},	{"fllig",	MLFL},	{"frE",		L'E'},		/* should be curly */	{"frL",		L'L'},		/* should be curly */	{"frR",		L'R'},		/* should be curly */	{"frakB",	L'B'},		/* should have fraktur style */	{"frakG",	L'G'},	{"frakH",	L'H'},	{"frakI",	L'I'},	{"frakM",	L'M'},	{"frakU",	L'U'},	{"frakX",	L'X'},	{"frakY",	L'Y'},	{"frakh",	L'h'},	{"frbl",	LFRB},	{"frown",	LFRN},	{"fs",		L' '},	{"fsigma",	L'ς'},	{"gAacute",	L'Á'},		/* should be Α+acute */	{"gaacute",	L'α'},		/* +acute */	{"gabreve",	L'α'},		/* +breve */	{"gafrown",	L'α'},		/* +frown */	{"gagrave",	L'α'},		/* +grave */	{"gamacr",	L'α'},		/* +macron */	{"gamma",	L'γ'},	{"gauml",	L'α'},		/* +umlaut */	{"ge",		L'≧'},	{"geacute",	L'ε'},		/* +acute */	{"gegrave",	L'ε'},		/* +grave */	{"ghacute",	L'η'},		/* +acute */	{"ghfrown",	L'η'},		/* +frown */	{"ghgrave",	L'η'},		/* +grave */	{"ghmacr",	L'η'},		/* +macron */	{"giacute",	L'ι'},		/* +acute */	{"gibreve",	L'ι'},		/* +breve */	{"gifrown",	L'ι'},		/* +frown */	{"gigrave",	L'ι'},		/* +grave */	{"gimacr",	L'ι'},		/* +macron */	{"giuml",	L'ι'},		/* +umlaut */	{"glagjat",	L'ѧ'},	{"glots",	L'ˀ'},	{"goacute",	L'ο'},		/* +acute */	{"gobreve",	L'ο'},		/* +breve */	{"grave",	LGRV},	{"gt",		L'>'},	{"guacute",	L'υ'},		/* +acute */	{"gufrown",	L'υ'},		/* +frown */	{"gugrave",	L'υ'},		/* +grave */	{"gumacr",	L'υ'},		/* +macron */	{"guuml",	L'υ'},		/* +umlaut */	{"gwacute",	L'ω'},		/* +acute */	{"gwfrown",	L'ω'},		/* +frown */	{"gwgrave",	L'ω'},		/* +grave */	{"hacek",	LHCK},	{"halft",	L'⌈'},	{"hash",	L'#'},	{"hasper",	MHAS},	{"hatpath",	L'ֲ'},		/* hataf patah U+05B2 */	{"hatqam",	L'ֳ'},		/* hataf qamats U+05B3 */	{"hatseg",	L'ֱ'},		/* hataf segol U+05B1 */	{"hbar",	L'ħ'},	{"heart",	L'♡'},	{"hebaleph",	L'א'},		/* aleph U+05D0 */	{"hebayin",	L'ע'},		/* ayin U+05E2 */	{"hebbet",	L'ב'},		/* bet U+05D1 */	{"hebbeth",	L'ב'},		/* bet U+05D1 */	{"hebcheth",	L'ח'},		/* bet U+05D7 */	{"hebdaleth",	L'ד'},		/* dalet U+05D3 */	{"hebgimel",	L'ג'},		/* gimel U+05D2 */	{"hebhe",	L'ה'},		/* he U+05D4 */	{"hebkaph",	L'כ'},		/* kaf U+05DB */	{"heblamed",	L'ל'},		/* lamed U+05DC */	{"hebmem",	L'מ'},		/* mem U+05DE */	{"hebnun",	L'נ'},		/* nun U+05E0 */	{"hebnunfin",	L'ן'},		/* final nun U+05DF */	{"hebpe",	L'פ'},		/* pe U+05E4 */	{"hebpedag",	L'ף'},		/* final pe? U+05E3 */	{"hebqoph",	L'ק'},		/* qof U+05E7 */	{"hebresh",	L'ר'},		/* resh U+05E8 */	{"hebshin",	L'ש'},		/* shin U+05E9 */	{"hebtav",	L'ת'},		/* tav U+05EA */	{"hebtsade",	L'צ'},		/* tsadi U+05E6 */	{"hebwaw",	L'ו'},		/* vav? U+05D5 */	{"hebyod",	L'י'},		/* yod U+05D9 */	{"hebzayin",	L'ז'},		/* zayin U+05D6 */	{"hgz",		L'ʒ'},		/* ??? Cf "alet" */	{"hireq",	L'ִ'},		/* U+05B4 */	{"hlenis",	MHLN},	{"hook",	LOGO},	{"horizE",	L'E'},		/* should be on side */	{"horizP",	L'P'},		/* should be on side */	{"horizS",	L'∽'},	{"horizT",	L'⊣'},	{"horizb",	L'{'},		/* should be underbrace */	{"ia",		L'α'},	{"iacute",	L'í'},	{"iasper",	MIAS},	{"ib",		L'β'},	{"ibar",	L'ɨ'},	{"ibreve",	L'ĭ'},	{"icirc",	L'î'},	{"id",		L'δ'},	{"ident",	L'≡'},	{"ie",		L'ε'},	{"ifilig",	MLFI},	{"ifflig",	MLFF},	{"ig",		L'γ'},	{"igrave",	L'ì'},	{"ih",		L'η'},	{"ii",		L'ι'},	{"ik",		L'κ'},	{"ilenis",	MILN},	{"imacr",	L'ī'},	{"implies",	L'⇒'},	{"index",	L'☞'},	{"infin",	L'∞'},	{"integ",	L'∫'},	{"intsec",	L'∩'},	{"invpri",	L'ˏ'},	{"iota",	L'ι'},	{"iq",		L'ψ'},	{"istlig",	MLST},	{"isub",	L'ϵ'},		/* iota below accent */	{"iuml",	L'ï'},	{"iz",		L'ζ'},	{"jup",		L'♃'},	{"kappa",	L'κ'},	{"koppa",	L'ϟ'},	{"lambda",	L'λ'},	{"lar",		L'←'},	{"lbar",	L'ł'},	{"le",		L'≦'},	{"lenis",	LLEN},	{"leo",		L'♌'},	{"lhalfbr",	L'⌈'},	{"lhshoe",	L'⊃'},	{"libra",	L'♎'},	{"llswing",	MLLS},	{"lm",		L'ː'},	{"logicand",	L'∧'},	{"logicor",	L'∨'},	{"longs",	L'ʃ'},	{"lrar",	L'↔'},	{"lt",		L'<'},	{"ltappr",	L'≾'},	{"ltflat",	L'∠'},	{"lumlbl",	L'l'},		/* +umlaut below */	{"mac",		LMAC},	{"male",	L'♂'},	{"mc",		L'c'},		/* should be raised */	{"merc",	L'☿'},		/* mercury U+263F */	{"min",		L'−'},	{"moonfq",	L'☽'},		/* first quarter moon U+263D */	{"moonlq",	L'☾'},		/* last quarter moon U+263E */	{"msylab",	L'm'},		/* +sylab (ˌ) */	{"mu",		L'μ'},	{"nacute",	L'ń'},	{"natural",	L'♮'},	{"neq",		L'≠'},	{"nfacute",	L'′'},	{"nfasper",	L'ʽ'},	{"nfbreve",	L'˘'},	{"nfced",	L'¸'},	{"nfcirc",	L'ˆ'},	{"nffrown",	L'⌢'},	{"nfgra",	L'ˋ'},	{"nfhacek",	L'ˇ'},	{"nfmac",	L'¯'},	{"nftilde",	L'˜'},	{"nfuml",	L'¨'},	{"ng",		L'ŋ'},	{"not",		L'¬'},	{"notelem",	L'∉'},	{"ntilde",	L'ñ'},	{"nu",		L'ν'},	{"oab",		L'〈'},	{"oacute",	L'ó'},	{"oasper",	MOAS},	{"ob",		L'{'},	{"obar",	L'ø'},	{"obigb",	L'{'},		/* should be big */	{"obigpren",	L'('},	{"obigsb",	L'['},		/* should be big */	{"obreve",	L'ŏ'},	{"ocirc",	L'ô'},	{"odsb",	L'〚'},		/* [[ U+301A */	{"oelig",		L'œ'},	{"oeamp",	L'&'},	{"ograve",	L'ò'},	{"ohook",	L'o'},		/* +hook */	{"olenis",	MOLN},	{"omacr",	L'ō'},	{"omega",	L'ω'},	{"omicron",	L'ο'},	{"ope",		L'ɛ'},	{"opp",		L'☍'},	{"oq",		L'`'},	{"oqq",		L'“'},	{"or",		MOR},	{"osb",		L'['},	{"otilde",	L'õ'},	{"ouml",	L'ö'},	{"ounce",	L'℥'},		/* ounce U+2125 */	{"ovparen",	L'⌢'},		/* should be sideways ( */	{"p",		L'′'},	{"pa",		L'∂'},	{"page",	L'P'},	{"pall",	L'ʎ'},	{"paln",	L'ɲ'},	{"par",		PAR},	{"para",	L'¶'},	{"pbar",	L'p'},		/* +bar */	{"per",		L'℘'},		/* per U+2118 */	{"phi",		L'φ'},	{"phi2",	L'ϕ'},	{"pi",		L'π'},	{"pisces",	L'♓'},	{"planck",	L'ħ'},	{"plantinJ",	L'J'},		/* should be script */	{"pm",		L'±'},	{"pmil",	L'‰'},	{"pp",		L'″'},	{"ppp",		L'‴'},	{"prop",	L'∝'},	{"psi",		L'ψ'},	{"pstlg",	L'£'},	{"q",		L'?'},		/* should be raised */	{"qamets",	L'ֳ'},		/* U+05B3 */	{"quaver",	L'♪'},	{"rar",		L'→'},	{"rasper",	MRAS},	{"rdot",	L'·'},	{"recipe",	L'℞'},		/* U+211E */	{"reg",		L'®'},	{"revC",	L'Ɔ'},		/* open O U+0186 */	{"reva",	L'ɒ'},	{"revc",	L'ɔ'},	{"revope",	L'ɜ'},	{"revr",	L'ɹ'},	{"revsc",	L'˒'},		/* upside-down semicolon */	{"revv",	L'ʌ'},	{"rfa",		L'o'},		/* +hook (Cf "goal") */	{"rhacek",	L'ř'},	{"rhalfbr",	L'⌉'},	{"rho",		L'ρ'},	{"rhshoe",	L'⊂'},	{"rlenis",	MRLN},	{"rsylab",	L'r'},		/* +sylab */	{"runash",	L'F'},		/* should be runic 'ash' */	{"rvow",	L'˔'},	{"sacute",	L'ś'},	{"sagit",	L'♐'},	{"sampi",	L'ϡ'},	{"saturn",	L'♄'},	{"sced",	L'ş'},	{"schwa",	L'ə'},	{"scorpio",	L'♏'},	{"scrA",	L'A'},		/* should be script */	{"scrC",	L'C'},	{"scrE",	L'E'},	{"scrF",	L'F'},	{"scrI",	L'I'},	{"scrJ",	L'J'},	{"scrL",	L'L'},	{"scrO",	L'O'},	{"scrP",	L'P'},	{"scrQ",	L'Q'},	{"scrS",	L'S'},	{"scrT",	L'T'},	{"scrb",	L'b'},	{"scrd",	L'd'},	{"scrh",	L'h'},	{"scrl",	L'l'},	{"scruple",	L'℈'},		/* U+2108 */	{"sdd",		L'ː'},	{"sect",	L'§'},	{"semE",	L'∃'},	{"sh",		L'ʃ'},	{"shacek",	L'š'},	{"sharp",	L'♯'},	{"sheva",	L'ְ'},		/* U+05B0 */	{"shti",	L'ɪ'},	{"shtsyll",	L'∪'},

⌨️ 快捷键说明

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