MCPcopy Create free account
hub / github.com/byhook/ffmpeg4android / prepare_app_arguments

Function prepare_app_arguments

ffmpeg-single-cmd/src/main/cpp/cmdutils.c:247–287  ·  view source on GitHub ↗

* Prepare command line arguments for executable. * For Windows - perform wide-char to UTF-8 conversion. * Input arguments should be main() function arguments. * @param argc_ptr Arguments number (including executable) * @param argv_ptr Arguments list. */

Source from the content-addressed store, hash-verified

245 * @param argv_ptr Arguments list.
246 */
247static void prepare_app_arguments(int *argc_ptr, char ***argv_ptr)
248{
249 char *argstr_flat;
250 wchar_t **argv_w;
251 int i, buffsize = 0, offset = 0;
252
253 if (win32_argv_utf8) {
254 *argc_ptr = win32_argc;
255 *argv_ptr = win32_argv_utf8;
256 return;
257 }
258
259 win32_argc = 0;
260 argv_w = CommandLineToArgvW(GetCommandLineW(), &win32_argc);
261 if (win32_argc <= 0 || !argv_w)
262 return;
263
264 /* determine the UTF-8 buffer size (including NULL-termination symbols) */
265 for (i = 0; i < win32_argc; i++)
266 buffsize += WideCharToMultiByte(CP_UTF8, 0, argv_w[i], -1,
267 NULL, 0, NULL, NULL);
268
269 win32_argv_utf8 = av_mallocz(sizeof(char *) * (win32_argc + 1) + buffsize);
270 argstr_flat = (char *)win32_argv_utf8 + sizeof(char *) * (win32_argc + 1);
271 if (!win32_argv_utf8) {
272 LocalFree(argv_w);
273 return;
274 }
275
276 for (i = 0; i < win32_argc; i++) {
277 win32_argv_utf8[i] = &argstr_flat[offset];
278 offset += WideCharToMultiByte(CP_UTF8, 0, argv_w[i], -1,
279 &argstr_flat[offset],
280 buffsize - offset, NULL, NULL);
281 }
282 win32_argv_utf8[i] = NULL;
283 LocalFree(argv_w);
284
285 *argc_ptr = win32_argc;
286 *argv_ptr = win32_argv_utf8;
287}
288#else
289static inline void prepare_app_arguments(int *argc_ptr, char ***argv_ptr)
290{

Callers 2

parse_optionsFunction · 0.85
split_commandlineFunction · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected