Skip to content
Snippets Groups Projects
Select Git revision
  • dailybuild_linux-x64
  • dailybuild_macos-armv8
  • dailybuild_win32
  • master default protected
  • dd_lightbar_menu_improve_utf8_item_printing
  • sqlite
  • rip_abstraction
  • dd_file_lister_filanem_in_desc_color
  • mode7
  • dd_msg_reader_are_you_there_warning_improvement
  • c23-playing
  • syncterm-1.3
  • syncterm-1.2
  • test-build
  • hide_remote_connection_with_telgate
  • 638-can-t-control-c-during-a-file-search
  • add_body_to_pager_email
  • mingw32-build
  • cryptlib-3.4.7
  • ree/mastermind
  • sbbs320d
  • syncterm-1.6
  • syncterm-1.5
  • syncterm-1.4
  • sbbs320b
  • syncterm-1.3
  • syncterm-1.2
  • syncterm-1.2rc6
  • syncterm-1.2rc5
  • push
  • syncterm-1.2rc4
  • syncterm-1.2rc2
  • syncterm-1.2rc1
  • sbbs319b
  • sbbs318b
  • goodbuild_linux-x64_Sep-01-2020
  • goodbuild_win32_Sep-01-2020
  • goodbuild_linux-x64_Aug-31-2020
  • goodbuild_win32_Aug-31-2020
  • goodbuild_win32_Aug-30-2020
40 results

xtrn.cpp

Blame
  • xtrn.cpp 62.16 KiB
    /* Synchronet external program support routines */
    
    /****************************************************************************
     * @format.tab-size 4		(Plain Text/Source Code File Header)			*
     * @format.use-tabs true	(see http://www.synchro.net/ptsc_hdr.html)		*
     *																			*
     * Copyright Rob Swindell - http://www.synchro.net/copyright.html			*
     *																			*
     * This program is free software; you can redistribute it and/or			*
     * modify it under the terms of the GNU General Public License				*
     * as published by the Free Software Foundation; either version 2			*
     * of the License, or (at your option) any later version.					*
     * See the GNU General Public License for more details: gpl.txt or			*
     * http://www.fsf.org/copyleft/gpl.html										*
     *																			*
     * For Synchronet coding style and modification guidelines, see				*
     * http://www.synchro.net/source.html										*
     *																			*
     * Note: If this box doesn't appear square, then you need to fix your tabs.	*
     ****************************************************************************/
    
    #include "sbbs.h"
    #include "cmdshell.h"
    #include "telnet.h"
    
    #include <signal.h>			// kill()
    
    #ifdef __unix__
    	#include <sys/wait.h>	// WEXITSTATUS
    
    	#include <sys/ttydefaults.h>	// Linux - it's motherfucked.
    #if defined(__FreeBSD__)
    	#include <libutil.h>	// forkpty()
    #elif defined(__OpenBSD__) || defined(__NetBSD__) || defined(__DARWIN__)
    	#include <util.h>
    #elif defined(__linux__)
    	#include <pty.h>
    #elif defined(__QNX__)
    #if 0
    	#include <unix.h>
    #else
    	#define NEEDS_FORKPTY
    #endif
    #endif
    
    	#ifdef NEEDS_FORKPTY
    	#include <grp.h>
    	#endif
    
    	#include <termios.h>
    
    /*
     * Control Character Defaults
     */
    #ifdef _POSIX_VDISABLE
    #define XTRN_VDISABLE _POSIX_VDISABLE
    #else
    #define XTRN_VDISABLE 0xff
    #endif
    #ifndef CTRL
    	#define CTRL(x)	(x&037)
    #endif
    #ifndef CEOF
    	#define	CEOF		CTRL('d')
    #endif
    #ifndef CEOL
    	#define	CEOL		XTRN_VDISABLE
    #endif
    #ifndef CERASE
    	#define	CERASE		0177