示例#1
0
int test_getline(void)
{
	STR_DEFINE(s1, 10);
	STR_DEFINE(s2, 10);
	FILE *fp;
	int ret;
	int line_nr;

	dump_str(s1, "s1");
	dump_str(s2, "s2");

	T_GETLINE("");
	T_GETLINE("A\nB\rC\r\nD\n\rE");
	T_GETLINE("A\nB\rC\r\nD\n\rE\n");
	T_GETLINE("A\nB\rC\r\nD\n\rE\r");
	T_GETLINE("A\nB\rC\r\nD\n\rE\n\r");
	T_GETLINE("A\nB\rC\r\nD\n\rE\r\n");
	T_GETLINE("1234567890" "1234567890" "1234567890" "1234567890");

	STR_DELETE(s1);
	mu_assert_ptr_null(s1);

	STR_DELETE(s2);
	mu_assert_ptr_null(s2);

	return MU_PASS;
}
示例#2
0
void error_missing_close_block(void)
{
	STR_DEFINE(msg, STR_SIZE);

	str_append_sprintf( msg, "{} block not closed" );
	do_error( ErrError, str_data(msg) );
	
	STR_DELETE(msg);
}
示例#3
0
void error_syntax(void)
{
	STR_DEFINE(msg, STR_SIZE);

	str_append_sprintf( msg, "syntax error" );
	do_error( ErrError, str_data(msg) );
	
	STR_DELETE(msg);
}
示例#4
0
void warn_symbol_different(char *name, char *used)
{
	STR_DEFINE(msg, STR_SIZE);

	str_append_sprintf( msg, "symbol '%s' used as '%s'", name, used );
	do_error( ErrWarn, str_data(msg) );
	
	STR_DELETE(msg);
}
示例#5
0
void error_illegal_src_filename(char *filename)
{
	STR_DEFINE(msg, STR_SIZE);

	str_append_sprintf( msg, "illegal source filename '%s'", filename );
	do_error( ErrError, str_data(msg) );
	
	STR_DELETE(msg);
}
示例#6
0
void error_no_src_file(void)
{
	STR_DEFINE(msg, STR_SIZE);

	str_append_sprintf( msg, "source filename missing" );
	do_error( ErrError, str_data(msg) );
	
	STR_DELETE(msg);
}
示例#7
0
void error_include_recursion(char *filename)
{
	STR_DEFINE(msg, STR_SIZE);

	str_append_sprintf( msg, "cannot include file '%s' recursively", filename );
	do_error( ErrError, str_data(msg) );
	
	STR_DELETE(msg);
}
示例#8
0
void error_not_lib_file(char *filename)
{
	STR_DEFINE(msg, STR_SIZE);

	str_append_sprintf( msg, "file '%s' not a library file", filename );
	do_error( ErrError, str_data(msg) );
	
	STR_DELETE(msg);
}
示例#9
0
void error_symbol_redefined_module(char *symbol, char *module)
{
	STR_DEFINE(msg, STR_SIZE);

	str_append_sprintf( msg, "symbol '%s' already defined in module '%s'", symbol, module );
	do_error( ErrError, str_data(msg) );
	
	STR_DELETE(msg);
}
示例#10
0
void error_symbol_redefined(char *symbol)
{
	STR_DEFINE(msg, STR_SIZE);

	str_append_sprintf( msg, "symbol '%s' already defined", symbol );
	do_error( ErrError, str_data(msg) );
	
	STR_DELETE(msg);
}
示例#11
0
void error_jr_not_local(void)
{
	STR_DEFINE(msg, STR_SIZE);

	str_append_sprintf( msg, "relative jump address must be local" );
	do_error( ErrError, str_data(msg) );
	
	STR_DELETE(msg);
}
示例#12
0
void error_illegal_ident(void)
{
	STR_DEFINE(msg, STR_SIZE);

	str_append_sprintf( msg, "illegal identifier" );
	do_error( ErrError, str_data(msg) );
	
	STR_DELETE(msg);
}
示例#13
0
void error_not_defined(char *name)
{
	STR_DEFINE(msg, STR_SIZE);

	str_append_sprintf( msg, "symbol '%s' not defined", name );
	do_error( ErrError, str_data(msg) );
	
	STR_DELETE(msg);
}
示例#14
0
void error_unbalanced_struct(void)
{
	STR_DEFINE(msg, STR_SIZE);

	str_append_sprintf( msg, "unbalanced control structure" );
	do_error( ErrError, str_data(msg) );
	
	STR_DELETE(msg);
}
示例#15
0
void error_unbalanced_struct_at(char *filename, int line_nr)
{
	STR_DEFINE(msg, STR_SIZE);

	str_append_sprintf( msg, "unbalanced control structure started at file '%s' line %d", filename, line_nr );
	do_error( ErrError, str_data(msg) );
	
	STR_DELETE(msg);
}
示例#16
0
void warn_org_ignored(char *filename, char *section_name)
{
	STR_DEFINE(msg, STR_SIZE);

	str_append_sprintf( msg, "--relocatable ignores ORG at file '%s', section '%s'", filename, section_name );
	do_error( ErrWarn, str_data(msg) );
	
	STR_DELETE(msg);
}
示例#17
0
void error_env_not_defined(char *var)
{
	STR_DEFINE(msg, STR_SIZE);

	str_append_sprintf( msg, "environment variable '%s' not defined", var );
	do_error( ErrError, str_data(msg) );
	
	STR_DELETE(msg);
}
示例#18
0
void error_symbol_decl_local(char *symbol)
{
	STR_DEFINE(msg, STR_SIZE);

	str_append_sprintf( msg, "symbol '%s' already declared local", symbol );
	do_error( ErrError, str_data(msg) );
	
	STR_DELETE(msg);
}
示例#19
0
void error_int_range(long value)
{
	STR_DEFINE(msg, STR_SIZE);

	str_append_sprintf( msg, "integer '%ld' out of range", value );
	do_error( ErrError, str_data(msg) );
	
	STR_DELETE(msg);
}
示例#20
0
void error_symbol_redecl(char *symbol)
{
	STR_DEFINE(msg, STR_SIZE);

	str_append_sprintf( msg, "re-declaration of '%s' not allowed", symbol );
	do_error( ErrError, str_data(msg) );
	
	STR_DELETE(msg);
}
示例#21
0
void warn_option_deprecated(char *option)
{
	STR_DEFINE(msg, STR_SIZE);

	str_append_sprintf( msg, "option '%s' is deprecated", option );
	do_error( ErrWarn, str_data(msg) );
	
	STR_DELETE(msg);
}
示例#22
0
void error_max_codesize(long size)
{
	STR_DEFINE(msg, STR_SIZE);

	str_append_sprintf( msg, "max. code size of %ld bytes reached", size );
	do_error( ErrError, str_data(msg) );
	
	STR_DELETE(msg);
}
示例#23
0
void error_illegal_option(char *option)
{
	STR_DEFINE(msg, STR_SIZE);

	str_append_sprintf( msg, "illegal option '%s'", option );
	do_error( ErrError, str_data(msg) );
	
	STR_DELETE(msg);
}
示例#24
0
void error_module_redefined(void)
{
	STR_DEFINE(msg, STR_SIZE);

	str_append_sprintf( msg, "module name already defined" );
	do_error( ErrError, str_data(msg) );
	
	STR_DELETE(msg);
}
示例#25
0
void info_total_errors(void)
{
	STR_DEFINE(msg, STR_SIZE);

	str_append_sprintf( msg, "%d errors occurred during assembly", get_num_errors() );
	do_error( ErrInfo, str_data(msg) );
	
	STR_DELETE(msg);
}
示例#26
0
void error_write_file(char *filename)
{
	STR_DEFINE(msg, STR_SIZE);

	str_append_sprintf( msg, "cannot write file '%s'", filename );
	do_error( ErrError, str_data(msg) );
	
	STR_DELETE(msg);
}
示例#27
0
void warn_deprecated(char *old_stmt, char *new_stmt)
{
	STR_DEFINE(msg, STR_SIZE);

	str_append_sprintf( msg, "'%s' is deprecated, use '%s' instead", old_stmt, new_stmt );
	do_error( ErrWarn, str_data(msg) );
	
	STR_DELETE(msg);
}
示例#28
0
void error_org_redefined(void)
{
	STR_DEFINE(msg, STR_SIZE);

	str_append_sprintf( msg, "ORG redefined" );
	do_error( ErrError, str_data(msg) );
	
	STR_DELETE(msg);
}
示例#29
0
文件: errors.c 项目: meesokim/z88dk
/*-----------------------------------------------------------------------------
*   Output error message
*----------------------------------------------------------------------------*/
static void do_error( enum ErrType err_type, char *message )
{
	STR_DEFINE(msg, STR_SIZE);
    size_t len_at, len_prefix;

    init_module();

    /* init empty message */
    str_clear( msg );

    /* Information messages have no prefix */
    if ( err_type != ErrInfo )
    {
        str_append( msg, err_type == ErrWarn ? "Warning" : "Error" );

        /* prepare to remove " at" if no prefix */
        len_at = str_len(msg);
        str_append( msg, " at" );
        len_prefix = str_len(msg);

        /* output filename */
        if ( errors.filename && *errors.filename )
            str_append_sprintf( msg, " file '%s'", errors.filename );

        /* output module */
        if ( errors.module != NULL && *errors.module )
            str_append_sprintf( msg, " module '%s'", errors.module );

        /* output line number */
        if ( errors.line > 0 )
            str_append_sprintf( msg, " line %d", errors.line );

        /* remove at if no prefix */
        if ( len_prefix == str_len(msg) )	/* no prefix loaded to string */
        {
            str_data(msg)[ len_at ] = '\0';	/* go back 3 chars to before at */
            str_sync_len( msg );
        }

        str_append( msg, ": " );
    }

    /* output error message */
    str_append( msg, message );
    str_append_char( msg, '\n' );

    /* CH_0001 : Assembly error messages should appear on stderr */
    fputs( str_data(msg), stderr );

    /* send to error file */
    puts_error_file( str_data(msg) );

    if ( err_type == ErrError )
        errors.count++;		/* count number of errors */

	STR_DELETE(msg);
}
示例#30
0
void error_invalid_org_option(char *org_hex)
{
	STR_DEFINE(msg, STR_SIZE);

	str_append_sprintf( msg, "invalid ORG option '%s'", org_hex );
	do_error( ErrError, str_data(msg) );
	
	STR_DELETE(msg);
}