/* Copyright (c) 2008, 2009 * Juergen Weigert (jnweiger@immd4.informatik.uni-erlangen.de) * Michael Schroeder (mlschroe@immd4.informatik.uni-erlangen.de) * Micah Cowan (micah@cowan.name) * Sadrul Habib Chowdhury (sadrul@users.sourceforge.net) * Copyright (c) 1993-2002, 2003, 2005, 2006, 2007 * Juergen Weigert (jnweiger@immd4.informatik.uni-erlangen.de) * Michael Schroeder (mlschroe@immd4.informatik.uni-erlangen.de) * Copyright (c) 1987 Oliver Laumann * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 3, or (at your option) * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program (see the file COPYING); if not, see * https://www.gnu.org/licenses/, or contact Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA * **************************************************************** * $Id$ GNU */ #if !defined(__GNUC__) || __GNUC__ < 2 #undef __attribute__ #define __attribute__(x) #endif #include /* screen.c */ extern int main __P((int, char **)); extern sigret_t SigHup __P(SIGPROTOARG); extern void eexit __P((int)) __attribute__((__noreturn__)); extern void Detach __P((int)); extern void Hangup __P((void)); extern void Kill __P((int, int)); #ifdef USEVARARGS extern void Msg __P((int, const char *, ...)) __attribute__((format(printf, 2, 3))); extern void Panic __P((int, const char *, ...)) __attribute__((format(printf, 2, 3))) __attribute__((__noreturn__)); extern void QueryMsg __P((int, const char *, ...)) __attribute__((format(printf, 2, 3))); extern void Dummy __P((int, const char *, ...)) __attribute__((format(printf, 2, 3))); #else extern void Msg __P(()); extern void Panic __P(()); extern void QueryMsg __P(()); extern void Dummy __P(()); #endif extern void Finit __P((int)); extern void MakeNewEnv __P((void)); extern char *MakeWinMsg __P((char *, struct win *, int)); extern char *MakeWinMsgEv __P((char *, struct win *, int, int, struct event *, int)); extern int AddWinMsgRend __P((const char *, int)); extern void PutWinMsg __P((char *, int, int)); #ifdef BSDWAIT extern void WindowDied __P((struct win *, union wait, int)); #else extern void WindowDied __P((struct win *, int, int)); #endif extern void setbacktick __P((int, int, int, char **)); /* ansi.c */ extern void ResetAnsiState __P((struct win *)); extern void ResetWindow __P((struct win *)); extern void ResetCharsets __P((struct win *)); extern void WriteString __P((struct win *, char *, int)); extern void ChangeAKA __P((struct win *, char *, int)); extern void SetCharsets __P((struct win *, char *)); extern int GetAnsiStatus __P((struct win *, char *)); extern void WNewAutoFlow __P((struct win *, int)); extern void WBell __P((struct win *, int)); extern void WMsg __P((struct win *, int, char *)); extern void WChangeSize __P((struct win *, int, int)); extern void WindowChanged __P((struct win *, int)); extern int MFindUsedLine __P((struct win *, int, int)); /* fileio.c */ extern int StartRc __P((char *, int)); extern void FinishRc __P((char *)); extern void RcLine __P((char *, int)); extern FILE *secfopen __P((char *, char *)); extern int secopen __P((char *, int, int)); extern void WriteFile __P((struct acluser *, char *, int)); extern char *ReadFile __P((char *, int *)); extern void KillBuffers __P((void)); extern int printpipe __P((struct win *, char *)); extern int readpipe __P((char **)); extern void RunBlanker __P((char **)); extern void do_source __P((char *)); /* tty.c */ extern int OpenTTY __P((char *, char *)); extern void InitTTY __P((struct mode *, int)); extern void GetTTY __P((int, struct mode *)); extern void SetTTY __P((int, struct mode *)); extern void SetMode __P((struct mode *, struct mode *, int, int)); extern void SetFlow __P((int)); extern void SendBreak __P((struct win *, int, int)); extern int TtyGrabConsole __P((int, int, char *)); extern char *TtyGetModemStatus __P((int, char *)); #ifdef DEBUG extern void DebugTTY __P((struct mode *)); #endif /* DEBUG */ extern int fgtty __P((int)); extern void brktty __P((int)); extern struct baud_values *lookup_baud __P((int bps)); extern int SetBaud __P((struct mode *, int, int)); extern int SttyMode __P((struct mode *, char *)); extern int CheckTtyname __P((char *)); extern char *GetPtsPathOrSymlink __P((int)); /* mark.c */ extern int GetHistory __P((void)); extern void MarkRoutine __P((void)); extern void revto_line __P((int, int, int)); extern void revto __P((int, int)); extern int InMark __P((void)); extern void MakePaster __P((struct paster *, char *, int, int)); extern void FreePaster __P((struct paster *)); /* search.c */ extern void Search __P((int)); extern void ISearch __P((int)); /* input.c */ extern void inp_setprompt __P((char *, char *)); extern void Input __P((char *, int, int, void (*)(char *, int, char *), char *, int)); extern int InInput __P((void)); /* help.c */ extern void exit_with_usage __P((char *, char *, char *)); extern void display_help __P((char *, struct action *)); extern void display_copyright __P((void)); extern void display_displays __P((void)); extern void display_bindkey __P((char *, struct action *)); extern int InWList __P((void)); extern void WListUpdatecv __P((struct canvas *, struct win *)); extern void WListLinkChanged __P((void)); #ifdef ZMODEM extern void ZmodemPage __P((void)); #endif /* window.c */ extern int MakeWindow __P((struct NewWindow *)); extern int RemakeWindow __P((struct win *)); extern void FreeWindow __P((struct win *)); #ifdef PSEUDOS extern int winexec __P((char **)); extern void FreePseudowin __P((struct win *)); #endif extern void nwin_compose __P((struct NewWindow *, struct NewWindow *, struct NewWindow *)); extern int DoStartLog __P((struct win *, char *, int)); extern int ReleaseAutoWritelock __P((struct display *, struct win *)); extern int ObtainAutoWritelock __P((struct display *, struct win *)); extern void CloseDevice __P((struct win *)); #ifdef ZMODEM extern void zmodem_abort __P((struct win *, struct display *)); #endif #ifndef HAVE_EXECVPE extern void execvpe __P((char *, char **, char **)); #endif /* utmp.c */ #ifdef UTMPOK extern void InitUtmp __P((void)); extern void RemoveLoginSlot __P((void)); extern void RestoreLoginSlot __P((void)); extern int SetUtmp __P((struct win *)); extern int RemoveUtmp __P((struct win *)); #endif /* UTMPOK */ extern void SlotToggle __P((int)); #ifdef USRLIMIT extern int CountUsers __P((void)); #endif #ifdef CAREFULUTMP extern void CarefulUtmp __P((void)); #else # define CarefulUtmp() /* nothing */ #endif /* CAREFULUTMP */ /* loadav.c */ #ifdef LOADAV extern void InitLoadav __P((void)); extern void AddLoadav __P((char *)); #endif /* pty.c */ extern int OpenPTY __P((char **)); extern void InitPTY __P((int)); /* process.c */ extern void InitKeytab __P((void)); extern void ProcessInput __P((char *, int)); #ifdef MAPKEYS extern void ProcessInput2 __P((char *, int)); #endif extern void DoProcess __P((struct win *, char **, int *, struct paster *)); extern void DoAction __P((struct action *, int)); extern int FindCommnr __P((const char *)); extern void DoCommand __P((char **, int *)); extern void Activate __P((int)); extern void KillWindow __P((struct win *)); extern void SetForeWindow __P((struct win *)); extern int Parse __P((char *, int, char **, int *)); extern void SetEscape __P((struct acluser *, int, int)); extern void DoScreen __P((char *, char **)); extern int IsNumColon __P((char *, int, char *, int)); extern void ShowWindows __P((int)); extern char *AddWindows __P((char *, int, int, int)); extern char *AddWindowFlags __P((char *, int, struct win *)); extern char *AddOtherUsers __P((char *, int, struct win *)); extern int WindowByNoN __P((char *)); extern struct win *FindNiceWindow __P((struct win *, char *)); #ifdef COPY_PASTE extern int CompileKeys __P((char *, int, unsigned char *)); #endif #ifdef RXVT_OSC extern void RefreshXtermOSC __P((void)); #endif extern int ParseSaveStr __P((struct action *act, char **)); extern int ParseNum __P((struct action *act, int *)); extern int ParseSwitch __P((struct action *, int *)); extern int ParseAttrColor __P((char *, char *, int)); extern void ApplyAttrColor __P((int, struct mchar *)); extern void SwitchWindow __P((int)); extern int StuffKey __P((int)); /* termcap.c */ extern int InitTermcap __P((int, int)); extern char *MakeTermcap __P((int)); extern void DumpTermcap __P((int, FILE *)); extern char *gettermcapstring __P((char *)); #ifdef MAPKEYS extern int remap __P((int, int)); extern void CheckEscape __P((void)); #endif extern int CreateTransTable __P((char *)); extern void FreeTransTable __P((void)); /* attacher.c */ extern int Attach __P((int)); extern void Attacher __P((void)); extern sigret_t AttacherFinit __P(SIGPROTOARG); extern void SendCmdMessage __P((char *, char *, char **, int)); /* display.c */ extern struct display *MakeDisplay __P((char *, char *, char *, int, int, struct mode *)); extern void FreeDisplay __P((void)); extern void DefProcess __P((char **, int *)); extern void DefRedisplayLine __P((int, int, int, int)); extern void DefClearLine __P((int, int, int, int)); extern int DefRewrite __P((int, int, int, struct mchar *, int)); extern int DefResize __P((int, int)); extern void DefRestore __P((void)); extern void AddCStr __P((char *)); extern void AddCStr2 __P((char *, int)); extern void InitTerm __P((int)); extern void FinitTerm __P((void)); extern void PUTCHAR __P((int)); extern void PUTCHARLP __P((int)); extern void ClearAll __P((void)); extern void ClearArea __P((int, int, int, int, int, int, int, int)); extern void ClearLine __P((struct mline *, int, int, int, int)); extern void RefreshAll __P((int)); extern void RefreshArea __P((int, int, int, int, int)); extern void RefreshLine __P((int, int, int, int)); extern void Redisplay __P((int)); extern void RedisplayDisplays __P((int)); extern void ShowHStatus __P((char *)); extern void RefreshHStatus __P((void)); extern void DisplayLine __P((struct mline *, struct mline *, int, int, int)); extern void GotoPos __P((int, int)); extern int CalcCost __P((char *)); extern void ScrollH __P((int, int, int, int, int, struct mline *)); extern void ScrollV __P((int, int, int, int, int, int)); extern void PutChar __P((struct mchar *, int, int)); extern void InsChar __P((struct mchar *, int, int, int, struct mline *)); extern void WrapChar __P((struct mchar *, int, int, int, int, int, int, int)); extern void ChangeScrollRegion __P((int, int)); extern void InsertMode __P((int)); extern void KeypadMode __P((int)); extern void CursorkeysMode __P((int)); extern void ReverseVideo __P((int)); extern void CursorVisibility __P((int)); extern void MouseMode __P((int)); extern void ExtMouseMode __P((int)); extern void SetFont __P((int)); extern void SetAttr __P((int)); extern void SetColor __P((int, int)); extern void SetRendition __P((struct mchar *)); extern void SetRenditionMline __P((struct mline *, int)); extern void MakeStatus __P((char *)); extern void RemoveStatus __P((void)); extern int ResizeDisplay __P((int, int)); extern void AddStr __P((char *)); extern void AddStrn __P((char *, int)); extern void Flush __P((int)); extern void freetty __P((void)); extern void Resize_obuf __P((void)); #ifdef AUTO_NUKE extern void NukePending __P((void)); #endif #ifdef RXVT_OSC extern void ClearAllXtermOSC __P((void)); extern void SetXtermOSC __P((int, char *, char *)); #endif #ifdef COLOR extern int color256to16 __P((int)); # ifdef COLORS256 extern int color256to88 __P((int)); # endif #endif extern void ResetIdle __P((void)); extern void KillBlanker __P((void)); extern void DisplaySleep1000 __P((int, int)); /* resize.c */ extern int ChangeWindowSize __P((struct win *, int, int, int)); extern void ChangeScreenSize __P((int, int, int)); extern void CheckScreenSize __P((int)); extern char *xrealloc __P((char *, int)); extern void ResizeLayersToCanvases __P((void)); extern void ResizeLayer __P((struct layer *, int, int, struct display *)); extern int MayResizeLayer __P((struct layer *)); extern void FreeAltScreen __P((struct win *)); extern void EnterAltScreen __P((struct win *)); extern void LeaveAltScreen __P((struct win *)); /* sched.c */ extern void evenq __P((struct event *)); extern void evdeq __P((struct event *)); extern void SetTimeout __P((struct event *, int)); extern void sched __P((void)); /* socket.c */ extern int FindSocket __P((int *, int *, int *, char *, bool *)); extern int MakeClientSocket __P((int, bool)); extern int MakeServerSocket __P((bool)); extern int RecoverSocket __P((void)); extern int chsock __P((void)); extern void ReceiveMsg __P((void)); extern void SendCreateMsg __P((char *, struct NewWindow *)); extern int SendErrorMsg __P((char *, char *)); extern int SendAttachMsg __P((int, struct msg *, int)); extern void ReceiveRaw __P((int)); extern bool IsSocket __P((const char *)); /* misc.c */ extern char *SaveStr __P((const char *)); extern char *SaveStrn __P((const char *, int)); extern char *InStr __P((char *, const char *)); #ifndef HAVE_STRERROR extern char *strerror __P((int)); #endif extern void centerline __P((char *, int)); extern void leftline __P((char *, int, struct mchar *)); extern char *Filename __P((char *)); extern char *stripdev __P((char *)); #ifdef NEED_OWN_BCOPY extern void xbcopy __P((char *, char *, int)); #endif extern void bclear __P((char *, int)); extern void closeallfiles __P((int)); extern int UserContext __P((void)); extern void UserReturn __P((int)); extern int UserStatus __P((void)); #if defined(POSIX) || defined(hpux) extern void (*xsignal __P((int, void (*)SIGPROTOARG))) __P(SIGPROTOARG); #endif #ifndef HAVE_RENAME extern int rename __P((char *, char *)); #endif #if defined(HAVE_SETEUID) || defined(HAVE_SETREUID) extern void xseteuid __P((int)); extern void xsetegid __P((int)); #endif extern int AddXChar __P((char *, int)); extern int AddXChars __P((char *, int, char *)); extern void xsetenv __P((char *, char *)); extern void sleep1000 __P((int)); #ifdef DEBUG extern void opendebug __P((int, int)); #endif #ifdef USEVARARGS # ifndef HAVE_VSNPRINTF extern int xvsnprintf __P((char *, int, char *, va_list)); # endif #else extern int xsnprintf __P(()); #endif /* acl.c */ #ifdef MULTIUSER extern int AclCheckPermWin __P((struct acluser *, int, struct win *)); extern int AclCheckPermCmd __P((struct acluser *, int, struct comm *)); extern int AclSetPerm __P((struct acluser *, struct acluser *, char *, char *)); extern int AclUmask __P((struct acluser *, char *, char **)); extern int UsersAcl __P((struct acluser *, int, char **)); extern void AclWinSwap __P((int, int)); extern int NewWindowAcl __P((struct win *, struct acluser *)); extern void FreeWindowAcl __P((struct win *)); extern char *DoSu __P((struct acluser **, char *, char *, char *)); extern int AclLinkUser __P((char *, char *)); #endif /* MULTIUSER */ extern int UserFreeCopyBuffer __P((struct acluser *)); extern struct acluser **FindUserPtr __P((char *)); extern int UserAdd __P((char *, char *, struct acluser **)); extern int UserDel __P((char *, struct acluser **)); /* braile.c */ #ifdef HAVE_BRAILLE extern void InitBraille __P((void)); extern void RefreshBraille __P((void)); extern void DoBrailleAction __P((struct action *, int)); extern void BGotoPos __P((struct layer *, int, int)); extern void BPutChar __P((struct layer *, struct mchar *, int, int)); extern void BPutStr __P((struct layer *, char *, int, struct mchar *, int, int)); extern void BCDisplayLine __P((struct layer *, struct mline *, int, int, int, int)); #endif /* layer.c */ extern void LGotoPos __P((struct layer *, int, int)); extern void LPutChar __P((struct layer *, struct mchar *, int, int)); extern void LInsChar __P((struct layer *, struct mchar *, int, int, struct mline *)); extern void LPutStr __P((struct layer *, char *, int, struct mchar *, int, int)); extern void LPutWinMsg __P((struct layer *, char *, int, struct mchar *, int, int)); extern void LScrollH __P((struct layer *, int, int, int, int, int, struct mline *)); extern void LScrollV __P((struct layer *, int, int, int, int)); extern void LClearAll __P((struct layer *, int)); extern void LClearArea __P((struct layer *, int, int, int, int, int, int)); extern void LClearLine __P((struct layer *, int, int, int, int, struct mline *)); extern void LRefreshAll __P((struct layer *, int)); extern void LCDisplayLine __P((struct layer *, struct mline *, int, int, int, int)); extern void LCDisplayLineWrap __P((struct layer *, struct mline *, int, int, int, int)); extern void LSetRendition __P((struct layer *, struct mchar *)); extern void LWrapChar __P((struct layer *, struct mchar *, int, int, int, int)); extern void LCursorVisibility __P((struct layer *, int)); extern void LSetFlow __P((struct layer *, int)); extern void LKeypadMode __P((struct layer *, int)); extern void LCursorkeysMode __P((struct layer *, int)); extern void LMouseMode __P((struct layer *, int)); extern void LExtMouseMode __P((struct layer *, int)); #if defined(USEVARARGS) extern void LMsg __P((int, const char *, ...)) __attribute__((format(printf, 2, 3))); #else extern void LMsg __P(()); #endif extern void KillLayerChain __P((struct layer *)); extern int InitOverlayPage __P((int, struct LayFuncs *, int)); extern void ExitOverlayPage __P((void)); extern int LayProcessMouse __P((struct layer *, unsigned char)); extern void LayProcessMouseSwitch __P((struct layer *, int)); /* teln.c */ #ifdef BUILTIN_TELNET extern int TelOpenAndConnect __P((struct win *)); extern int TelIsline __P((struct win *p)); extern void TelProcessLine __P((char **, int *)); extern int DoTelnet __P((char *, int *, int)); extern int TelIn __P((struct win *, char *, int, int)); extern void TelBreak __P((struct win *)); extern void TelWindowSize __P((struct win *)); extern void TelStatus __P((struct win *, char *, int)); #endif /* nethack.c */ extern const char *DoNLS __P((const char *)); /* encoding.c */ #ifdef ENCODINGS # ifdef UTF8 extern void InitBuiltinTabs __P((void)); extern struct mchar *recode_mchar __P((struct mchar *, int, int)); extern struct mline *recode_mline __P((struct mline *, int, int, int)); extern int FromUtf8 __P((int, int *)); extern void AddUtf8 __P((int)); extern int ToUtf8 __P((char *, int)); extern int ToUtf8_comb __P((char *, int)); extern int utf8_isdouble __P((int)); extern int utf8_iscomb __P((int)); extern void utf8_handle_comb __P((int, struct mchar *)); extern int ContainsSpecialDeffont __P((struct mline *, int, int, int)); extern int LoadFontTranslation __P((int, char *)); extern void LoadFontTranslationsForEncoding __P((int)); # endif /* UTF8 */ extern void WinSwitchEncoding __P((struct win *, int)); extern int FindEncoding __P((char *)); extern char *EncodingName __P((int)); extern int EncodingDefFont __P((int)); extern void ResetEncoding __P((struct win *)); extern int CanEncodeFont __P((int, int)); extern int DecodeChar __P((int, int, int *)); extern int RecodeBuf __P((unsigned char *, int, int, int, unsigned char *)); # ifdef DW_CHARS extern int PrepareEncodedChar __P((int)); # endif #endif extern int EncodeChar __P((char *, int, int, int *)); /* layout.c */ extern void RemoveLayout __P((struct layout *)); extern int LayoutDumpCanvas __P((struct canvas *, char *));