Browse Source

dtc: Simplify asm_emit_string() implementation

Using %.*s format helps making asm_emit_string() not modify its "str"
parameter.

While at it, constify the "str" parameter of bin_emit_string() and
asm_emit_string(), as these function no longer modify it.

Signed-off-by: Nicolas Iooss <nicolas.iooss_linux@m4x.org>
Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
main
Nicolas Iooss 8 years ago committed by David Gibson
parent
commit
9ffdf60bf4
  1. 22
      flattree.c

22
flattree.c

@ -49,7 +49,7 @@ static struct version_info {


struct emitter { struct emitter {
void (*cell)(void *, cell_t); void (*cell)(void *, cell_t);
void (*string)(void *, char *, int); void (*string)(void *, const char *, int);
void (*align)(void *, int); void (*align)(void *, int);
void (*data)(void *, struct data); void (*data)(void *, struct data);
void (*beginnode)(void *, struct label *labels); void (*beginnode)(void *, struct label *labels);
@ -64,7 +64,7 @@ static void bin_emit_cell(void *e, cell_t val)
*dtbuf = data_append_cell(*dtbuf, val); *dtbuf = data_append_cell(*dtbuf, val);
} }


static void bin_emit_string(void *e, char *str, int len) static void bin_emit_string(void *e, const char *str, int len)
{ {
struct data *dtbuf = e; struct data *dtbuf = e;


@ -144,22 +144,14 @@ static void asm_emit_cell(void *e, cell_t val)
(val >> 8) & 0xff, val & 0xff); (val >> 8) & 0xff, val & 0xff);
} }


static void asm_emit_string(void *e, char *str, int len) static void asm_emit_string(void *e, const char *str, int len)
{ {
FILE *f = e; FILE *f = e;
char c = 0;


if (len != 0) { if (len != 0)
/* XXX: ewww */ fprintf(f, "\t.string\t\"%.*s\"\n", len, str);
c = str[len]; else
str[len] = '\0'; fprintf(f, "\t.string\t\"%s\"\n", str);
}

fprintf(f, "\t.string\t\"%s\"\n", str);

if (len != 0) {
str[len] = c;
}
} }


static void asm_emit_align(void *e, int a) static void asm_emit_align(void *e, int a)

Loading…
Cancel
Save