static char* get_module_filename(Context* ctx) { size_t buflen = ctx->json_filename_noext.length + 20; char* str = wasm_alloc(ctx->allocator, buflen, WASM_DEFAULT_ALIGN); size_t length = wasm_snprintf( str, buflen, PRIstringslice ".%" PRIzd ".wasm", WASM_PRINTF_STRING_SLICE_ARG(ctx->json_filename_noext), ctx->num_modules); convert_backslash_to_slash(str, length); return str; }
static WasmStringSlice create_assert_func_name(WasmAllocator* allocator, const char* format, int format_index) { WasmStringSlice name; char buffer[256]; int buffer_len = wasm_snprintf(buffer, 256, format, format_index); name.start = wasm_strndup(allocator, buffer, buffer_len); name.length = buffer_len; return name; }
void wasm_print_help(WasmOptionParser* parser, const char* program_name) { int i; /* TODO(binji): do something more generic for filename here */ printf("usage: %s [options] filename\n\n", program_name); printf("%s\n", parser->description); printf("options:\n"); const int extra_space = 8; int longest_name_length = 0; for (i = 0; i < parser->num_options; ++i) { WasmOption* option = &parser->options[i]; int length; if (option->long_name) { if (option->metavar) { length = wasm_snprintf(NULL, 0, "%s=%s", option->long_name, option->metavar); } else { length = wasm_snprintf(NULL, 0, "%s", option->long_name); } } else { continue; } if (length > longest_name_length) longest_name_length = length; } size_t buffer_size = longest_name_length + 1; char* buffer = alloca(buffer_size); for (i = 0; i < parser->num_options; ++i) { WasmOption* option = &parser->options[i]; if (!option->short_name && !option->long_name) continue; if (option->short_name) printf(" -%c, ", option->short_name); else printf(" "); char format[20]; if (option->long_name) { wasm_snprintf(format, sizeof(format), "--%%-%ds", longest_name_length + extra_space); if (option->metavar) { wasm_snprintf(buffer, buffer_size, "%s=%s", option->long_name, option->metavar); printf(format, buffer); } else { printf(format, option->long_name); } } else { /* +2 for the extra "--" above */ wasm_snprintf(format, sizeof(format), "%%-%ds", longest_name_length + extra_space + 2); printf(format, ""); } if (option->help) printf("%s", option->help); printf("\n"); } }