@ -19,15 +19,16 @@ static bool dev_disconnect_nocommit;
bool dev_suppress_commit ;
bool dev_suppress_commit ;
void dev_disconnect_init ( int f d)
static void next_dev_disconnect ( voi d)
{
{
int r ;
int r ;
char * asterisk ;
char * asterisk ;
r = read ( fd , dev_disconnect_line , sizeof ( dev_disconnect_line ) - 1 ) ;
r = read ( dev_disconnect_fd ,
dev_disconnect_line , sizeof ( dev_disconnect_line ) - 1 ) ;
if ( r < 0 )
if ( r < 0 )
err ( 1 , " Reading dev_disconnect file " ) ;
err ( 1 , " Reading dev_disconnect file " ) ;
lseek ( fd , - r , SEEK_CUR ) ;
lseek ( dev_disconnect_ fd, - r , SEEK_CUR ) ;
/* Get first line */
/* Get first line */
dev_disconnect_line [ r ] = ' \n ' ;
dev_disconnect_line [ r ] = ' \n ' ;
@ -49,22 +50,29 @@ void dev_disconnect_init(int fd)
* asterisk = ' \0 ' ;
* asterisk = ' \0 ' ;
} else
} else
dev_disconnect_count = 1 ;
dev_disconnect_count = 1 ;
}
void dev_disconnect_init ( int fd )
{
/* So we can move forward if we do use the line. */
/* So we can move forward if we do use the line. */
dev_disconnect_fd = fd ;
dev_disconnect_fd = fd ;
}
}
enum dev_disconnect dev_disconnect ( int pkt_type )
enum dev_disconnect dev_disconnect ( int pkt_type )
{
{
if ( dev_disconnect_fd = = - 1 )
return DEV_DISCONNECT_NORMAL ;
if ( ! dev_disconnect_count )
next_dev_disconnect ( ) ;
if ( ! streq ( wire_type_name ( pkt_type ) , dev_disconnect_line + 1 ) )
if ( ! streq ( wire_type_name ( pkt_type ) , dev_disconnect_line + 1 ) )
return DEV_DISCONNECT_NORMAL ;
return DEV_DISCONNECT_NORMAL ;
if ( dev_disconnect_count ! = 1 ) {
if ( - - dev_disconnect_count ! = 0 ) {
dev_disconnect_count - - ;
return DEV_DISCONNECT_NORMAL ;
return DEV_DISCONNECT_NORMAL ;
}
}
assert ( dev_disconnect_fd ! = - 1 ) ;
lseek ( dev_disconnect_fd , dev_disconnect_len + 1 , SEEK_CUR ) ;
lseek ( dev_disconnect_fd , dev_disconnect_len + 1 , SEEK_CUR ) ;
status_trace ( " dev_disconnect: %s%s " , dev_disconnect_line ,
status_trace ( " dev_disconnect: %s%s " , dev_disconnect_line ,