diff options
author | Nicolas Iooss <nicolas.iooss_linux@m4x.org> | 2017-03-04 14:26:43 +0100 |
---|---|---|
committer | David Gibson <david@gibson.dropbear.id.au> | 2017-03-06 14:19:26 +1100 |
commit | 9ffdf60bf463b7451e0fc8f9c8ec07c14dbd077c (patch) | |
tree | 09257e9844efa1e6ed06c478cbc11e0b0c83969d /flattree.c | |
parent | 881012e443860c7662a7c53ea38f398d623f820c (diff) | |
download | dtc-9ffdf60bf463b7451e0fc8f9c8ec07c14dbd077c.zip dtc-9ffdf60bf463b7451e0fc8f9c8ec07c14dbd077c.tar.gz dtc-9ffdf60bf463b7451e0fc8f9c8ec07c14dbd077c.tar.bz2 |
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>
Diffstat (limited to 'flattree.c')
-rw-r--r-- | flattree.c | 22 |
1 files changed, 7 insertions, 15 deletions
@@ -49,7 +49,7 @@ static struct version_info { struct emitter { void (*cell)(void *, cell_t); - void (*string)(void *, char *, int); + void (*string)(void *, const char *, int); void (*align)(void *, int); void (*data)(void *, struct data); 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); } -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; @@ -144,22 +144,14 @@ static void asm_emit_cell(void *e, cell_t val) (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; - char c = 0; - if (len != 0) { - /* XXX: ewww */ - c = str[len]; - str[len] = '\0'; - } - - fprintf(f, "\t.string\t\"%s\"\n", str); - - if (len != 0) { - str[len] = c; - } + if (len != 0) + fprintf(f, "\t.string\t\"%.*s\"\n", len, str); + else + fprintf(f, "\t.string\t\"%s\"\n", str); } static void asm_emit_align(void *e, int a) |