aboutsummaryrefslogtreecommitdiff
path: root/flattree.c
diff options
context:
space:
mode:
authorNicolas Iooss <nicolas.iooss_linux@m4x.org>2017-03-04 14:26:43 +0100
committerDavid Gibson <david@gibson.dropbear.id.au>2017-03-06 14:19:26 +1100
commit9ffdf60bf463b7451e0fc8f9c8ec07c14dbd077c (patch)
tree09257e9844efa1e6ed06c478cbc11e0b0c83969d /flattree.c
parent881012e443860c7662a7c53ea38f398d623f820c (diff)
downloaddtc-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.c22
1 files changed, 7 insertions, 15 deletions
diff --git a/flattree.c b/flattree.c
index 5de5fee..fcf7154 100644
--- a/flattree.c
+++ b/flattree.c
@@ -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)