2010-08-08 19:48:31 -03:00
# include <stdio.h>
# include <stdlib.h>
2011-10-26 12:04:37 -02:00
# include <string.h>
2010-08-08 19:48:31 -03:00
2010-08-10 15:58:50 -03:00
# include "../debug.h"
2010-08-08 19:48:31 -03:00
# include "helpline.h"
2011-02-09 11:38:43 -02:00
# include "ui.h"
2016-07-07 11:38:09 -03:00
# include "../util.h"
2010-08-08 19:48:31 -03:00
2012-08-16 17:14:50 +09:00
char ui_helpline__current [ 512 ] ;
static void nop_helpline__pop ( void )
2010-08-08 19:48:31 -03:00
{
}
2012-09-11 01:15:03 +03:00
static void nop_helpline__push ( const char * msg __maybe_unused )
2012-08-16 17:14:50 +09:00
{
}
2011-10-26 12:04:37 -02:00
2012-11-15 01:47:41 +09:00
static int nop_helpline__show ( const char * fmt __maybe_unused ,
va_list ap __maybe_unused )
{
return 0 ;
}
2012-08-16 17:14:50 +09:00
static struct ui_helpline default_helpline_fns = {
. pop = nop_helpline__pop ,
. push = nop_helpline__push ,
2012-11-15 01:47:41 +09:00
. show = nop_helpline__show ,
2012-08-16 17:14:50 +09:00
} ;
struct ui_helpline * helpline_fns = & default_helpline_fns ;
void ui_helpline__pop ( void )
2010-08-08 19:48:31 -03:00
{
2012-08-16 17:14:50 +09:00
helpline_fns - > pop ( ) ;
}
2011-10-26 12:04:37 -02:00
2012-08-16 17:14:50 +09:00
void ui_helpline__push ( const char * msg )
{
helpline_fns - > push ( msg ) ;
2010-08-08 19:48:31 -03:00
}
2010-08-10 15:44:20 -03:00
void ui_helpline__vpush ( const char * fmt , va_list ap )
2010-08-08 19:48:31 -03:00
{
char * s ;
if ( vasprintf ( & s , fmt , ap ) < 0 )
vfprintf ( stderr , fmt , ap ) ;
else {
ui_helpline__push ( s ) ;
free ( s ) ;
}
}
void ui_helpline__fpush ( const char * fmt , . . . )
{
va_list ap ;
va_start ( ap , fmt ) ;
ui_helpline__vpush ( fmt , ap ) ;
va_end ( ap ) ;
}
void ui_helpline__puts ( const char * msg )
{
ui_helpline__pop ( ) ;
ui_helpline__push ( msg ) ;
}
2012-11-15 01:47:41 +09:00
int ui_helpline__vshow ( const char * fmt , va_list ap )
{
return helpline_fns - > show ( fmt , ap ) ;
}