8
8
#include "attr.h"
9
9
#include "xdiff-interface.h"
10
10
#include "run-command.h"
11
- #include "interpolate.h"
12
11
#include "ll-merge.h"
13
12
14
13
struct ll_merge_driver ;
@@ -169,11 +168,12 @@ static int ll_ext_merge(const struct ll_merge_driver *fn,
169
168
int virtual_ancestor )
170
169
{
171
170
char temp [3 ][50 ];
172
- char cmdbuf [2048 ];
173
- struct interp table [] = {
174
- { "%O" },
175
- { "%A" },
176
- { "%B" },
171
+ struct strbuf cmd = STRBUF_INIT ;
172
+ struct strbuf_expand_dict_entry dict [] = {
173
+ { "O" , temp [0 ] },
174
+ { "A" , temp [1 ] },
175
+ { "B" , temp [2 ] },
176
+ { NULL }
177
177
};
178
178
struct child_process child ;
179
179
const char * args [20 ];
@@ -189,17 +189,13 @@ static int ll_ext_merge(const struct ll_merge_driver *fn,
189
189
create_temp (src1 , temp [1 ]);
190
190
create_temp (src2 , temp [2 ]);
191
191
192
- interp_set_entry (table , 0 , temp [0 ]);
193
- interp_set_entry (table , 1 , temp [1 ]);
194
- interp_set_entry (table , 2 , temp [2 ]);
195
-
196
- interpolate (cmdbuf , sizeof (cmdbuf ), fn -> cmdline , table , 3 );
192
+ strbuf_expand (& cmd , fn -> cmdline , strbuf_expand_dict_cb , & dict );
197
193
198
194
memset (& child , 0 , sizeof (child ));
199
195
child .argv = args ;
200
196
args [0 ] = "sh" ;
201
197
args [1 ] = "-c" ;
202
- args [2 ] = cmdbuf ;
198
+ args [2 ] = cmd . buf ;
203
199
args [3 ] = NULL ;
204
200
205
201
status = run_command (& child );
@@ -224,6 +220,7 @@ static int ll_ext_merge(const struct ll_merge_driver *fn,
224
220
bad :
225
221
for (i = 0 ; i < 3 ; i ++ )
226
222
unlink (temp [i ]);
223
+ strbuf_release (& cmd );
227
224
return status ;
228
225
}
229
226
0 commit comments