@ -36,7 +36,7 @@
# define USAGE \
# define USAGE \
" st " VERSION " (c) 2010-2012 st engineers \n " \
" st " VERSION " (c) 2010-2012 st engineers \n " \
" usage: st [-t title] [-c class] [-w windowid] [-v] [- e command...]\n "
" usage: st [-t title] [-c class] [-w windowid] [-v] [- f file] [- e command...]\n "
/* XEMBED messages */
/* XEMBED messages */
# define XEMBED_FOCUS_IN 4
# define XEMBED_FOCUS_IN 4
@ -342,7 +342,9 @@ static STREscape strescseq;
static int cmdfd ;
static int cmdfd ;
static pid_t pid ;
static pid_t pid ;
static Selection sel ;
static Selection sel ;
static FILE * fileio ;
static char * * opt_cmd = NULL ;
static char * * opt_cmd = NULL ;
static char * opt_io = NULL ;
static char * opt_title = NULL ;
static char * opt_title = NULL ;
static char * opt_embed = NULL ;
static char * opt_embed = NULL ;
static char * opt_class = NULL ;
static char * opt_class = NULL ;
@ -776,6 +778,10 @@ ttynew(void) {
close ( s ) ;
close ( s ) ;
cmdfd = m ;
cmdfd = m ;
signal ( SIGCHLD , sigchld ) ;
signal ( SIGCHLD , sigchld ) ;
if ( opt_io & & ! ( fileio = fopen ( opt_io , " w " ) ) ) {
fprintf ( stderr , " Error opening %s:%s " ,
opt_io , strerror ( errno ) ) ;
}
}
}
}
}
@ -1534,6 +1540,9 @@ tputtab(bool forward) {
void
void
tputc ( char * c ) {
tputc ( char * c ) {
char ascii = * c ;
char ascii = * c ;
if ( fileio )
putc ( ascii , fileio ) ;
if ( term . esc & ESC_START ) {
if ( term . esc & ESC_START ) {
if ( term . esc & ESC_CSI ) {
if ( term . esc & ESC_CSI ) {
csiescseq . buf [ csiescseq . len + + ] = ascii ;
csiescseq . buf [ csiescseq . len + + ] = ascii ;
@ -2269,6 +2278,9 @@ main(int argc, char *argv[]) {
case ' w ' :
case ' w ' :
if ( + + i < argc ) opt_embed = argv [ i ] ;
if ( + + i < argc ) opt_embed = argv [ i ] ;
break ;
break ;
case ' f ' :
if ( + + i < argc ) opt_io = argv [ i ] ;
break ;
case ' e ' :
case ' e ' :
/* eat every remaining arguments */
/* eat every remaining arguments */
if ( + + i < argc ) opt_cmd = & argv [ i ] ;
if ( + + i < argc ) opt_cmd = & argv [ i ] ;