| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793179417951796179717981799180018011802180318041805180618071808180918101811181218131814181518161817181818191820182118221823182418251826182718281829183018311832183318341835183618371838183918401841184218431844184518461847184818491850185118521853185418551856185718581859186018611862186318641865186618671868186918701871187218731874187518761877187818791880188118821883188418851886188718881889189018911892189318941895189618971898189919001901190219031904190519061907190819091910191119121913191419151916191719181919192019211922192319241925192619271928192919301931193219331934193519361937193819391940194119421943194419451946194719481949195019511952195319541955195619571958195919601961196219631964196519661967196819691970197119721973197419751976197719781979198019811982198319841985198619871988198919901991199219931994199519961997199819992000200120022003200420052006200720082009201020112012201320142015201620172018201920202021202220232024202520262027202820292030203120322033203420352036203720382039204020412042204320442045204620472048204920502051205220532054205520562057205820592060206120622063206420652066206720682069207020712072207320742075207620772078207920802081208220832084208520862087208820892090209120922093209420952096209720982099210021012102210321042105210621072108210921102111211221132114211521162117211821192120212121222123212421252126212721282129213021312132213321342135213621372138213921402141214221432144214521462147214821492150215121522153215421552156215721582159216021612162216321642165216621672168216921702171217221732174217521762177217821792180218121822183218421852186218721882189219021912192219321942195219621972198219922002201220222032204220522062207220822092210221122122213221422152216221722182219222022212222222322242225222622272228222922302231223222332234223522362237223822392240224122422243224422452246224722482249225022512252225322542255225622572258225922602261226222632264226522662267226822692270227122722273227422752276227722782279228022812282228322842285228622872288228922902291229222932294229522962297229822992300230123022303230423052306230723082309231023112312231323142315231623172318231923202321232223232324232523262327232823292330233123322333233423352336233723382339234023412342234323442345234623472348234923502351235223532354235523562357235823592360236123622363236423652366236723682369237023712372237323742375237623772378237923802381238223832384238523862387238823892390239123922393239423952396239723982399240024012402240324042405240624072408240924102411241224132414241524162417241824192420242124222423242424252426242724282429243024312432243324342435243624372438243924402441244224432444244524462447244824492450245124522453245424552456245724582459246024612462246324642465246624672468246924702471247224732474247524762477247824792480248124822483248424852486248724882489249024912492249324942495249624972498249925002501250225032504250525062507250825092510251125122513251425152516251725182519252025212522252325242525252625272528252925302531253225332534253525362537253825392540254125422543254425452546254725482549255025512552255325542555255625572558255925602561256225632564256525662567256825692570257125722573257425752576257725782579258025812582258325842585258625872588258925902591259225932594259525962597259825992600260126022603260426052606260726082609261026112612261326142615261626172618261926202621262226232624262526262627262826292630263126322633263426352636263726382639264026412642264326442645264626472648264926502651265226532654265526562657265826592660266126622663266426652666266726682669267026712672267326742675267626772678267926802681268226832684268526862687268826892690269126922693269426952696269726982699270027012702270327042705270627072708270927102711271227132714271527162717271827192720272127222723272427252726272727282729273027312732273327342735273627372738273927402741274227432744274527462747274827492750275127522753275427552756275727582759276027612762276327642765276627672768276927702771277227732774277527762777277827792780278127822783278427852786278727882789279027912792279327942795279627972798279928002801280228032804280528062807280828092810281128122813281428152816281728182819282028212822282328242825282628272828282928302831283228332834283528362837283828392840284128422843284428452846284728482849285028512852285328542855285628572858285928602861286228632864286528662867286828692870287128722873287428752876287728782879288028812882288328842885288628872888288928902891289228932894289528962897289828992900290129022903290429052906290729082909291029112912291329142915291629172918291929202921292229232924292529262927292829292930293129322933293429352936293729382939294029412942294329442945294629472948294929502951295229532954295529562957295829592960296129622963296429652966296729682969297029712972297329742975297629772978297929802981298229832984298529862987298829892990299129922993299429952996299729982999300030013002300330043005300630073008300930103011301230133014301530163017301830193020302130223023302430253026302730283029303030313032303330343035303630373038303930403041304230433044304530463047304830493050305130523053305430553056305730583059306030613062306330643065306630673068306930703071307230733074307530763077307830793080308130823083 |
- /******************************************************************************
- * This file is part of TinTin++ *
- * *
- * Copyright 2004-2020 Igor van den Hoven *
- * *
- * TinTin++ 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 3 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 TinTin++. If not, see https://www.gnu.org/licenses. *
- ******************************************************************************/
- /******************************************************************************
- * *
- * (T)he K(I)cki(N) (T)ickin D(I)kumud Clie(N)t *
- * *
- * coded by peter unold 1992 *
- * modified by Bill Reiss 1993 *
- * recoded by Igor van den Hoven 2004 *
- ******************************************************************************/
-
- #include <stdio.h>
- #include <zlib.h>
- #include <ctype.h>
- #include <termios.h>
- #include <pcre.h>
- #include <errno.h>
- #include <math.h>
- #include <stdarg.h>
- /******************************************************************************
- * Autoconf patching by David Hedbor *
- *******************************************************************************/
- #include "config.h"
- #if defined(HAVE_STRING_H)
- #include <string.h>
- #elif defined(HAVE_STRINGS_H)
- #include <strings.h>
- #endif
- #ifdef HAVE_STDLIB_H
- #include <stdlib.h>
- #endif
- #ifdef HAVE_UNISTD_H
- #include <unistd.h>
- #endif
- #ifdef HAVE_TIME_H
- #include <time.h>
- #endif
- #ifdef TIME_WITH_SYS_TIME
- #include <sys/time.h>
- #endif
- /*
- #ifdef SOCKS
- #include <socks.h>
- #endif
- */
- #ifndef BADSIG
- #define BADSIG (RETSIGTYPE (*)(int))-1
- #endif
- #ifdef HAVE_NET_ERRNO_H
- #include <net/errno.h>
- #endif
- #ifdef HAVE_GNUTLS_H
- #include <gnutls/gnutls.h>
- #include <gnutls/x509.h>
- #else
- #define gnutls_session_t int
- #endif
- #ifdef HAVE_SYS_SOCKET_H
- #include <sys/socket.h>
- #endif
- #ifdef HAVE_SYS_TYPES_H
- #include <sys/types.h>
- #endif
- #ifdef HAVE_SYS_STAT_H
- #include <sys/stat.h>
- #endif
- #if !defined(SO_PEERCRED)
- #define SO_PEERCRED 17
- #endif
- #ifndef __TINTIN_H__
- #define __TINTIN_H__
- /*
- A bunch of constants
- */
- #define FLAG_NONE 0
- #define FALSE 0
- #define TRUE 1
- #define IS_LINE 0
- #define IS_PROMPT 1
- #define GET_ONE 0 // stop at spaces
- #define GET_ALL 1 // stop at semicolon
- #define GET_NST 2 // nest square brackets
- #define GET_VBT 4 // ignore semicolon for verbatim mode
- #define GET_SPC 8 // don't strip spaces
- #define TEL_N 0
- #define TEL_Y 1
- #define TEL_I 2
- #define SCREEN_WIDTH 80
- #define SCREEN_HEIGHT 24
- #define SORT_PRIORITY 0
- #define SORT_ALPHA 1
- #define SORT_ALNUM 2
- #define SORT_STABLE 3
- #define SORT_APPEND 4
- #define SEEK_MATCH 0
- #define SEEK_REPLACE 1
- #define SEEK_APPEND 2
- #define DEFAULT_OPEN '{'
- #define DEFAULT_CLOSE '}'
- #define COMMAND_SEPARATOR ';'
- #define ASCII_NUL 0
- #define ASCII_ENQ 5 // Ignore if possible
- #define ASCII_HTML_AMP 6 // Might conflict with MSDP
- #define ASCII_BEL 7
- #define ASCII_BS 8
- #define ASCII_HTAB 9
- #define ASCII_LF 10
- #define ASCII_VTAB 11
- #define ASCII_FF 12
- #define ASCII_CR 13
- #define ASCII_ESC 27
- #define ASCII_HTML_OPEN 28 // Also file separator, whatever that is
- #define ASCII_HTML_CLOSE 30 // Also record separator, whatever that is
- #define CTRL_A 1
- #define CTRL_B 2
- #define CTRL_C 3
- #define CTRL_D 4
- #define CTRL_E 5
- #define CTRL_F 6
- #define CTRL_G 7
- #define CTRL_H 8
- #define CTRL_I 9
- #define CTRL_J 10
- #define CTRL_K 11
- #define CTRL_L 12
- #define CTRL_M 13
- #define CTRL_N 14
- #define CTRL_O 15
- #define CTRL_P 16
- #define CTRL_Q 17
- #define CTRL_R 18
- #define CTRL_S 19
- #define CTRL_T 20
- #define CTRL_U 21
- #define CTRL_V 22
- #define CTRL_W 23
- #define CTRL_X 24
- #define CTRL_Y 25
- #define CTRL_Z 26
- #define ASCII_DEL 127
- #define DAEMON_DIR "daemons"
- #define TINTIN_DIR ".tintin"
- #define HISTORY_FILE "history.txt"
- #define MALLOC_SIZE 1000000
- #define STRING_SIZE 80000
- #define BUFFER_SIZE 40000
- #define INPUT_SIZE 10000
- #define PATH_SIZE 4096
- #define STACK_SIZE 1000
- #define NAME_SIZE 256
- #define NUMBER_SIZE 100
- #define LEGEND_SIZE 50
- #define COLOR_SIZE 50
- #define CHAR_SIZE 5
- #define LIST_SIZE 2
- #define CLIENT_NAME "TinTin++"
- #define CLIENT_VERSION "2.02.31 "
- #define XT_E 0x27
- #define XT_C 0x5B
- #define XT_O 0x5D
- #define XT_W 0x74
- #define XT_T 0x07
- #define XT_CS 0x73
- #define XT_S "\073"
- #define XT_V "\000"
- /*
- <faa> - red
- <afa> - green
- <ffa> - yellow
- <aaf> - blue
- <faf> - magenta
- <aff> - cyan
- <fff> - white
- <acf> - Azure
- <afc> - Jade
- <caf> - Violet
- <cfa> - Lime
- <fac> - Pink
- <fca> - Orange
- */
- #define COLOR_BRACE "\e[38;5;164m" // "<eae>" // magenta
- #define COLOR_COMMAND "\e[38;5;044m" // "<aee>" // Cyan
- #define COLOR_CONFIG "\e[38;5;208m" // "<fca>" // Orange
- #define COLOR_RESET "\e[0m" // "<088>" // reset
- #define COLOR_SEPARATOR "\e[38;5;160m" // "<eaa>" // red
- #define COLOR_SESSION "\e[38;5;48m" // "<afc>" // Jade
- #define COLOR_STATEMENT "\e[38;5;040m" // "<aea>" // green
- #define COLOR_STRING "\e[38;5;188m" // "<eee>" // white
- #define COLOR_DEBUG "\e[38;5;037m" // "<add>" // cyan
- #define COLOR_TEXT "\e[0m" // "<088>" // reset
- #define COLOR_TINTIN "\e[38;5;184m" // "<eea>" // yellow
- #define COLOR_REPEAT "\e[38;5;33m" // "<acf>" // azure
- #define COLOR_HELP_DIM "\e[22;37m"
- #define COLOR_HELP_BOLD "\e[1;37m"
- #define COLOR_HELP_TITLE "\e[1;32m"
- #define COLOR_HELP_TABLE "\e[22;36m"
- /*
- Index for lists used by tintin
- */
- enum lists
- {
- LIST_ACTION,
- LIST_ALIAS,
- LIST_BUTTON,
- LIST_CLASS,
- LIST_COMMAND,
- LIST_CONFIG,
- LIST_DELAY,
- LIST_EVENT,
- LIST_FUNCTION,
- LIST_GAG,
- LIST_HIGHLIGHT,
- LIST_HISTORY,
- LIST_LANDMARK,
- LIST_MACRO,
- LIST_PATH,
- LIST_PATHDIR,
- LIST_PROMPT,
- LIST_SUBSTITUTE,
- LIST_TAB,
- LIST_TERRAIN,
- LIST_TICKER,
- LIST_VARIABLE,
- LIST_MAX,
- };
- /*
- #define LIST_ACTION 0
- #define LIST_ALIAS 1
- #define LIST_BUTTON 2
- #define LIST_CLASS 3
- #define LIST_COMMAND 4
- #define LIST_CONFIG 5
- #define LIST_DELAY 6
- #define LIST_EVENT 7
- #define LIST_FUNCTION 8
- #define LIST_GAG 9
- #define LIST_HIGHLIGHT 10
- #define LIST_HISTORY 11
- #define LIST_LANDMARK 12
- #define LIST_MACRO 13
- #define LIST_PATH 14
- #define LIST_PATHDIR 15
- #define LIST_PROMPT 16
- #define LIST_SUBSTITUTE 17
- #define LIST_TAB 18
- #define LIST_TERRAIN 19
- #define LIST_TICKER 20
- #define LIST_VARIABLE 21
- #define LIST_MAX 22
- */
- /*
- Command type
- */
- enum operators
- {
- TOKEN_TYPE_BREAK,
- TOKEN_TYPE_CASE,
- TOKEN_TYPE_COMMAND,
- TOKEN_TYPE_CONTINUE,
- TOKEN_TYPE_DEFAULT,
- TOKEN_TYPE_END,
- TOKEN_TYPE_ELSE,
- TOKEN_TYPE_ELSEIF,
- TOKEN_TYPE_FOREACH,
- TOKEN_TYPE_BROKEN_FOREACH,
- TOKEN_TYPE_IF,
- TOKEN_TYPE_LOOP,
- TOKEN_TYPE_BROKEN_LOOP,
- TOKEN_TYPE_PARSE,
- TOKEN_TYPE_BROKEN_PARSE,
- TOKEN_TYPE_REGEX,
- TOKEN_TYPE_RETURN,
- TOKEN_TYPE_SESSION,
- TOKEN_TYPE_STRING,
- TOKEN_TYPE_SWITCH,
- TOKEN_TYPE_WHILE,
- TOKEN_TYPE_BROKEN_WHILE,
- TOKEN_TYPE_STATEMENT,
- TOKEN_TYPE_CONFIG,
- TOKEN_TYPE_REPEAT
- };
- /*
- Various flags
- */
- #define BV00 (0 << 0)
- #define BV01 (1 << 0)
- #define BV02 (1 << 1)
- #define BV03 (1 << 2)
- #define BV04 (1 << 3)
- #define BV05 (1 << 4)
- #define BV06 (1 << 5)
- #define BV07 (1 << 6)
- #define BV08 (1 << 7)
- #define BV09 (1 << 8)
- #define BV10 (1 << 9)
- #define BV11 (1 << 10)
- #define BV12 (1 << 11)
- #define BV13 (1 << 12)
- #define BV14 (1 << 13)
- #define BV15 (1 << 14)
- #define BV16 (1 << 15)
- #define BV17 (1 << 16)
- #define BV18 (1 << 17)
- #define BV19 (1 << 18)
- #define BV20 (1 << 19)
- #define BV21 (1 << 20)
- #define BV22 (1 << 21)
- #define BV23 (1 << 22)
- #define BV24 (1 << 23)
- #define BV25 (1 << 24)
- #define BV26 (1 << 25)
- #define BV27 (1 << 26)
- #define BV28 (1 << 27)
- #define BV29 (1 << 28)
- #define BV30 (1 << 29)
- #define BV31 (1 << 30)
- #define BV32 (1LL << 31)
- #define BV33 (1LL << 32)
- #define BV34 (1LL << 33)
- #define BV35 (1LL << 34)
- #define BV36 (1LL << 35)
- #define BV37 (1LL << 36)
- #define BV38 (1LL << 37)
- #define BV39 (1LL << 38)
- #define BV40 (1LL << 39)
- #define BV41 (1LL << 40)
- #define BUFFER_FLAG_GREP BV01
- #define CHAR_FLAG_DIGIT BV01
- #define CHAR_FLAG_ALPHA BV02
- #define CHAR_FLAG_VAR BV03
- #define CHAR_FLAG_SPACE BV04
- #define CHAR_FLAG_HEX BV05
- #define CHAR_FLAG_CSI BV06
- #define CHAR_FLAG_PRINT BV07 // max
- #define CHARSET_FLAG_UTF8 BV01
- #define CHARSET_FLAG_BIG5 BV02
- #define CHARSET_FLAG_GBK1 BV03
- #define CHARSET_FLAG_CP949 BV04
- #define CHARSET_FLAG_BIG5TOUTF8 BV05
- #define CHARSET_FLAG_FANSITOUTF8 BV06
- #define CHARSET_FLAG_GBK1TOUTF8 BV07
- #define CHARSET_FLAG_ISO1TOUTF8 BV08
- #define CHARSET_FLAG_ISO2TOUTF8 BV09
- #define CHARSET_FLAG_KOI8TOUTF8 BV10
- #define CHARSET_FLAG_CP1251TOUTF8 BV11
- #define CHARSET_FLAG_CP949TOUTF8 BV12
- #define CHARSET_FLAG_EUC CHARSET_FLAG_BIG5|CHARSET_FLAG_GBK1|CHARSET_FLAG_CP949
- #define CHARSET_FLAG_ALL_TOUTF8 CHARSET_FLAG_BIG5TOUTF8|CHARSET_FLAG_CP1251TOUTF8|CHARSET_FLAG_FANSITOUTF8|CHARSET_FLAG_GBK1TOUTF8|CHARSET_FLAG_ISO1TOUTF8|CHARSET_FLAG_ISO2TOUTF8|CHARSET_FLAG_KOI8TOUTF8|CHARSET_FLAG_CP949TOUTF8
- #define CHARSET_FLAG_ALL CHARSET_FLAG_UTF8|CHARSET_FLAG_ALL_TOUTF8|CHARSET_FLAG_EUC
- #define COL_BLD BV01
- #define COL_ITA BV02
- #define COL_UND BV03
- #define COL_BLK BV04
- #define COL_REV BV05
- #define COL_XTF BV06
- #define COL_XTF_5 BV07
- #define COL_XTF_R BV08
- #define COL_XTB BV09
- #define COL_XTB_5 BV10
- #define COL_XTB_R BV11
- #define COL_TCF BV12
- #define COL_TCF_2 BV13
- #define COL_TCF_R BV14
- #define COL_TCB BV15
- #define COL_TCB_2 BV16
- #define COL_TCB_R BV17
- #define CHAT_NAME_CHANGE 1
- #define CHAT_REQUEST_CONNECTIONS 2
- #define CHAT_CONNECTION_LIST 3
- #define CHAT_TEXT_EVERYBODY 4
- #define CHAT_TEXT_PERSONAL 5
- #define CHAT_TEXT_GROUP 6
- #define CHAT_MESSAGE 7
- #define CHAT_DO_NOT_DISTURB 8
- #define CHAT_SEND_ACTION 9
- #define CHAT_SEND_ALIAS 10
- #define CHAT_SEND_MACRO 11
- #define CHAT_SEND_VARIABLE 12
- #define CHAT_SEND_EVENT 13
- #define CHAT_SEND_GAG 14
- #define CHAT_SEND_HIGHLIGHT 15
- #define CHAT_SEND_LIST 16
- #define CHAT_SEND_ARRAY 17
- #define CHAT_SEND_BARITEM 18
- #define CHAT_VERSION 19
- #define CHAT_FILE_START 20
- #define CHAT_FILE_DENY 21
- #define CHAT_FILE_BLOCK_REQUEST 22
- #define CHAT_FILE_BLOCK 23
- #define CHAT_FILE_END 24
- #define CHAT_FILE_CANCEL 25
- #define CHAT_PING_REQUEST 26
- #define CHAT_PING_RESPONSE 27
- #define CHAT_PEEK_CONNECTIONS 28
- #define CHAT_PEEK_LIST 29
- #define CHAT_SNOOP_START 30
- #define CHAT_SNOOP_DATA 31
- #define CHAT_END_OF_COMMAND 255
- #define CHAT_FLAG_PRIVATE BV01
- #define CHAT_FLAG_REQUEST BV02
- #define CHAT_FLAG_SERVE BV03
- #define CHAT_FLAG_IGNORE BV04
- #define CHAT_FLAG_FORWARD BV05
- #define CHAT_FLAG_FORWARDBY BV06
- #define CHAT_FLAG_FORWARDALL BV07
- #define CHAT_FLAG_DND BV08
- #define CHAT_FLAG_LINKLOST BV09
- #define INPUT_FLAG_EDIT BV01
- #define INPUT_FLAG_HISTORYBROWSE BV02
- #define INPUT_FLAG_HISTORYSEARCH BV03
- #define INPUT_FLAG_CONVERTMETACHAR BV04
- #define INPUT_FLAG_REDRAW BV05
- #define PORT_FLAG_PRIVATE BV01
- #define PORT_FLAG_REQUEST BV02
- #define PORT_FLAG_SERVE BV03
- #define PORT_FLAG_IGNORE BV04
- #define PORT_FLAG_FORWARD BV05
- #define PORT_FLAG_FORWARDBY BV06
- #define PORT_FLAG_FORWARDALL BV07
- #define PORT_FLAG_DND BV08
- #define PORT_FLAG_LINKLOST BV09
- #define PORT_RANK_SPY 0 // observer
- #define PORT_RANK_DIPLOMAT 1 //
- #define PORT_RANK_SCOUT 2
- #define RANK_FLAG_SCOUT BV01
- #define COMM_FLAG_DISCONNECT BV01
- #define COMM_FLAG_PASSWORD BV02
- #define COMM_FLAG_REMOTEECHO BV03
- #define COMM_FLAG_EOR BV04
- #define COMM_FLAG_MSDPUPDATE BV05
- #define COMM_FLAG_256COLORS BV06
- #define COMM_FLAG_UTF8 BV07
- #define COMM_FLAG_GMCP BV08
- #define MSDP_FLAG_COMMAND BV01
- #define MSDP_FLAG_LIST BV02
- #define MSDP_FLAG_SENDABLE BV03
- #define MSDP_FLAG_REPORTABLE BV04
- #define MSDP_FLAG_CONFIGURABLE BV05
- #define MSDP_FLAG_REPORTED BV06
- #define MSDP_FLAG_UPDATED BV07
- #define MTTS_FLAG_ANSI BV01
- #define MTTS_FLAG_VT100 BV02
- #define MTTS_FLAG_UTF8 BV03
- #define MTTS_FLAG_256COLORS BV04
- #define MTTS_FLAG_MOUSETRACKING BV05
- #define MTTS_FLAG_COLORPALETTE BV06
- #define MTTS_FLAG_SCREENREADER BV07
- #define MTTS_FLAG_PROXY BV08
- #define MTTS_FLAG_TRUECOLOR BV09
- #define SCREEN_FLAG_CSIP BV01
- #define SCREEN_FLAG_OSCT BV02
- #define SCREEN_FLAG_OMIT BV03
- #define SCREEN_FLAG_GET_ONE BV04
- #define SCREEN_FLAG_GET_ALL BV05
- #define SCREEN_FLAG_GET_NONE BV06
- #define SCREEN_FLAG_SCROLLMODE BV07
- #define SCREEN_FLAG_SCROLLUPDATE BV08
- #define SCROLL_FLAG_RESIZE BV01
- #define STR_FLAG_STACK BV01
- #define STR_FLAG_LIST BV02
- #define STR_FLAG_FREE BV03
- // combines with event flags
- #define SUB_NONE BV00
- #define SUB_ARG BV01
- #define SUB_SEC BV02
- #define SUB_BRA BV03
- #define SUB_CMD BV04
- #define SUB_VAR BV05
- #define SUB_FUN BV06
- #define SUB_COL BV07
- #define SUB_ESC BV08
- #define SUB_EOL BV09 // telnet
- #define SUB_LNF BV10
- #define SUB_SIL BV11 // silent
- #define SUB_LIT BV12 // no soft escaping
- /*
- #define SUB_ARG BV01 reserved
- #define SUB_SEC BV02 reserved
- #define SUB_BRA BV03 reserved
- */
- #define EVENT_FLAG_CATCH BV04
- #define EVENT_FLAG_CLASS BV05
- #define EVENT_FLAG_GAG BV06
- #define EVENT_FLAG_INPUT BV07
- #define EVENT_FLAG_MAP BV08
- #define EVENT_FLAG_MOUSE BV09
- #define EVENT_FLAG_OUTPUT BV10
- #define EVENT_FLAG_PORT BV11
- #define EVENT_FLAG_SCAN BV12
- #define EVENT_FLAG_SCREEN BV13
- #define EVENT_FLAG_SESSION BV14
- #define EVENT_FLAG_SYSTEM BV15
- #define EVENT_FLAG_TELNET BV16
- #define EVENT_FLAG_TIME BV17
- #define EVENT_FLAG_UPDATE BV18
- #define EVENT_FLAG_VARIABLE BV19
- #define EVENT_FLAG_VT100 BV20
- #define TAB_FLAG_FORWARD BV01
- #define TAB_FLAG_BACKWARD BV02
- #define TAB_FLAG_COMPLETE BV03
- #define TAB_FLAG_CASELESS BV04
- #define TAB_FLAG_DICTIONARY BV05
- #define TAB_FLAG_LIST BV06
- #define TAB_FLAG_SCROLLBACK BV07
- #define REGEX_FLAG_NONE 0
- #define REGEX_FLAG_FIX BV01
- #define REGEX_FLAG_ARG BV02
- #define REGEX_FLAG_CMD BV03
- #define TINTIN_FLAG_HISTORYUPDATE BV01
- #define TINTIN_FLAG_SESSIONUPDATE BV02
- #define TINTIN_FLAG_PROCESSINPUT BV03
- #define TINTIN_FLAG_INHERITANCE BV04
- #define TINTIN_FLAG_INSERTINPUT BV05
- #define TINTIN_FLAG_CHILDLOCK BV06
- #define TINTIN_FLAG_TERMINATE BV07
- #define TINTIN_FLAG_MOUSETRACKING BV08
- #define TINTIN_FLAG_DISPLAYUPDATE BV09
- #define TINTIN_FLAG_DAEMONIZE BV10
- #define TINTIN_FLAG_HIDDENCURSOR BV11
- #define TINTIN_FLAG_LOCAL BV12
- #define TINTIN_FLAG_PRESERVEMACRO BV13
- #define TINTIN_FLAG_WINCHUPDATE BV14
- #define TINTIN_FLAG_NOHUP BV15 // fixes tcsetattr crashes with nohup
- #define TINTIN_FLAG_HIBERNATE BV16
- #define CONFIG_FLAG_AUTOPATCH BV01
- #define CONFIG_FLAG_AUTOPROMPT BV02
- #define CONFIG_FLAG_COLORPATCH BV03
- #define CONFIG_FLAG_COMPACT BV04
- #define CONFIG_FLAG_CONVERTMETA BV05
- #define CONFIG_FLAG_ECHOCOMMAND BV06
- #define CONFIG_FLAG_MCCP BV07
- #define CONFIG_FLAG_MOUSEDEBUG BV08
- #define CONFIG_FLAG_MOUSEINFO BV09
- #define CONFIG_FLAG_MOUSEPIXELS BV10
- #define CONFIG_FLAG_MOUSETRACKING BV11
- #define CONFIG_FLAG_REPEATENTER BV12
- #define CONFIG_FLAG_SCREENREADER BV13
- #define CONFIG_FLAG_SCROLLLOCK BV14
- #define CONFIG_FLAG_SPEEDWALK BV15
- #define CONFIG_FLAG_TELNET BV16
- #define CONFIG_FLAG_VERBATIM BV17
- #define CONFIG_FLAG_VERBOSE BV18
- #define CONFIG_FLAG_WORDWRAP BV19
- #define SES_FLAG_BUFFERUPDATE BV01
- #define SES_FLAG_CLOSED BV02
- #define SES_FLAG_CONNECTED BV03
- #define SES_FLAG_GAG BV04 // unused
- #define SES_FLAG_PATHMAPPING BV05
- #define SES_FLAG_PRINTBUFFER BV06
- #define SES_FLAG_PRINTLINE BV07
- #define SES_FLAG_READMUD BV08
- #define SES_FLAG_RUN BV09
- #define SES_FLAG_SCANABORT BV10
- #define SES_FLAG_SCROLLSPLIT BV11
- #define SES_FLAG_SNOOP BV12
- #define SES_FLAG_SNOOPSCROLL BV13
- #define SES_FLAG_SPLIT BV14
- #define SES_FLAG_UPDATEVTMAP BV15
- #define TELOPT_FLAG_TELNET BV01
- #define TELOPT_FLAG_SGA BV02
- #define TELOPT_FLAG_ECHO BV03
- #define TELOPT_FLAG_NAWS BV04
- #define TELOPT_FLAG_PROMPT BV05
- #define TELOPT_FLAG_DEBUG BV06
- #define TELOPT_FLAG_TSPEED BV07
- #define TELOPT_FLAG_TTYPE BV08
- #define TELOPT_FLAG_MTTS BV09
- #define TELOPT_FLAG_UPDATENAWS BV10
- #define TELOPT_FLAG_CR BV11
- #define TELOPT_FLAG_LF BV12
- #define TELOPT_FLAG_NUL BV13
- #define LIST_FLAG_IGNORE BV01
- #define LIST_FLAG_PRIORITY BV02
- #define LIST_FLAG_MESSAGE BV03
- #define LIST_FLAG_DEBUG BV04
- #define LIST_FLAG_INFO BV05
- #define LIST_FLAG_LOG BV06
- #define LIST_FLAG_CLASS BV07
- #define LIST_FLAG_READ BV08
- #define LIST_FLAG_WRITE BV09
- #define LIST_FLAG_HIDE BV10
- #define LIST_FLAG_INHERIT BV11
- #define LIST_FLAG_REGEX BV12
- #define LIST_FLAG_NEST BV13
- #define LIST_FLAG_CASE BV14
- #define LIST_FLAG_DEFAULT LIST_FLAG_MESSAGE
- #define NODE_FLAG_COLOR BV01
- #define NODE_FLAG_MULTI BV02
- #define LOG_FLAG_NONE 0
- #define LOG_FLAG_LINEFEED BV01
- #define LOG_FLAG_OVERWRITE BV02
- #define LOG_FLAG_APPEND BV03
- #define LOG_FLAG_NEXT BV04
- #define LOG_FLAG_LOW BV05
- #define LOG_FLAG_HTML BV06
- #define LOG_FLAG_PLAIN BV07
- #define LOG_FLAG_RAW BV08
- #define LOG_FLAG_STAMP BV09
- // Saved in map files, so don't swap around
- // keep synced with exit flags
- #define ROOM_FLAG_AVOID BV01
- #define ROOM_FLAG_HIDE BV02
- #define ROOM_FLAG_LEAVE BV03
- #define ROOM_FLAG_VOID BV04
- #define ROOM_FLAG_STATIC BV05
- #define ROOM_FLAG_CURVED BV06
- #define ROOM_FLAG_PATH BV07
- #define ROOM_FLAG_NOGLOBAL BV08
- #define ROOM_FLAG_INVIS BV09
- #define ROOM_FLAG_AVOID_TMP BV10|ROOM_FLAG_AVOID // To realign exit and room flags in the future.
- #define ROOM_FLAG_HIDE_TMP BV11|ROOM_FLAG_HIDE
- #define ROOM_FLAG_LEAVE_TMP BV12|ROOM_FLAG_LEAVE
- #define ROOM_FLAG_VOID_TMP BV13|ROOM_FLAG_VOID
- #define ROOM_FLAG_STATIC_TMP BV13|ROOM_FLAG_STATIC
- #define ROOM_FLAG_CURVED_TMP BV14|ROOM_FLAG_CURVED
- #define ROOM_FLAG_BLOCK BV15
- #define ROOM_FLAG_TERRAIN BV20
- #define ROOM_FLAG_FOG BV21
- // keep synced with room flags
- #define EXIT_FLAG_HIDE BV01
- #define EXIT_FLAG_AVOID BV02
- #define EXIT_FLAG_INVIS BV03
- #define EXIT_FLAG_BLOCK BV04
- #define EXIT_FLAG_ALL BV01|BV02|BV03|BV04
- #define EXIT_GRID_0 0
- #define EXIT_GRID_N 1
- #define EXIT_GRID_E 2
- #define EXIT_GRID_S 3
- #define EXIT_GRID_W 4
- #define EXIT_GRID_U 5
- #define EXIT_GRID_D 6
- #define EXIT_GRID_NE 7
- #define EXIT_GRID_NW 8
- #define EXIT_GRID_SE 9
- #define EXIT_GRID_SW 10
- #define MAP_FLAG_STATIC BV01
- #define MAP_FLAG_VTMAP BV02
- #define MAP_FLAG_DIRECTION BV03
- #define MAP_FLAG_ASCIIGRAPHICS BV04
- #define MAP_FLAG_ASCIIVNUMS BV05
- #define MAP_FLAG_MUDFONT BV06
- #define MAP_FLAG_NOFOLLOW BV07
- #define MAP_FLAG_SYMBOLGRAPHICS BV08
- #define MAP_FLAG_UNICODEGRAPHICS BV09
- #define MAP_FLAG_BLOCKGRAPHICS BV10
- #define MAP_FLAG_RESIZE BV11
- #define MAP_FLAG_SYNC BV12
- #define MAP_FLAG_ASCIILENGTH BV13
- #define MAP_FLAG_TERRAIN BV14
- #define MAP_FLAG_UPDATETERRAIN BV15
- #define MAP_FLAG_DOUBLED BV16
- #define MAP_FLAG_QUIET BV17
- #define MAP_FLAG_READ BV18
- #define MAP_FLAG_PANCAKE BV19
- #define MAP_FLAG_FAST BV20
- #define MAP_SEARCH_NAME 0
- #define MAP_SEARCH_EXITS 1
- #define MAP_SEARCH_DESC 2
- #define MAP_SEARCH_AREA 3
- #define MAP_SEARCH_NOTE 4
- #define MAP_SEARCH_TERRAIN 5
- #define MAP_SEARCH_FLAG 6
- #define MAP_SEARCH_ID 7
- #define MAP_SEARCH_DISTANCE 8
- #define MAP_SEARCH_MAX 9
- #define MAP_EXIT_N 1
- #define MAP_EXIT_E 2
- #define MAP_EXIT_S 4
- #define MAP_EXIT_W 8
- #define MAP_EXIT_U 16
- #define MAP_EXIT_D 32
- #define MAP_DIR_N (1LL << MAP_EXIT_N)
- #define MAP_DIR_E (1LL << MAP_EXIT_E)
- #define MAP_DIR_S (1LL << MAP_EXIT_S)
- #define MAP_DIR_W (1LL << MAP_EXIT_W)
- #define MAP_DIR_U (1LL << MAP_EXIT_U)
- #define MAP_DIR_D (1LL << MAP_EXIT_D)
- #define MAP_DIR_NE (1LL << (MAP_EXIT_N|MAP_EXIT_E))
- #define MAP_DIR_NW (1LL << (MAP_EXIT_N|MAP_EXIT_W))
- #define MAP_DIR_SE (1LL << (MAP_EXIT_S|MAP_EXIT_E))
- #define MAP_DIR_SW (1LL << (MAP_EXIT_S|MAP_EXIT_W))
- #define MAP_UNDO_MOVE (1 << 0)
- #define MAP_UNDO_CREATE (1 << 1)
- #define MAP_UNDO_LINK (1 << 2)
- #define MAP_UNDO_INSERT (1 << 3)
- #define TERRAIN_FLAG_DENSE BV01
- #define TERRAIN_FLAG_AMPLE BV02
- #define TERRAIN_FLAG_SPARSE BV03
- #define TERRAIN_FLAG_SCANT BV04
- #define TERRAIN_FLAG_NARROW BV05
- #define TERRAIN_FLAG_STANDARD BV06
- #define TERRAIN_FLAG_WIDE BV07
- #define TERRAIN_FLAG_VAST BV08
- #define TERRAIN_FLAG_FADEIN BV09
- #define TERRAIN_FLAG_FADEOUT BV10
- #define TERRAIN_FLAG_DOUBLE BV11
- #define MOUSE_FLAG_BUTTON_A 1
- #define MOUSE_FLAG_BUTTON_B 2
- #define MOUSE_FLAG_SHIFT 4
- #define MOUSE_FLAG_ALT 8
- #define MOUSE_FLAG_CTRL 16
- #define MOUSE_FLAG_MOTION 32
- #define MOUSE_FLAG_WHEEL 64
- #define MOUSE_FLAG_EXTRA 128
- #define MOUSE_FLAG_RELEASE 256
- #define CURSOR_FLAG_ALWAYS 1
- //#define CURSOR_FLAG_NEVER 2
- #define CURSOR_FLAG_GET_ONE 4
- #define CURSOR_FLAG_GET_ALL 8
- #define STARTUP_FLAG_NOGREETING 1
- #define STARTUP_FLAG_SCREENREADER 2
- #define STARTUP_FLAG_NORESET 4
- #define STARTUP_FLAG_ARGUMENT 8
- #define STARTUP_FLAG_NOTITLE 16
- #define STARTUP_FLAG_VERBOSE 32
- #define STARTUP_FLAG_NOHUP 64
- #define WRAP_FLAG_NONE 0
- #define WRAP_FLAG_DISPLAY BV01
- #define WRAP_FLAG_WORD BV02
- #define WRAP_FLAG_SPLIT BV03
- #define WRAP_FLAG_TAIL BV04
- #define LEGEND_ASCII 0
- #define LEGEND_ASCII_MISC 16
- #define LEGEND_ASCII_CURVED 20
- #define LEGEND_ASCII_DIRS 24
- #define LEGEND_UNICODE 32
- #define LEGEND_UNICODE_MISC 48
- #define LEGEND_UNICODE_CURVED 52
- #define LEGEND_UNICODE_DIRS 56
- #define LEGEND_MUDFONT 64
- #define LEGEND_MUDFONT_NWS 64
- #define LEGEND_MUDFONT_NES 96
- #define LEGEND_MUDFONT_CURVED 192
- #define LEGEND_UNICODE_GRAPHICS 196
- #define LEGEND_MAX 230
- #define UNICODE_DIR_SE 1
- #define UNICODE_DIR_NE 2
- #define UNICODE_DIR_SW 4
- #define UNICODE_DIR_NW 8
- #define UNICODE_DIR_D 16
- #define UNICODE_DIR_N 17
- #define UNICODE_DIR_S 18
- #define UNICODE_DIR_NS 19
- #define UNICODE_DIR_U 20
- #define UNICODE_DIR_E 21
- #define UNICODE_DIR_W 22
- #define UNICODE_DIR_EW 23
- #define UNICODE_DIR_RL 24
- #define UNICODE_DIR_RL_CURVED 25
- #define UNICODE_DIR_RR 26
- #define UNICODE_DIR_RR_CURVED 27
- #define MAP_COLOR_AVOID 0
- #define MAP_COLOR_BACK 1
- #define MAP_COLOR_BLOCK 2
- #define MAP_COLOR_EXIT 3
- #define MAP_COLOR_FOG 4
- #define MAP_COLOR_HIDE 5
- #define MAP_COLOR_INVIS 6
- #define MAP_COLOR_PATH 7
- #define MAP_COLOR_ROOM 8
- #define MAP_COLOR_SYMBOL 9
- #define MAP_COLOR_USER 10
- #define MAP_COLOR_MAX 11
- /*
- Some macros to deal with double linked lists
- */
- #define LINK(link, head, tail) \
- { \
- if ((head) == NULL) \
- { \
- (head) = (link); \
- } \
- else \
- { \
- (tail)->next = (link); \
- } \
- (link)->next = NULL; \
- (link)->prev = (tail); \
- (tail) = (link); \
- }
- /*
- #define INSERT_LEFT(link, right, head) \
- { \
- (link)->prev = (right)->prev; \
- (right)->prev = (link); \
- (link)->next = (right); \
- \
- if ((link)->prev) \
- { \
- (link)->prev->next = (link); \
- } \
- else \
- { \
- (head) = (link); \
- } \
- }
- #define INSERT_RIGHT(link, left, tail) \
- { \
- (link)->next = (left)->next; \
- (left)->next = (link); \
- (link)->prev = (left); \
- \
- if ((link)->next) \
- { \
- (link)->next->prev = (link); \
- } \
- else \
- { \
- (tail) = (link); \
- } \
- }
- */
- #define UNLINK(link, head, tail) \
- { \
- if (((link)->prev == NULL && (link) != head) \
- || ((link)->next == NULL && (link) != tail)) \
- { \
- tintin_printf2(NULL, "#UNLINK ERROR in file %s on line %d", __FILE__, __LINE__); \
- dump_stack(); \
- } \
- if ((link)->prev == NULL) \
- { \
- (head) = (link)->next; \
- } \
- else \
- { \
- (link)->prev->next = (link)->next; \
- } \
- if ((link)->next == NULL) \
- { \
- (tail) = (link)->prev; \
- } \
- else \
- { \
- (link)->next->prev = (link)->prev; \
- } \
- (link)->next = NULL; \
- (link)->prev = NULL; \
- }
- /*
- string allocation
- */
- #define RESTRING(point, value) \
- { \
- if (point) \
- { \
- free(point); \
- } \
- point = strdup((value)); \
- }
- /*
- #define FREE(point) \
- { \
- free((point)); \
- point = NULL; \
- }
- */
- /*
- Bit operations
- */
- #define HAS_BIT(bitvector, bit) ((bitvector) & (bit))
- #define SET_BIT(bitvector, bit) ((bitvector) |= (bit))
- #define DEL_BIT(bitvector, bit) ((bitvector) &= (~(bit)))
- #define TOG_BIT(bitvector, bit) ((bitvector) ^= (bit))
- #define FFS_BIT(bitvector) ((ffs(bitvector) - 1))
- /*
- Generic
- */
- #define URANGE(a, b, c) ((b) < (a) ? (a) : (b) > (c) ? (c) : (b))
- //#define URANGE(a, b, c) ((b) <= (a) ? (a) : (c) >= (b) ? (b) : (c) < (b) ? (b) : (c))
- #define UMAX(a, b) ((a) > (b) ? (a) : (b))
- #define UMIN(a, b) ((a) < (b) ? (a) : (b))
- #define next_arg(u) (u < 99 ? u++ : u)
- #define IS_SPLIT(ses) (gtd->screen->rows != (ses)->split->bot_row)
- #define SCROLL(ses) ((ses)->cur_row == 0 || ((ses)->cur_row >= (ses)->split->top_row && (ses)->cur_row <= (ses)->split->bot_row) || ((ses)->cur_row >= ses->input->top_row && (ses)->cur_row <= ses->input->bot_row))
- #define VERBATIM(ses) (gtd->level->verbatim || (gtd->level->input == 0 && (HAS_BIT((ses)->config_flags, CONFIG_FLAG_VERBATIM) || HAS_BIT(gtd->flags, TINTIN_FLAG_CHILDLOCK))))
- /*
- Compatibility
- */
- #define atoll(str) (strtoll(str, NULL, 10))
- /************************ structures *********************/
- struct listroot
- {
- struct listnode ** list;
- struct session * ses;
- int size;
- int used;
- int update;
- int multi_update;
- short type;
- short flags;
- };
- struct listnode
- {
- struct listroot * root; // variable
- char * arg1;
- char * arg2;
- char * arg3;
- char * arg4;
- char * group;
- unsigned int shots;
- int flags;
- union
- {
- pcre * regex; // act, alias, gag, highlight, substitute
- char * data; // class
- struct room_data * room; // terrain
- long long val64; // delay, tick, path
- short val16[4]; // button
- int val32[2]; // landmark, event, pathdir
- };
- };
- /*
- struct tableroot
- {
- struct listtable ** table;
- int size;
- int used;
- };
- struct tablenode
- {
- struct tableroot * root;
- char * arg1;
- char * arg2;
- };
- */
- struct scriptroot
- {
- struct scriptnode * next;
- struct scriptnode * prev;
- struct session * ses;
- struct listroot * local;
- int list;
- };
- struct process_data
- {
- pid_t pid;
- uid_t uid;
- gid_t gid;
- };
- struct tintin_data
- {
- struct session * ses;
- struct session * update;
- struct session * dispose_next;
- struct session * dispose_prev;
- struct listroot * dispose_list;
- struct listroot * banner_list;
- struct chat_data * chat;
- struct screen_data * screen;
- struct level_data * level;
- struct memory_data * memory;
- struct system_data * system;
- struct termios old_terminal;
- char * detach_file;
- int detach_port;
- struct process_data detach_info;
- int detach_sock;
- char * attach_file;
- int attach_pid;
- int attach_sock;
- // int daemon;
- char * buf;
- char * out;
- char * mud_output_buf;
- int mud_output_max;
- int mud_output_len;
- char * mud_output_strip_buf;
- int mud_output_strip_len;
- char * mud_output_line;
- unsigned char * mccp_buf;
- int mccp_len;
- char macro_buf[BUFFER_SIZE];
- char is_result[NUMBER_SIZE];
- time_t time;
- time_t time_daemon;
- time_t time_input;
- time_t time_session;
- unsigned long long utime;
- unsigned long long utime_next_delay;
- unsigned long long utime_next_tick;
- long long total_io_exec;
- long long total_io_delay;
- long long convert_time;
- int history_size;
- unsigned short command_ref[32];
- int msdp_table_size;
- int flags;
- int event_flags;
- struct scriptroot * script_stack[STACK_SIZE];
- int script_index;
- char tintin_char;
- char verbatim_char;
- char repeat_char;
- int match[303];
- char * vars[100];
- char * cmds[100];
- int args[100];
- int varc;
- int cmdc;
- char color_reset[COLOR_SIZE];
- };
- struct session
- {
- struct session * next;
- struct session * prev;
- struct map_data * map;
- struct port_data * port;
- z_stream * mccp2;
- z_stream * mccp3;
- gnutls_session_t ssl;
- struct termios cur_terminal;
- struct log_data * log;
- struct scroll_data * scroll;
- struct split_data * split;
- struct input_data * input;
- char * name;
- char * group;
- char * line_capturefile;
- int line_captureindex;
- int gagline;
- struct listroot * list[LIST_MAX];
- time_t created;
- int cur_row;
- int sav_row;
- int cur_col;
- int sav_col;
- int wrap;
- int fgc;
- int bgc;
- int vtc;
- int socket;
- int telopts;
- int telopt_flag[8];
- int event_flags;
- int config_flags;
- int flags;
- int charset;
- char * session_host;
- char * session_ip;
- char * session_port;
- char * cmd_color;
- unsigned char * read_buf;
- int read_len;
- int read_max;
- unsigned long long connect_retry;
- int connect_error;
- // char more_output[BUFFER_SIZE];
- char * more_output;
- int color;
- char color_patch[100];
- unsigned long long packet_patch;
- unsigned long long check_output;
- int scrollback_tab;
- int tab_width;
- unsigned long long rand;
- unsigned short rkey;
- struct port_data * proxy;
- };
- struct edit_data
- {
- struct row_data ** line;
- int used;
- int size;
- int update;
- };
- struct system_data
- {
- char * tt_dir;
- char * home;
- char * lang;
- char * os;
- char * term;
- char * exec;
- };
- struct input_data
- {
- struct edit_data * line;
- struct edit_data * edit;
- char * line_name;
- char * edit_name;
- int flags;
- int sav_top_row;
- int sav_top_col;
- int sav_bot_row;
- int sav_bot_col;
- int top_row;
- int top_col;
- int bot_row;
- int bot_col;
- int cur_row;
- int str_len;
- int raw_len;
- int str_pos;
- int raw_pos;
- int str_hid;
- int raw_hid;
- int str_off;
- char *buf;
- char *tmp;
- char *cut;
- };
- struct level_data
- {
- unsigned int background;
- unsigned int convert;
- unsigned int debug;
- unsigned int grep;
- unsigned int ignore;
- unsigned int indent;
- unsigned int info;
- unsigned int input;
- unsigned int local;
- unsigned int mshot;
- unsigned int quiet;
- unsigned int repeat;
- unsigned int scan;
- unsigned int scroll;
- unsigned int shots;
- unsigned int verbatim;
- unsigned int verbose;
- };
- struct log_data
- {
- FILE * file;
- char * name;
- int mode;
- FILE * next_file;
- char * next_name;
- time_t next_time;
- FILE * line_file;
- char * line_name;
- time_t line_time;
- char stamp_text[100];
- char * stamp_strf;
- time_t stamp_time;
- };
- struct split_data
- {
- int sav_top_row;
- int sav_top_col;
- int sav_bot_row;
- int sav_bot_col;
- int top_row;
- int top_col;
- int bot_row;
- int bot_col;
- };
- struct scroll_data
- {
- struct buffer_data ** buffer;
- int base;
- int line;
- int used;
- int size;
- int wrap;
- time_t time;
- char * input;
- int flags;
- int width;
- };
- struct buffer_data
- {
- int width;
- int height;
- unsigned short lines;
- unsigned short flags;
- time_t time;
- char * str;
- };
- struct chat_data
- {
- struct chat_data * next;
- struct chat_data * prev;
- struct chat_data * update;
- char * name;
- char * ip;
- char * version;
- char * download;
- char * reply;
- char * prefix;
- char * paste_buf;
- char * color;
- char * group;
- int port;
- int fd;
- time_t timeout;
- int flags;
- unsigned long long paste_time;
- FILE * file_pt;
- char * file_name;
- long long file_size;
- int file_block_cnt;
- int file_block_tot;
- int file_block_patch;
- unsigned long long file_start_time;
- };
- struct port_data
- {
- struct port_data * next;
- struct port_data * prev;
- struct port_data * update;
- char * name;
- char * ip;
- char * prefix;
- char * color;
- char * group;
- int port;
- int fd;
- int flags;
- int comm_flags;
- int mtts_flags;
- struct msdp_data ** msdp_data;
- char * proxy;
- char * ttype;
- char telbuf[BUFFER_SIZE];
- int teltop;
- char inbuf[BUFFER_SIZE];
- int intop;
- int cols;
- int rows;
- int total;
- int rank;
- z_stream * mccp2;
- z_stream * mccp3;
- struct session * ses;
- };
- struct link_data
- {
- struct link_data * next;
- struct link_data * prev;
- char * str1;
- char * str2;
- char * str3;
- };
- struct map_data
- {
- struct room_data ** room_list;
- struct room_data ** grid_rooms;
- int * grid_vnums;
- FILE * logfile;
- struct link_data * undo_head;
- struct link_data * undo_tail;
- struct search_data * search;
- char * buf;
- char * out;
- char color[MAP_COLOR_MAX][COLOR_SIZE];
- char color_raw[MAP_COLOR_MAX][COLOR_SIZE];
- int center_x;
- int center_y;
- int center_z;
- int max_grid_x;
- int max_grid_y;
- int sav_top_row;
- int sav_top_col;
- int sav_bot_row;
- int sav_bot_col;
- int top_row;
- int top_col;
- int bot_row;
- int bot_col;
- int rows;
- int cols;
- int undo_size;
- int dir;
- int size;
- int flags;
- int in_room;
- int at_room;
- int last_room;
- int global_vnum;
- struct exit_data * global_exit;
- int version;
- unsigned short display_stamp;
- int nofollow;
- char legend[LEGEND_MAX][LEGEND_SIZE];
- char legend_raw[LEGEND_MAX][LEGEND_SIZE];
- };
- struct room_data
- {
- struct exit_data * f_exit;
- struct exit_data * l_exit;
- struct exit_data * exit_grid[11];
- int vnum;
- long long exit_dirs;
- double length;
- double weight;
- unsigned short exit_size;
- unsigned short search_stamp;
- unsigned short display_stamp;
- int flags;
- int w;
- int x;
- int y;
- int z;
- int terrain_index;
- short terrain_flags;
- char * area;
- char * color;
- char * data;
- char * desc;
- char * id;
- char * name;
- char * note;
- char * symbol;
- char * terrain;
- };
- struct exit_data
- {
- struct exit_data * next;
- struct exit_data * prev;
- int vnum;
- int dir;
- int grid;
- int flags;
- double weight;
- double delay;
- char * name;
- char * cmd;
- char * color;
- char * data;
- };
- struct search_data
- {
- int vnum;
- int min;
- int max;
- unsigned short stamp;
- char * arg;
- struct listnode * area;
- struct listnode * desc;
- struct listnode * name;
- struct listnode * note;
- struct listnode * terrain;
- int exit_size;
- long long exit_dirs;
- char * exit_list;
- long long flag;
- long long galf;
- char * id;
- double distance;
- };
- struct msdp_data
- {
- char * value;
- int flags;
- };
- struct memory_data
- {
- struct stack_data ** debug;
- int debug_len;
- int debug_max;
- struct str_data ** stack;
- int stack_len;
- int stack_cap;
- int stack_max;
- struct str_data ** list;
- int list_len;
- int list_max;
- int * free;
- int free_len;
- int free_max;
- };
- struct row_data
- {
- char * str;
- };
- struct screen_data
- {
- struct row_data ** line;
- struct row_data ** grid;
- int flags;
- int rows;
- int cols;
- int height;
- int width;
- int tot_height;
- int tot_width;
- int pos_height;
- int pos_width;
- int minimized;
- int focus;
- int char_height;
- int char_width;
- int desk_rows;
- int desk_cols;
- int desk_height;
- int desk_width;
- int top_row;
- int bot_row;
- int cur_row;
- int cur_col;
- int max_row;
- int sav_lev;
- int sav_row[STACK_SIZE];
- int sav_col[STACK_SIZE];
- };
- struct stack_data
- {
- char * name;
- int index;
- };
- struct str_data
- {
- int index;
- int max;
- int len;
- short flags;
- short blank;
- };
- // unused
- struct window_data
- {
- char *name;
- int top_row;
- int top_col;
- int bot_row;
- int bot_col;
- int off_row;
- int off_col;
- int max_row;
- int max_col;
- int pos_row;
- int pos_col;
- struct input_data **buffer;
- };
- #define DO_BUFFER(buffer) void buffer (struct session *ses, char *arg, char *arg1, char *arg2)
- #define DO_CHAT(chat) void chat (char *arg1, char *arg2)
- #define DO_COMMAND(command) struct session *command (struct session *ses, char *arg, char *arg1, char *arg2, char *arg3, char *arg4)
- #define DO_CURSOR(cursor) void cursor (struct session *ses, char *arg)
- #define DO_DAEMON(daemon) void daemon (struct session *ses, char *arg, char *arg1, char *arg2)
- #define DO_EDIT(edit) struct session *edit (struct session *ses, char *arg, char *arg1, char *arg2)
- #define DO_HISTORY(history) void history (struct session *ses, char *arg, char *arg1, char *arg2)
- #define DO_LINE(line) struct session *line (struct session *ses, char *arg, char *arg1, char *arg2, char *arg3)
- #define DO_MAP(map) void map (struct session *ses, char *arg, char *arg1, char *arg2, char *arg3)
- #define DO_PATH(path) void path (struct session *ses, char *arg)
- #define DO_PORT(port) struct session *port (struct session *ses, char *arg, char *arg1, char *arg2)
- /*
- Typedefs
- */
- typedef int CMPFUNC (const void *a, const void *b);
- typedef void BUFFER (struct session *ses, char *arg, char *arg1, char *arg2);
- typedef void CHAT (char *arg1, char *arg2);
- typedef struct session *COMMAND (struct session *ses, char *arg, char *arg1, char *arg2, char *arg3, char *arg4);
- typedef void CURSOR (struct session *ses, char *arg);
- typedef void DAEMON (struct session *ses, char *arg, char *arg1, char *arg2);
- typedef struct session *EDIT (struct session *ses, char *arg, char *arg1, char *arg2);
- typedef void HISTORY (struct session *ses, char *arg, char *arg1, char *arg2);
- typedef struct session *LINE (struct session *ses, char *arg, char *arg1, char *arg2, char *arg3);
- typedef void MAP (struct session *ses, char *arg, char *arg1, char *arg2, char *arg3);
- typedef void MSDP (struct session *ses, struct port_data *buddy, int index);
- typedef void PATH (struct session *ses, char *arg);
- typedef struct session *PORT (struct session *ses, char *arg, char *arg1, char *arg2);
- /*
- Structures for tables.c
- */
- struct buffer_type
- {
- char * name;
- BUFFER * fun;
- char * desc;
- };
- struct charset_type
- {
- char * name;
- char * html;
- char * mnes;
- int flags;
- };
- struct chat_type
- {
- char * name;
- CHAT * fun;
- int lval;
- int rval;
- char * desc;
- };
- struct color_type
- {
- char * name;
- char * code;
- int len;
- };
- struct command_type
- {
- char * name;
- COMMAND * command;
- int args;
- int type;
- };
- struct cursor_type
- {
- char * name;
- char * desc;
- char * code;
- int flags;
- CURSOR * fun;
- char * arg;
- };
- struct daemon_type
- {
- char * name;
- DAEMON * fun;
- char * desc;
- };
- struct edit_type
- {
- char * name;
- EDIT * fun;
- char * desc;
- };
- struct event_type
- {
- char * name;
- int level;
- int flags;
- char * group;
- char * desc;
- };
- struct history_type
- {
- char * name;
- HISTORY * fun;
- char * desc;
- };
- struct list_type
- {
- char * name;
- char * name_multi;
- int mode;
- int args;
- int script_arg;
- int priority_arg;
- int flags;
- };
- struct map_type
- {
- char * name;
- MAP * fun;
- int flags;
- int check;
- char * desc;
- };
- struct map_legend_type
- {
- char * name;
- char * group;
- char * min;
- char * max;
- };
- struct map_legend_group_type
- {
- char * name;
- char * group;
- int min_row;
- int min_col;
- int max_row;
- int max_col;
- int start;
- int end;
- char * reset;
- };
- struct msdp_type
- {
- char * name;
- int flags;
- int rank;
- MSDP * fun;
- };
- struct path_type
- {
- char * name;
- PATH * fun;
- char * desc;
- };
- struct port_type
- {
- char * name;
- PORT * fun;
- int lval;
- int rval;
- char * desc;
- };
- struct pulse_type
- {
- unsigned char update_input;
- unsigned char update_sessions;
- unsigned char update_delays;
- unsigned char update_daemon;
- unsigned char update_chat;
- unsigned char update_port;
- unsigned char update_ticks;
- unsigned char update_paths;
- unsigned char update_packets;
- unsigned char update_terminal;
- unsigned char update_memory;
- unsigned char update_time;
- };
- struct rank_type
- {
- char * name;
- int flags;
- };
- struct stamp_type
- {
- char * name;
- int length;
- char * desc;
- };
- struct substitution_type
- {
- char * name;
- int bitvector;
- };
- struct timer_type
- {
- char * name;
- };
- struct telopt_type
- {
- char * name;
- int want;
- int flags;
- };
- #endif
- /*
- Function declarations
- */
- #ifndef __BANNER_H__
- #define __BANNER_H__
- extern DO_COMMAND(do_banner);
- #endif
- #ifndef __BASE_H__
- #define __BASE_H__
- extern int str_to_base64(char *in, char *out, size_t size);
- extern int base64_to_str(char *in, char *out, size_t size);
- extern void str_to_base64z(char *in, char *out, size_t size);
- extern void base64z_to_str(char *in, char *out, size_t size);
- extern int str_to_base252(char *in, char *out, size_t size);
- extern int base252_to_str(char *in, char *out, size_t size);
- extern void str_to_base252z(char *in, char *out, size_t size);
- extern void base252z_to_str(char *in, char *out, size_t size);
- #endif
- #ifndef __BUFFER_H__
- #define __BUFFER_H__
- extern DO_COMMAND(do_buffer);
- extern DO_COMMAND(do_grep);
- extern void init_buffer(struct session *ses, int size);
- extern void add_line_buffer(struct session *ses, char *line, int more_output);
- extern int show_buffer(struct session *ses);
- extern DO_BUFFER(buffer_up);
- extern DO_BUFFER(buffer_clear);
- extern DO_BUFFER(buffer_down);
- extern DO_BUFFER(buffer_get);
- extern DO_BUFFER(buffer_home);
- extern DO_BUFFER(buffer_end);
- extern DO_BUFFER(buffer_find);
- extern DO_BUFFER(buffer_jump);
- extern DO_BUFFER(buffer_lock);
- extern DO_BUFFER(buffer_refresh);
- extern DO_BUFFER(buffer_write);
- extern DO_BUFFER(buffer_info);
- #endif
- #ifndef __CHAT_H__
- #define __CHAT_H__
- extern DO_COMMAND(do_chat);
- extern void process_chat_connections(fd_set *read_set, fd_set *write_set, fd_set *exc_set);
- extern void chat_socket_printf(struct chat_data *buddy, char *format, ...);
- extern void close_chat(struct chat_data *buddy, int unlink);
- extern void chat_forward_session(struct session *ses, char *linelog);
- extern DO_CHAT(chat_accept);
- extern DO_CHAT(chat_call);
- extern DO_CHAT(chat_cancelfile);
- extern DO_CHAT(chat_color);
- extern DO_CHAT(chat_decline);
- extern DO_CHAT(chat_dnd);
- extern DO_CHAT(chat_downloaddir);
- extern DO_CHAT(chat_emote);
- extern DO_CHAT(chat_filestat);
- extern DO_CHAT(chat_group);
- extern DO_CHAT(chat_forward);
- extern DO_CHAT(chat_forwardall);
- extern DO_CHAT(chat_ignore);
- extern DO_CHAT(chat_initialize);
- extern DO_CHAT(chat_info);
- extern DO_CHAT(chat_ip);
- extern DO_CHAT(chat_message);
- extern DO_CHAT(chat_name);
- extern DO_CHAT(chat_paste);
- extern DO_CHAT(chat_peek);
- extern DO_CHAT(chat_ping);
- extern DO_CHAT(chat_prefix);
- extern DO_CHAT(chat_private);
- extern DO_CHAT(chat_public);
- extern DO_CHAT(chat_reply);
- extern DO_CHAT(chat_request);
- extern DO_CHAT(chat_send);
- extern DO_CHAT(chat_sendfile);
- extern DO_CHAT(chat_transfer);
- extern DO_CHAT(chat_serve);
- extern DO_CHAT(chat_uninitialize);
- extern DO_CHAT(chat_who);
- extern DO_CHAT(chat_zap);
- #endif
- #ifndef __COMMAND_H__
- #define __COMMAND_H__
- extern void init_commands(void);
- #endif
- #ifndef __CURSOR_H__
- #define __CURSOR_H__
- extern DO_COMMAND(do_cursor);
- int inputline_cur_row(void);
- int inputline_cur_col(void);
- int inputline_cur_off(void);
- int inputline_cur_str_len(void);
- int inputline_max_str_len(void);
- int inputline_max_row(void);
- int inputline_editor(void);
- int inputline_rows(struct session *ses);
- void inputline_insert(char *arg, int str_pos);
- void inputline_set(char *arg, int str_pos);
- extern DO_CURSOR(cursor_backspace);
- extern DO_CURSOR(cursor_brace);
- extern DO_CURSOR(cursor_buffer_down);
- extern DO_CURSOR(cursor_buffer_end);
- extern DO_CURSOR(cursor_buffer_home);
- extern DO_CURSOR(cursor_buffer_lock);
- extern DO_CURSOR(cursor_buffer_up);
- extern DO_CURSOR(cursor_check_line);
- extern DO_CURSOR(cursor_check_line_modified);
- extern DO_CURSOR(cursor_clear_left);
- extern DO_CURSOR(cursor_clear_line);
- extern DO_CURSOR(cursor_clear_right);
- extern DO_CURSOR(cursor_convert_meta);
- extern DO_CURSOR(cursor_delete);
- extern DO_CURSOR(cursor_delete_or_exit);
- extern DO_CURSOR(cursor_delete_word_left);
- extern DO_CURSOR(cursor_delete_word_right);
- extern DO_CURSOR(cursor_echo);
- extern DO_CURSOR(cursor_end);
- extern DO_CURSOR(cursor_enter);
- extern DO_CURSOR(cursor_enter_finish);
- extern DO_CURSOR(cursor_flag);
- extern DO_CURSOR(cursor_get);
- extern DO_CURSOR(cursor_history_find);
- extern DO_CURSOR(cursor_history_next);
- extern DO_CURSOR(cursor_history_prev);
- extern DO_CURSOR(cursor_history_search);
- extern DO_CURSOR(cursor_home);
- extern DO_CURSOR(cursor_info);
- extern DO_CURSOR(cursor_insert);
- extern DO_CURSOR(cursor_macro);
- extern DO_CURSOR(cursor_move_page_down);
- extern DO_CURSOR(cursor_move_down);
- extern DO_CURSOR(cursor_move_left);
- extern DO_CURSOR(cursor_move_left_word);
- extern DO_CURSOR(cursor_move_right);
- extern DO_CURSOR(cursor_move_right_word);
- extern DO_CURSOR(cursor_move_page_up);
- extern DO_CURSOR(cursor_move_up);
- extern DO_CURSOR(cursor_page);
- extern DO_CURSOR(cursor_paste_buffer);
- extern DO_CURSOR(cursor_position);
- extern DO_CURSOR(cursor_redraw_input);
- extern DO_CURSOR(cursor_redraw_line);
- extern DO_CURSOR(cursor_redraw_singleline);
- extern DO_CURSOR(cursor_redraw_multiline);
- extern DO_CURSOR(cursor_redraw_edit);
- extern DO_CURSOR(cursor_set);
- extern DO_CURSOR(cursor_soft_enter);
- extern DO_CURSOR(cursor_suspend);
- extern DO_CURSOR(cursor_tab);
- #endif
- #ifndef __INPUT_H__
- #define __INPUT_H__
- extern void process_input(void);
- extern void read_line(char *input, int len);
- extern void read_key(char *input, int len);
- extern int check_key(char *input, int len);
- extern void convert_meta(char *input, char *output, int eol);
- extern char *str_convert_meta(char *input, int eol);
- extern void echo_command(struct session *ses, char *line);
- extern void init_input(struct session *ses, int top_row, int top_col, int bot_row, int bot_col);
- extern void free_input(struct session *ses);
- extern void input_printf(char *format, ...);
- extern void modified_input(void);
- #endif
- #ifndef __MAPPER_H__
- #define __MAPPER_H__
- extern DO_COMMAND(do_map);
- extern void delete_room_data(struct room_data *room);
- extern int follow_map(struct session *ses, char *argument);
- extern void show_vtmap(struct session *ses, int clear);
- extern void map_mouse_handler(struct session *ses, char *left, char *right, int row, int col, int rev_row, int rev_col, int height, int width);
- extern int delete_map(struct session *ses);
- extern DO_MAP(map_at);
- extern DO_MAP(map_center);
- extern DO_MAP(map_color);
- extern DO_MAP(map_create);
- extern DO_MAP(map_debug);
- extern DO_MAP(map_delete);
- extern DO_MAP(map_destroy);
- extern DO_MAP(map_dig);
- extern DO_MAP(map_entrance);
- extern DO_MAP(map_exit);
- extern DO_MAP(map_exitflag);
- extern DO_MAP(map_explore);
- extern DO_MAP(map_find);
- extern DO_MAP(map_flag);
- extern DO_MAP(map_get);
- extern DO_MAP(map_global);
- extern DO_MAP(map_goto);
- extern DO_MAP(map_info);
- extern DO_MAP(map_insert);
- extern DO_MAP(map_jump);
- extern DO_MAP(map_landmark);
- extern DO_MAP(map_leave);
- extern DO_MAP(map_legend);
- extern DO_MAP(map_link);
- extern DO_MAP(map_list);
- extern DO_MAP(map_map);
- extern DO_MAP(map_move);
- extern DO_MAP(map_name);
- extern DO_MAP(map_offset);
- extern DO_MAP(map_read);
- extern DO_MAP(map_resize);
- extern DO_MAP(map_return);
- extern DO_MAP(map_roomflag);
- extern DO_MAP(map_run);
- extern DO_MAP(map_set);
- extern DO_MAP(map_sync);
- extern DO_MAP(map_terrain);
- extern DO_MAP(map_travel);
- extern DO_MAP(map_undo);
- extern DO_MAP(map_uninsert);
- extern DO_MAP(map_unlandmark);
- extern DO_MAP(map_unlink);
- extern DO_MAP(map_unterrain);
- extern DO_MAP(map_update);
- extern DO_MAP(map_vnum);
- extern DO_MAP(map_write);
- #endif
- #ifndef __TT_MATH_H__
- #define __TT_MATH_H__
- extern long double mathexp(struct session *ses, char *str, char *result, int seed);
- extern int is_math(struct session *ses, char *str);
- extern int get_ellipsis(struct session *ses, unsigned int size, char *name, int *min, int *max);
- extern long double get_number(struct session *ses, char *str);
- extern unsigned long long get_ulong(struct session *ses, char *str);
- extern long double get_double(struct session *ses, char *str);
- extern void get_number_string(struct session *ses, char *str, char *result);
- extern long double mathswitch(struct session *ses, char *left, char *right);
- extern long double tintoi(char *str);
- extern unsigned long long tintou(char *str);
- #endif
- #ifndef __CONFIG_H__
- #define __CONFIG_H__
- extern DO_COMMAND(do_configure);
- #endif
- #ifndef __DAEMON_H__
- #define __DAEMON_H__
- extern DO_COMMAND(do_daemon);
- extern DO_DAEMON(daemon_attach);
- extern DO_DAEMON(daemon_detach);
- extern DO_DAEMON(daemon_input);
- extern DO_DAEMON(daemon_kill);
- extern DO_DAEMON(daemon_list);
- extern void reset_daemon(void);
- extern void winch_daemon(void);
- #endif
- #ifndef __DATA_H__
- #define __DATA_H__
- extern DO_COMMAND(do_kill);
- extern void kill_list(struct listroot *root);
- extern void free_list(struct listroot *root);
- extern int show_node_with_wild(struct session *ses, char *cptr, struct listroot *root);
- extern void show_node(struct listroot *root, struct listnode *node, int level);
- extern void show_nest(struct listnode *node, char *result);
- extern void show_list(struct listroot *root, int level);
- extern void remove_node_list(struct session *ses, int type, struct listnode *node);
- extern void remove_index_list(struct listroot *root, int index);
- extern void dispose_node(struct listnode *node);
- extern void delete_node(int type, struct listnode *node);
- extern void delete_node_list(struct session *ses, int type, struct listnode *node);
- extern int delete_node_with_wild(struct session *ses, int index, char *string);
- extern void delete_index_list(struct listroot *root, int index);
- extern int search_index_list(struct listroot *root, char *text, char *priority);
- extern int locate_index_list(struct listroot *root, char *text, char *priority);
- extern int bsearch_alpha_list(struct listroot *root, char *text, int seek);
- extern int bsearch_alnum_list(struct listroot *root, char *text, int seek);
- extern int bsearch_priority_list(struct listroot *root, char *text, char *priority, int seek);
- extern int nsearch_list(struct listroot *root, char *text);
- extern struct listroot *init_list(struct session *ses, int type, int size);
- extern struct listroot *copy_list(struct session *ses, struct listroot *sourcelist, int type);
- extern struct listnode *create_node(char *arg1, char *arg2, char *arg3, char *arg4);
- extern struct listnode *create_node_list(struct listroot *root, char *arg1, char *arg2, char *arg3, char *arg4);
- extern struct listnode *insert_node_list(struct listroot *root, struct listnode *node);
- extern struct listnode *insert_index_list(struct listroot *root, struct listnode *node, int index);
- extern struct listnode *update_node_list(struct listroot *root, char *arg1, char *arg2, char *arg3, char *arg4);
- extern struct listnode *search_node_list(struct listroot *root, char *text);
- #endif
- #ifndef __DEBUG_H__
- #define __DEBUG_H__
- extern void push_call(char *format, ...);
- extern int push_call_printf(char *format, ...);
- extern void pop_call(void);
- extern void dump_stack(void);
- #endif
- #ifndef __DICT_H__
- #define __DICT_H__
- extern DO_COMMAND(do_dictionary);
- extern int spellcheck_count(struct session *ses, char *in);
- extern int cursor_dictionary_tab_add(int stop_after_first);
- #endif
- #ifndef __EDIT_H__
- #define __EDIT_H__
- DO_COMMAND(do_edit);
- DO_EDIT(edit_create);
- DO_EDIT(edit_load);
- DO_EDIT(edit_read);
- DO_EDIT(edit_resume);
- DO_EDIT(edit_save);
- DO_EDIT(edit_suspend);
- DO_EDIT(edit_write);
- extern struct edit_data *create_editor(void);
- extern void enable_editor(struct edit_data *edit);
- extern void delete_editor(struct edit_data *edit);
- extern void resize_editor(struct edit_data *edit, int size);
- extern void clear_editor(struct edit_data *edit);
- extern int str_save_editor(struct edit_data *edit, char **str);
- extern int var_save_editor(struct edit_data *edit, char **str);
- extern void create_line(struct edit_data *edit, int index, char *str);
- extern void delete_line(struct edit_data *edit, int index);
- extern void insert_line(struct edit_data *edit, int index, char *str);
- extern void remove_line(struct edit_data *edit, int index);
- #endif
- #ifndef __DRAW_H__
- #define __DRAW_H__
- extern DO_COMMAND(do_draw);
- #endif
- #ifndef __EVENT_H__
- #define __EVENT_H__
- //extern DO_COMMAND(do_event);
- //extern DO_COMMAND(do_unevent);
- extern int check_all_events(struct session *ses, int flags, int args, int vars, char *fmt, ...);
- extern void mouse_handler(struct session *ses, int val1, int val2, int val3);
- #endif
- #ifndef __FILES_H__
- #define __FILES_H__
- extern DO_COMMAND(do_read);
- extern DO_COMMAND(do_write);
- extern struct session *read_file(struct session *ses, FILE *fp, char *filename);
- extern void write_node(struct session *ses, int mode, struct listnode *node, FILE *file);
- extern char *fread_one_line(char **str, FILE *fp);
- #endif
- #ifndef __HELP_H__
- #define __HELP_H__
- extern DO_COMMAND(do_help);
- #endif
- #ifndef __HISTORY_H__
- #define __HISTORY_H__
- extern DO_COMMAND(do_history);
- extern void add_line_history(struct session *ses, char *line);
- extern void insert_line_history(struct session *ses, char *line);
- extern struct session *repeat_history(struct session *ses, char *line);
- extern int write_history(struct session *ses, char *filename);
- extern int read_history(struct session *ses, char *filename);
- DO_HISTORY(history_character);
- DO_HISTORY(history_delete);
- DO_HISTORY(history_get);
- DO_HISTORY(history_insert);
- DO_HISTORY(history_list);
- DO_HISTORY(history_size);
- DO_HISTORY(history_read);
- DO_HISTORY(history_write);
- #endif
- #ifndef __LINE_H__
- #define __LINE_H__
- extern DO_COMMAND(do_line);
- extern DO_LINE(line_background);
- extern DO_LINE(line_benchmark);
- extern DO_LINE(line_capture);
- extern DO_LINE(line_convert);
- extern DO_LINE(line_debug);
- extern DO_LINE(line_gag);
- extern DO_LINE(line_ignore);
- extern DO_LINE(line_json);
- extern DO_LINE(line_local);
- extern DO_LINE(line_log);
- extern DO_LINE(line_logmode);
- extern DO_LINE(line_logverbatim);
- extern DO_LINE(line_msdp);
- extern DO_LINE(line_multishot);
- extern DO_LINE(line_oneshot);
- extern DO_LINE(line_quiet);
- extern DO_LINE(line_strip);
- extern DO_LINE(line_substitute);
- extern DO_LINE(line_verbatim);
- extern DO_LINE(line_verbose);
- #endif
- #ifndef __LOG_H__
- #define __LOG_H__
- extern void logheader(struct session *ses, FILE *file, int newline);
- extern void init_log(struct session *ses);
- extern void free_log(struct session *ses);
- extern void logit(struct session *ses, char *txt, FILE *file, int newline);
- extern void write_html_header(struct session *ses, FILE *fp);
- extern void vt102_to_html(struct session *ses, char *txt, char *out);
- #endif
- #ifndef __MAIN_H__
- #define __MAIN_H__
- extern struct session *gts;
- extern struct tintin_data *gtd;
- extern void winch_handler(int signal);
- extern void abort_handler(int signal);
- extern void pipe_handler(int signal);
- extern void suspend_handler(int signal);
- extern void trap_handler(int signal);
- extern int main(int argc, char **argv);
- extern void init_tintin(int greeting);
- extern void quitmsg(char *message);
- extern void syserr_fatal(int signal, char *msg);
- extern void syserr_printf(struct session *ses, char *fmt, ...);
- #endif
- #ifndef __MCCP_H__
- #define __MCCP_H__
- void *zlib_alloc(void *opaque, unsigned int items, unsigned int size);
- void zlib_free(void *opaque, void *address);
- #endif
- #ifndef __MEMORY_H__
- #define __MEMORY_H__
- extern char *restring(char *point, char *string);
- extern char *restringf(char *point, char *fmt, ...);
- extern void init_memory(void);
- extern struct str_data *get_str_ptr(char *str);
- extern char *get_str_str(struct str_data *str_ptr);
- extern int str_len(char *str);
- extern int str_max(char *str);
- extern int str_fix(char *str);
- extern int str_fix_len(char *str, int len);
- extern char *str_alloc(int len);
- extern void str_free(char *ptr);
- extern char *str_mim(char *original);
- extern char *str_dup(char *original);
- extern char *str_dup_clone(char *original);
- extern char *str_dup_printf(char *fmt, ...);
- extern char *str_ndup(char *original, int len);
- extern char *str_resize(char **ptr, int add);
- extern void str_clone(char **clone, char *original);
- extern char *str_cpy(char **ptr, char *str);
- extern char *str_cpy_printf(char **ptr, char *fmt, ...);
- extern char *str_ncpy(char **ptr, char *str, int len);
- extern char *str_cat_len(char **str, char *arg, int len);
- extern char *str_cat(char **str, char *arg);
- extern char *str_cat_chr(char **ptr, char chr);
- extern char *str_cat_printf(char **str, char *fmt, ...);
- extern char *str_cap(char **str, int index, char *buf);
- extern char *str_ins(char **str, int index, char *buf);
- extern char *str_ins_printf(char **str, int index, char *fmt, ...);
- extern char *str_mov(char **str, int dst, int src);
- extern char *str_alloc_stack(int size);
- #endif
- #ifndef __MISC_H__
- #define __MISC_H__
- extern DO_COMMAND(do_end);
- extern DO_COMMAND(do_nop);
- extern DO_COMMAND(do_test);
- #endif
- #ifndef __MSDP_H__
- #define __MSDP_H__
- extern void init_msdp_table(void);
- extern int msdp_find(char *var);
- extern void arachnos_devel(struct session *ses, char *fmt, ...);
- extern void arachnos_mudlist(struct session *ses, char *fmt, ...);
- extern void msdp_update_all(char *var, char *fmt, ...);
- extern void msdp_update_var(struct session *ses, struct port_data *buddy, char *var, char *str);
- extern void msdp_update_varf(struct session *ses, struct port_data *buddy, char *var, char *fmt, ...);
- extern void msdp_update_var_instant(struct session *ses, struct port_data *buddy, char *var, char *fmt, ...);
- extern void msdp_send_update(struct session *ses, struct port_data *buddy);
- extern char *msdp_get_var(struct session *ses, struct port_data *buddy, char *var);
- extern void process_msdp_varval(struct session *ses, struct port_data *buddy, char *var, char *val );
- extern void msdp_command_list(struct session *ses, struct port_data *buddy, int index);
- extern void msdp_command_report(struct session *ses, struct port_data *buddy, int index);
- extern void msdp_command_reset(struct session *ses, struct port_data *buddy, int index);
- extern void msdp_command_send(struct session *ses, struct port_data *buddy, int index);
- extern void msdp_command_unreport(struct session *ses, struct port_data *buddy, int index);
- extern void msdp_configure_arachnos(struct session *ses, struct port_data *buddy, int index);
- extern void write_msdp_to_descriptor(struct session *ses, struct port_data *buddy, char *src, int length);
- extern int msdp2gmcp(unsigned char *src, int srclen, char *out);
- extern int gmcp2msdp(unsigned char *src, int srclen, char *out);
- extern int tintin2msdp(char *src, char *out);
- extern void arachnos_devel(struct session *ses, char *fmt, ...);
- extern void arachnos_mudlist(struct session *ses, char *fmt, ...);
- extern struct msdp_type msdp_table[];
- #endif
- #ifndef __NEST_H__
- #define __NEST_H__
- extern struct listroot *search_nest_base_ses(struct session *ses, char *arg);
- extern struct listroot *search_nest_root(struct listroot *root, char *arg);
- extern struct listnode *search_base_node(struct listroot *root, char *variable);
- extern struct listnode *search_nest_node(struct listroot *root, char *variable);
- extern struct listnode *search_nest_node_path(struct listroot *root, char *variable, char *path);
- extern struct listnode *search_nest_node_ses(struct session *ses, char *variable);
- extern int search_nest_index(struct listroot *root, char *variable);
- extern struct listroot *update_nest_root(struct listroot *root, char *arg);
- extern void update_nest_node(struct listroot *root, char *arg);
- extern int delete_nest_node(struct listroot *root, char *variable);
- extern int delete_nest_node_with_wild(struct listroot *root, char *variable);
- extern int get_nest_size_key(struct listroot *root, char *variable, char **result);
- extern int get_nest_size_val(struct listroot *root, char *variable, char **result);
- extern struct listnode *get_nest_node_key(struct listroot *root, char *variable, char **result, int def);
- extern struct listnode *get_nest_node_val(struct listroot *root, char *variable, char **result, int def);
- extern int get_nest_index(struct listroot *root, char *variable, char **result, int def);
- extern void show_nest_node(struct listnode *node, char **result, int initialize);
- extern void view_nest_node_json(struct listnode *node, char **str_result, int nest, int initialize);
- extern void view_nest_node(struct listnode *node, char **str_result, int nest, int initialize, int color);
- extern struct listnode *set_nest_node_ses(struct session *ses, char *arg1, char *format, ...);
- extern struct listnode *add_nest_node_ses(struct session *ses, char *arg1, char *format, ...);
- extern struct listnode *set_nest_node(struct listroot *root, char *arg1, char *format, ...);
- extern struct listnode *add_nest_node(struct listroot *root, char *arg1, char *format, ...);
- extern void copy_nest_node(struct listroot *dst_root, struct listnode *dst, struct listnode *src);
- #endif
- #ifndef __NET_H__
- #define __NET_H__
- extern int connect_mud(struct session *ses, char *host, char *port);
- extern void write_line_mud(struct session *ses, char *line, int size);
- extern int read_buffer_mud(struct session *ses);
- extern void readmud(struct session *ses);
- extern void process_more_output(struct session *ses, char *append, int prompt);
- extern void process_mud_output(struct session *ses, char *linebuf, int prompt);
- #endif
- #ifndef __PARSE_H__
- #define __PARSE_H__
- extern int is_abbrev(char *str1, char *str2);
- extern int is_abbrev_cmp(char *str1, char *str2);
- extern int is_member(char *str1, char *str2);
- extern int is_vowel(char *str);
- extern void filename_string(char *input, char *output);
- extern struct session *execute(struct session *ses, char *format, ...);
- extern struct session *command(struct session *ses, COMMAND *cmd, char *format, ...);
- extern struct session *parse_input(struct session *ses, char *input);
- extern struct session *parse_command(struct session *ses, char *input);
- extern int is_speedwalk(struct session *ses, char *input);
- extern char *substitute_speedwalk(struct session *ses, char *input, char *output);
- extern void process_speedwalk(struct session *ses, char *input);
- extern struct session *parse_tintin_command(struct session *ses, char *input);
- extern int cnt_arg_all(struct session *ses, char *string, int flag);
- extern char *get_arg_all(struct session *ses, char *string, char *result, int verbatim);
- extern char *sub_arg_all(struct session *ses, char *string, char *result, int verbatim, int sub);
- extern char *get_arg_in_braces(struct session *ses, char *string, char *result, int flag);
- extern char *sub_arg_in_braces(struct session *ses, char *string, char *result, int flag, int sub);
- extern char *get_arg_with_spaces(struct session *ses, char *string, char *result, int flag);
- extern char *get_arg_stop_spaces(struct session *ses, char *string, char *result, int flag);
- extern char *sub_arg_stop_spaces(struct session *ses, char *string, char *result, int flag, int sub);
- extern char *get_arg_stop_digits(struct session *ses, char *string, char *result, int flag);
- extern char *space_out(char *string);
- extern char *get_arg_to_brackets(struct session *ses, char *string, char *result);
- extern char *get_arg_at_brackets(struct session *ses, char *string, char *result);
- extern char *get_arg_in_brackets(struct session *ses, char *string, char *result);
- extern char *get_char(struct session *ses, char *string, char *result);
- extern void write_mud(struct session *ses, char *command, int flags);
- extern void check_one_line_multi(struct session *ses, char *line, char *strip);
- extern void check_one_line(struct session *ses, char *line);
- #endif
- #ifndef __PATH_H__
- #define __PATH_H__
- extern DO_COMMAND(do_pathdir);
- int is_pathdir(struct session *ses, char *dir);
- int exit_to_dir(struct session *ses, char *name);
- unsigned char pdir(struct listnode *node);
- char *dir_to_exit(struct session *ses, int dir);
- extern void check_append_path(struct session *ses, char *forward, char *backward, double delay, int force, int follow);
- extern DO_PATH(path_create);
- extern DO_PATH(path_describe);
- extern DO_PATH(path_delete);
- extern DO_PATH(path_destroy);
- extern DO_PATH(path_get);
- extern DO_PATH(path_goto);
- extern DO_PATH(path_insert);
- extern DO_PATH(path_load);
- extern DO_PATH(path_map);
- extern DO_PATH(path_move);
- extern DO_PATH(path_run);
- extern DO_PATH(path_save);
- extern DO_PATH(path_start);
- extern DO_PATH(path_stop);
- extern DO_PATH(path_swap);
- extern DO_PATH(path_undo);
- extern DO_PATH(path_unzip);
- extern DO_PATH(path_walk);
- extern DO_PATH(path_zip);
- // old
- extern DO_PATH(path_new);
- extern DO_PATH(path_end);
- #endif
- #ifndef __PORT_H__
- #define __PORT_H__
- extern DO_PORT(port_call);
- extern DO_PORT(port_color);
- extern DO_PORT(port_flag);
- extern DO_PORT(port_group);
- extern DO_PORT(port_ignore);
- extern DO_PORT(port_initialize);
- extern DO_PORT(port_info);
- extern DO_PORT(port_message);
- extern DO_PORT(port_name);
- extern DO_PORT(port_prefix);
- extern DO_PORT(port_proxy);
- extern DO_PORT(port_rank);
- extern DO_PORT(port_send);
- extern DO_PORT(port_uninitialize);
- extern DO_PORT(port_who);
- extern DO_PORT(port_zap);
- extern int port_new(struct session *ses, int s);
- extern void close_port(struct session *ses, struct port_data *buddy, int unlink);
- extern void process_port_connections(struct session *ses, fd_set *read_set, fd_set *write_set, fd_set *exc_set);
- extern void port_forward_session(struct session *ses, char *linelog);
- extern void port_socket_printf(struct session *ses, struct port_data *buddy, char *format, ...);
- extern void port_telnet_printf(struct session *ses, struct port_data *buddy, size_t length, char *format, ...);
- extern void port_log_printf(struct session *ses, struct port_data *buddy, char *format, ...);
- extern void port_printf(struct session *ses, char *format, ...);
- extern int process_port_input(struct session *ses, struct port_data *buddy);
- extern void get_port_commands(struct session *ses, struct port_data *buddy, char *buf, int len);
- extern void port_name_change(struct session *ses, struct port_data *buddy, char *txt);
- extern void port_receive_message(struct session *ses, struct port_data *buddy, char *txt);
- extern void port_puts(struct session *ses, char *arg);
- extern struct port_data *find_port_buddy(struct session *ses, char *arg);
- extern struct port_data *find_port_group(struct session *ses, char *arg);
- #endif
- #ifndef __SCREEN_H__
- #define __SCREEN_H__
- extern DO_COMMAND(do_screen);
- extern void init_inputregion(struct session *ses, int top_row, int top_col, int bot_row, int bot_col);
- extern int get_row_index(struct session *ses, int val);
- extern int get_col_index(struct session *ses, int val);
- extern int get_row_index_arg(struct session *ses, char *arg);
- extern int get_col_index_arg(struct session *ses, char *arg);
- extern void csip_handler(int var1, int var2, int var3);
- extern void csit_handler(int var1, int var2, int var3);
- extern void rqlp_handler(int event, int button, int row, int col);
- extern void osc_handler(char ind, char *arg);
- extern void erase_scroll_region(struct session *ses);
- extern void erase_input_region(struct session *ses);
- extern void erase_split_region(struct session *ses);
- extern void erase_bot_region(struct session *ses);
- extern void erase_top_region(struct session *ses);
- extern void erase_left_region(struct session *ses);
- extern void erase_right_region(struct session *ses);
- extern void erase_square(struct session *ses, int top_row, int top_col, int bot_row, int bot_col);
- extern void fill_scroll_region(struct session *ses, char *arg);
- extern void fill_top_region(struct session *ses, char *arg);
- extern void fill_bot_region(struct session *ses, char *arg);
- extern void fill_left_region(struct session *ses, char *arg);
- extern void fill_right_region(struct session *ses, char *arg);
- extern void fill_split_region(struct session *ses, char *arg);
- extern int inside_scroll_region(struct session *ses, int row, int col);
- extern void add_row_index(struct row_data **row, int index);
- extern void del_row_index(struct row_data **row, int index);
- extern void print_scroll_region(struct session *ses);
- extern void print_screen();
- extern void init_screen(int rows, int cols, int pix_rows, int pix_cols);
- extern void destroy_screen();
- extern int inside_scroll_region(struct session *ses, int row, int col);
- extern void set_grid_screen(struct session *ses, char *str, int row, int col);
- extern void add_line_screen(struct session *ses, char *str, int row);
- extern void set_line_screen(struct session *ses, char *ins, int row, int col);
- extern void get_line_screen(char *str, int row);
- extern int get_link_screen(struct session *ses, char *var, char *val, int flags, int row, int col);
- extern void get_word_screen(char *str, int row, int col);
- #endif
- #ifndef __SESSION_H__
- #define __SESSION_H__
- extern DO_COMMAND(do_session);
- extern DO_COMMAND(do_snoop);
- extern DO_COMMAND(do_zap);
- extern struct session *session_command(char *arg, struct session *ses);
- extern struct session *find_session(char *name);
- extern struct session *newactive_session(void);
- extern struct session *activate_session(struct session *ses);
- extern struct session *new_session(struct session *ses, char *name, char *address, int desc, int ssl);
- extern struct session *connect_session(struct session *ses);
- extern void cleanup_session(struct session *ses);
- extern void dispose_session(struct session *ses);
- #endif
- #ifndef __SHOW_H__
- #define __SHOW_H__
- extern void show_message(struct session *ses, int index, char *format, ...);
- extern void show_error(struct session *ses, int index, char *format, ...);
- extern void show_debug(struct session *ses, int index, char *format, ...);
- extern void show_info(struct session *ses, int index, char *format, ...);
- extern void tintin_header(struct session *ses, int width, char *format, ...);
- extern void socket_printf(struct session *ses, size_t length, char *format, ...);
- extern void telnet_printf(struct session *ses, int length, char *format, ...);
- extern void print_lines(struct session *ses, int flags, char *color, char *format, ...);
- extern void show_lines(struct session *ses, char *color, char *str);
- extern void tintin_printf(struct session *ses, char *format, ...);
- extern void tintin_printf2(struct session *ses, char *format, ...);
- extern void tintin_printf3(struct session *ses, char *format, ...);
- extern void tintin_puts(struct session *ses, char *string);
- extern void tintin_puts2(struct session *ses, char *string);
- extern void tintin_puts3(struct session *ses, char *string, int prompt);
- #endif
- #ifndef __SORT_H__
- #define __SORT_H__
- extern void quadsort(void *array, size_t nmemb, size_t size, CMPFUNC *cmp);
- extern int cmp_int(const void * a, const void * b);
- extern int cmp_str(const void * a, const void * b);
- extern int cmp_num(const void * a, const void * b);
- #endif
- #ifndef __SPLIT_H__
- #define __SPLIT_H__
- extern DO_COMMAND(do_split);
- extern DO_COMMAND(do_unsplit);
- extern void init_split(struct session *ses, int top, int bot, int left, int right);
- extern void reset_screen(struct session *ses);
- extern void dirty_screen(struct session *ses);
- extern void split_show(struct session *ses, char *prompt, char *row, char *col);
- #endif
- #ifndef __SSL_H__
- #define __SSL_H__
- extern gnutls_session_t ssl_negotiate(struct session *ses);
- #endif
- #ifndef __STRING_H__
- #define __STRING_H__
- extern int get_raw_len_str_range_str_width(struct session *ses, char *str, int start, int end, int *raw_width);
- extern int get_raw_off_str_range_raw_width(struct session *ses, char *str, int start, int end, int *raw_width);
- extern int raw_len_str(struct session *ses, char *str, int start, int end);
- extern int str_len_raw(struct session *ses, char *str, int start, int end);
- extern char *str_ins_str(struct session *ses, char **str, char *ins, int str_start, int str_end);
- extern char *calign(struct session *ses, char *in, char *out, int width);
- extern char *lalign(struct session *ses, char *in, char *out, int width);
- extern char *ralign(struct session *ses, char *in, char *out, int width);
- extern char *ualign(struct session *ses, char *in, char *out, int width);
- extern char char_cmp(char left, char right);
- extern char is_alnum(char input);
- extern char is_alpha(char input);
- extern char is_digit(char input);
- extern char is_hex(char input);
- extern char is_print(char input);
- extern char is_space(char input);
- extern char is_varchar(char input);
- extern char is_csichar(char input);
- #endif
- #ifndef __SUBSTITUTE_H__
- #define __SUBSTITUTE_H__
- extern int valid_escape(struct session *ses, char *arg);
- extern char *fuzzy_color_code(struct session *ses, char *pti);
- extern char *dim_color_code(struct session *ses, char *pti, int mod);
- extern char *lit_color_code(struct session *ses, char *pti, int mod);
- extern int color_gradient(char *pti, int low, int max);
- extern int is_tintin_code(char *pti);
- extern int is_color_code(char *str);
- extern int is_color_name(char *str);
- extern int substitute_color(char *input, char *output, int colors);
- #endif
- #ifndef __SYSTEM_H__
- #define __SYSTEM_H__
- extern DO_COMMAND(do_suspend);
- #endif
- #ifndef __TABLES_H__
- #define __TABLES_H__
- extern struct buffer_type buffer_table[];
- extern struct charset_type charset_table[];
- extern struct chat_type chat_table[];
- extern char character_table[];
- extern struct color_type color_table[];
- extern struct color_type map_color_table[];
- //extern struct config_type config_table[];
- extern struct cursor_type cursor_table[];
- extern struct daemon_type daemon_table[];
- extern struct edit_type edit_table[];
- extern struct event_type event_table[];
- extern struct history_type history_table[];
- extern struct list_type list_table[LIST_MAX];
- extern struct map_type map_table[];
- extern struct path_type path_table[];
- extern struct port_type port_table[];
- extern struct rank_type rank_table[];
- extern struct stamp_type huge_stamp_table[];
- extern struct substitution_type substitution_table[];
- extern struct telopt_type telopt_table[];
- extern char *telcmds[];
- extern struct timer_type timer_table[];
- extern struct map_legend_type map_legend_table[];
- extern struct map_legend_group_type map_legend_group_table[];
- #endif
- #ifndef __TELOPT_H__
- #define __TELOPT_H__
- extern void test_gmcp(struct session *ses, char *buf);
- extern int get_mtts_val(struct session *ses);
- extern int client_translate_telopts(struct session *ses, unsigned char *src, int cplen);
- extern int client_write_compressed(struct session *ses, char *txt, int length);
- extern int client_send_sb_naws(struct session *ses, int cplen, unsigned char *cpsrc);
- extern void announce_support(struct session *ses, struct port_data *buddy);
- extern int server_translate_telopts(struct session *ses, struct port_data *buddy, unsigned char *src, int srclen, unsigned char *out, int outlen);
- extern void write_mccp2(struct session *ses, struct port_data *buddy, char *txt, int length);
- extern void client_end_mccp2(struct session *ses);
- extern void end_mccp2(struct session *ses, struct port_data *buddy);
- extern void client_end_mccp3(struct session *ses);
- extern void end_mccp3(struct session *ses, struct port_data *buddy);
- extern void init_msdp_table(void);
- #endif
- #ifndef __TERMINAL_H__
- #define __TERMINAL_H__
- extern void init_terminal(struct session *ses);
- extern void reset_terminal(struct session *ses);
- extern void save_session_terminal(struct session *ses);
- extern void refresh_session_terminal(struct session *ses);
- extern void echo_on(struct session *ses);
- extern void echo_off(struct session *ses);
- extern void init_terminal_size(struct session *ses);
- extern void init_resize(struct session *ses, int rows, int cols, int height, int width);
- extern int get_scroll_rows(struct session *ses);
- extern int get_scroll_cols(struct session *ses);
- extern char *get_charset(struct session *ses);
- #endif
- #ifndef __TEXT_H__
- #define __TEXT_H__
- extern void print_line(struct session *ses, char **str, int isaprompt);
- extern void print_stdout(int row, int col, char *format, ...);
- extern int word_wrap(struct session *ses, char *textin, char *textout, int display, int *height, int *width);
- extern int word_wrap_split(struct session *ses, char *textin, char *textout, int wrap, int start, int end, int flags, int *height, int *width);
- #endif
- #ifndef __TINEXP_H__
- #define __TINEXP_H__
- DO_COMMAND(do_regexp);
- extern int substitute(struct session *ses, char *string, char *result, int flags);
- extern int match(struct session *ses, char *str, char *exp, int flags);
- extern int find(struct session *ses, char *str, char *exp, int sub, int flag);
- extern int regexp_compare(struct session *ses, pcre *regex, char *str, char *exp, int option, int flag);
- extern int check_one_regexp(struct session *ses, struct listnode *node, char *line, char *original, int option);
- extern int tintin_regexp_check(struct session *ses, char *exp);
- extern int tintin_regexp(struct session *ses, pcre *pcre, char *str, char *exp, int option, int flag);
- extern pcre *regexp_compile(struct session *ses, char *exp, int option);
- extern pcre *tintin_regexp_compile(struct session *ses, struct listnode *node, char *exp, int option);
- extern void tintin_macro_compile(char *input, char *output);
- #endif
- #ifndef __TOKENIZE_H__
- #define __TOKENIZE_H__
- extern void init_local(struct session *ses);
- extern struct scriptroot *push_script_stack(struct session *ses, int list);
- extern void pop_script_stack();
- extern struct listroot *local_list(struct session *ses);
- extern struct session *script_driver(struct session *ses, int list, char *str);
- extern char *view_script(struct session *ses, struct scriptroot *root);
- extern char *script_writer(struct session *ses, char *str);
- extern char *script_viewer(struct session *ses, char *str);
- #endif
- #ifndef __TRIGGER_H__
- #define __TRIGGER_H__
- extern DO_COMMAND(do_delay);
- extern DO_COMMAND(do_function);
- extern void check_all_actions(struct session *ses, char *original, char *line, char *buf);
- extern void check_all_actions_multi(struct session *ses, char *original, char *line, char *buf);
- extern int check_all_aliases(struct session *ses, char *input);
- extern void check_all_buttons(struct session *ses, short row, short col, char *arg1, char *arg2, char *word, char *line);
- extern void check_all_gags(struct session *ses, char *original, char *line);
- extern void check_all_highlights(struct session *ses, char *original, char *line);
- extern int check_all_prompts(struct session *ses, char *original, char *line);
- extern void check_all_substitutions(struct session *ses, char *original, char *line);
- #endif
- // update.c
- extern void mainloop(void);
- extern void init_cpu(void);
- extern void show_cpu(struct session *ses);
- #ifndef __UTILS_H__
- #define __UTILS_H__
- extern int is_number(char *str);
- extern unsigned long long hex_number_64bit(char *str);
- extern unsigned int hex_number_32bit(char *str);
- extern int hex_number_8bit(char *str);
- extern int oct_number(char *str);
- extern int unicode_8_bit(char *str, char *out);
- extern int unicode_12_bit(char *str, char *out);
- extern int unicode_16_bit(char *str, char *out);
- extern int unicode_20_bit(char *str, char *out);
- extern int unicode_21_bit(char *str, char *out);
- extern unsigned long long utime(void);
- extern time_t get_time(struct session *ses, char *str);
- extern char *str_time(struct session *ses, char *format, time_t time);
- extern unsigned long long generate_rand(struct session *ses);
- extern void seed_rand(struct session *ses, unsigned long long seed);
- extern char *capitalize(char *str);
- extern char *ftos(double number);
- extern char *ntos(long long number);
- extern char *indent_one(int len);
- extern char *indent(int len);
- extern int cat_sprintf(char *dest, char *fmt, ...);
- extern void ins_sprintf(char *dest, char *fmt, ...);
- extern char *str_ins_printf(char **str, int index, char *fmt, ...);
- extern int is_suffix(char *str1, char *str2);
- #endif
- #ifndef __UTF8_H__
- #define __UTF8_H__
- extern void big5toutf8_info(struct session *ses);
- extern void utf8tobig5_info(struct session *ses);
- extern int get_ascii_width(char *str, int *width);
- extern int is_utf8_head(char *str);
- extern int is_utf8_tail(char *str);
- extern int get_utf8_size(char *str);
- extern int get_utf8_width(char *str, int *width, int *index);
- extern int get_utf8_index(char *str, int *index);
- extern int unicode_to_utf8(int index, char *out);
- extern int utf8_strlen(char *str, int *width);
- extern int utf8_to_all(struct session *ses, char *in, char *out);
- extern int all_to_utf8(struct session *ses, char *in, char *out);
- extern int cp1251_to_utf8(char *input, char *output);
- extern int utf8_to_cp1251(char *input, char *output);
- extern int iso1_to_utf8(char *input, char *output);
- extern int utf8_to_iso1(char *input, char *output);
- extern int iso2_to_utf8(char *input, char *output);
- extern int utf8_to_iso2(char *input, char *output);
- extern int koi8_to_utf8(char *input, char *output);
- extern int utf8_to_koi8(char *input, char *output);
- extern int fansi_to_utf8(char *input, char *output);
- extern int is_euc_head(struct session *ses, char *str);
- extern int get_euc_size(struct session *ses, char *str);
- extern int get_euc_width(struct session *ses, char *str, int *width);
- extern int is_big5(char *str);
- extern int big5_to_utf8(char *input, char *output);
- extern int utf8_to_big5(char *input, char *output);
- extern int is_gbk1(char *str);
- extern int gbk1_to_utf8(char *input, char *output);
- extern int utf8_to_gbk1(char *input, char *output);
- extern int is_cp949(char *str);
- extern int cp949_to_utf8(char *input, char *output);
- extern int utf8_to_cp949(char *input, char *output);
- #endif
- #ifndef __VARIABLE_H__
- #define __VARIABLE_H__
- extern DO_COMMAND(do_replace);
- extern int valid_variable(struct session *ses, char *arg);
- extern int string_raw_str_len(struct session *ses, char *str, int start, int end);
- extern int string_str_raw_len(struct session *ses, char *str, int start, int end);
- extern int translate_color_names(struct session *ses, char *string, char *result);
- extern int get_color_names(struct session *ses, char *htype, char *result);
- extern void lowerstring(char *str);
- extern void upperstring(char *str);
- extern void numbertocharacter(struct session *ses, char *str);
- extern void charactertonumber(struct session *ses, char *str);
- extern int delete_variable(struct session *ses, char *variable);
- extern void justify_string(struct session *ses, char *in, char *out, int align, int cut);
- extern void format_string(struct session *ses, char *format, char *arg, char *out);
- extern struct listnode *search_variable(struct session *ses, char *variable);
- extern struct listnode *get_variable(struct session *ses, char *variable, char *result);
- extern struct listnode *set_variable(struct session *ses, char *variable, char *format, ...);
- #endif
- #ifndef __VT102_H__
- #define __VT102_H__
- extern void init_pos(struct session *ses, int row, int col);
- extern void hide_cursor(struct session *ses);
- extern void show_cursor(struct session *ses);
- extern void save_pos(struct session *ses);
- extern void goto_pos(struct session *ses, int row, int col);
- extern void restore_pos(struct session *ses);
- extern void erase_cols(int cnt);
- extern void erase_scroll_region(struct session *ses);
- extern void reset(struct session *ses);
- extern void scroll_region(struct session *ses, int top, int bottom);
- extern void reset_scroll_region(struct session *ses);
- extern int find_color_code(char *str);
- extern int find_escaped_color_code(char *str);
- extern int find_secure_color_code(char *str);
- extern int get_vt102_width(struct session *ses, char *str, int *width);
- extern int strip_vt102_width(struct session *ses, char *str, int *width);
- extern int skip_vt102_codes(char *str);
- extern int skip_vt102_codes_non_graph(char *str);
- extern int strip_vt102_codes(char *str, char *buf);
- extern void strip_vt102_codes_non_graph(char *str, char *buf);
- extern void strip_non_vt102_codes(char *str, char *buf);
- extern void get_color_codes(char *old, char *str, char *buf, int flags);
- extern int strip_vt102_strlen(struct session *ses, char *str);
- extern int strip_color_strlen(struct session *ses, char *str);
- extern char *strip_vt102_strstr(char *str, char *buf, int *len);
- extern int interpret_vt102_codes(struct session *ses, char *str, int real);
- extern int catch_vt102_codes(struct session *ses, unsigned char *str, int cplen);
- #endif
|