mirror of
https://github.com/dgibson/dtc.git
synced 2025-10-13 16:27:39 -04:00
Moved data_convert_cell() out of data.c to the parser.
It constructs a cell_t, not data objects. Renamed it to cell_from_string() as well. Signed-off-by: Jon Loeliger <jdl@freescale.com>
This commit is contained in:
parent
fd84d97dee
commit
3948849fd0
3 changed files with 27 additions and 24 deletions
20
data.c
20
data.c
|
@ -225,26 +225,6 @@ struct data data_merge(struct data d1, struct data d2)
|
|||
return d;
|
||||
}
|
||||
|
||||
/*
|
||||
* Convert a string representation of a numberic cell
|
||||
* in the given base into a cell.
|
||||
*/
|
||||
cell_t data_convert_cell(char *s, unsigned int base)
|
||||
{
|
||||
cell_t c;
|
||||
extern YYLTYPE yylloc;
|
||||
|
||||
c = strtoul(s, NULL, base);
|
||||
if (errno == EINVAL || errno == ERANGE) {
|
||||
fprintf(stderr,
|
||||
"Line %d: Invalid cell value '%s'; %d assumed\n",
|
||||
yylloc.first_line, s, c);
|
||||
}
|
||||
|
||||
return c;
|
||||
}
|
||||
|
||||
|
||||
struct data data_append_cell(struct data d, cell_t word)
|
||||
{
|
||||
cell_t beword = cpu_to_be32(word);
|
||||
|
|
30
dtc-parser.y
30
dtc-parser.y
|
@ -24,8 +24,9 @@
|
|||
%{
|
||||
#include "dtc.h"
|
||||
|
||||
int yylex (void);
|
||||
void yyerror (char const *);
|
||||
int yylex(void);
|
||||
void yyerror(char const *);
|
||||
cell_t cell_from_string(char *s, unsigned int base);
|
||||
|
||||
extern struct boot_info *the_boot_info;
|
||||
|
||||
|
@ -144,7 +145,7 @@ opt_cell_base:
|
|||
|
||||
celllist: celllist opt_cell_base DT_CELL {
|
||||
$$ = data_append_cell($1,
|
||||
data_convert_cell($3, $2));
|
||||
cell_from_string($3, $2));
|
||||
}
|
||||
| celllist DT_REF {
|
||||
$$ = data_append_cell(data_add_fixup($1, $2), -1);
|
||||
|
@ -179,3 +180,26 @@ void yyerror (char const *s)
|
|||
{
|
||||
fprintf (stderr, "%s at line %d\n", s, yylloc.first_line);
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* Convert a string representation of a numeric cell
|
||||
* in the given base into a cell.
|
||||
*
|
||||
* FIXME: The string "abc123", base 10, should be flagged
|
||||
* as an error due to the leading "a", but isn't yet.
|
||||
*/
|
||||
|
||||
cell_t cell_from_string(char *s, unsigned int base)
|
||||
{
|
||||
cell_t c;
|
||||
|
||||
c = strtoul(s, NULL, base);
|
||||
if (errno == EINVAL || errno == ERANGE) {
|
||||
fprintf(stderr,
|
||||
"Line %d: Invalid cell value '%s'; %d assumed\n",
|
||||
yylloc.first_line, s, c);
|
||||
}
|
||||
|
||||
return c;
|
||||
}
|
||||
|
|
1
dtc.h
1
dtc.h
|
@ -118,7 +118,6 @@ struct data data_copy_mem(char *mem, int len);
|
|||
struct data data_copy_escape_string(char *s, int len);
|
||||
struct data data_copy_file(FILE *f, size_t len);
|
||||
|
||||
cell_t data_convert_cell(char *s, unsigned int base);
|
||||
struct data data_append_data(struct data d, void *p, int len);
|
||||
struct data data_merge(struct data d1, struct data d2);
|
||||
struct data data_append_cell(struct data d, cell_t word);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue