#include "emul_state.h"
#include <libgen.h>
+#include "sysemu/sysemu.h"
#include "emulator_common.h"
#if defined(CONFIG_LINUX)
BlockBackend *bb = blk_by_name("drive");
if (bb) {
BlockDriverState *bs = blk_bs(bb);
- set_variable("drive_image_file", bs->filename, true);
+ set_variable("drive_image_file", bs->filename, false);
return bs->filename;
}
}
/* http proxy */
-void set_emul_http_proxy_addr(char *addr)
+const char* get_http_proxy_addr(void)
{
- strncpy(_emul_info.http_proxy_addr, addr, sizeof(_emul_info.http_proxy_addr));
-}
-
-char* get_emul_http_proxy_addr(void)
-{
- if (strlen(_emul_info.http_proxy_addr) > 0) {
- return _emul_info.http_proxy_addr;
- } else {
- return NULL;
+ const char *http_proxy_addr = get_variable("http_proxy_addr");
+ if (http_proxy_addr) {
+ return http_proxy_addr;
}
-}
-void set_emul_http_proxy_port(char *port)
-{
- strncpy(_emul_info.http_proxy_port, port, sizeof(_emul_info.http_proxy_port));
-}
+ const char *kernel_cmdline = qemu_opt_get(qemu_get_machine_opts(), "append");
-char* get_emul_http_proxy_port(void)
-{
- if (strlen(_emul_info.http_proxy_port) > 0) {
- return _emul_info.http_proxy_port;
- } else {
- return NULL;
+ // kernel cmdline always contains proxy information
+ char *buf = g_strstr_len(kernel_cmdline, -1, HTTP_PROXY_PREFIX);
+ if (buf) {
+ char **token = g_strsplit_set(buf, "= ", 3);
+ if (token[0] && token[1] && g_strcmp0(token[1], "")) {
+ LOG_INFO("HTTP proxy address : %s\n", token[1]);
+ set_variable("http_proxy_addr", token[1], false);
+ g_strfreev(token);
+
+ http_proxy_addr = get_variable("http_proxy_addr");
+
+ return http_proxy_addr;
+ }
+ g_strfreev(token);
}
+
+ LOG_INFO("HTTP proxy address is not set.\n");
+
+ return NULL;
}
void set_emul_hds_attached(bool attached)
void set_emul_caps_lock_state(int state);
void set_emul_num_lock_state(int state);
void set_emul_tap_enable(bool enable);
-void set_emul_http_proxy_addr(char *addr);
-void set_emul_http_proxy_port(char *port);
void set_emul_hds_attached(bool attached);
void set_emul_hds_path(const char *path);
void set_emul_hds_guest_path(const char *path);
char* get_emul_guest_ip(void);
char* get_emul_host_ip(void);
bool is_emul_tap_enable(void);
-char* get_emul_http_proxy_addr(void);
-char* get_emul_http_proxy_port(void);
bool get_emul_hds_attached(void);
char* get_emul_hds_path(void);
char* get_emul_hds_guest_path(void);
char* get_emul_profile(void);
+
bool get_emuld_connection(void);
bool get_sdb_connection(void);
const char* get_drive_image_file(void);
+const char* get_http_proxy_addr(void);
/* multi-touch */
MultiTouchState *get_emul_multi_touch_state(void);
fflush(stdout);
}
-static void http_proxy_setup(gchar * const kernel_cmdline)
-{
-#ifdef SUPPORT_LEGACY_ARGS
- char *buf = strstr(kernel_cmdline, HTTP_PROXY_PREFIX);
-#else
- char *buf = get_variable("network_proxy");
-#endif
- gchar** proxy;
- if (buf) {
- char http_proxy[MAXLEN] = {0,};
- int len = strlen(HTTP_PROXY_PREFIX);
- int i, j;
- int max_len = strlen(buf);
- for(i = len, j = 0; i < max_len; i++) {
- if (buf[i] == ' ')
- break;
- http_proxy[j++] = buf[i];
- }
-
- http_proxy[j] = '\0';
- proxy = g_strsplit(http_proxy, ":", -1);
- if (g_strv_length(proxy) > 1) {
- if (proxy[0] != NULL && proxy[1] != NULL) {
- LOG_INFO("http_proxy information= addr: %s, port: %s\n", proxy[0], proxy[1]);
- set_emul_http_proxy_addr(proxy[0]);
- set_emul_http_proxy_port(proxy[1]);
- }
- } else {
- LOG_INFO("http proxy is NULL\n");
- }
-
- if (proxy != NULL) {
- g_strfreev(proxy);
- }
- }
-}
-
#define PROXY_BUFFER_LEN 128
static void prepare_basic_features(gchar * const kernel_cmdline)
{
" vm_resolution=%dx%d", get_emul_vm_base_port(),
get_emul_resolution_width(), get_emul_resolution_height());
set_emul_host_ip(kernel_cmdline);
- http_proxy_setup(kernel_cmdline);
g_strlcat(kernel_cmdline, tmp_str, LEN_MARU_KERNEL_CMDLINE);
g_free(tmp_str);
}
set_emul_vm_data_path(tizen_target_path);
set_variable("vm_name", g_path_get_basename(tizen_target_path), true);
-
set_variable("drive_image_file", path, true);
free(path);
gchar const* proxy_addr;
int proxy_addr_len = 0;
- if (get_emul_http_proxy_addr() == NULL) {
+ const char *http_proxy = get_http_proxy_addr();
+ if (http_proxy == NULL) {
proxy_addr = g_strdup_printf("%s= %s=",
OPT_PROXY_ADDR, OPT_PROXY_PORT);
proxy_addr_len = (int)strlen(proxy_addr);
} else {
- proxy_addr = g_strdup_printf("%s=%s %s=%s",
- OPT_PROXY_ADDR, get_emul_http_proxy_addr(),
- OPT_PROXY_PORT, get_emul_http_proxy_port());
- proxy_addr_len = (int)strlen(proxy_addr);
+ char **proxy = g_strsplit(http_proxy, ":", 2);
+ if (proxy[0] && proxy[1]) {
+ proxy_addr = g_strdup_printf("%s=%s %s=%s",
+ OPT_PROXY_ADDR, proxy[0],
+ OPT_PROXY_PORT, proxy[1]);
+ proxy_addr_len = (int)strlen(proxy_addr);
+ }
+ g_strfreev(proxy);
}
gchar const* tap_enabled = g_strdup_printf("%s=%s", OPT_USE_TAP, is_emul_tap_enable() ? "true" : "false");
int tap_opt_len = (int)strlen(tap_enabled);
#endif
QString httpProxyAddr;
QString httpProxyPort;
- if (get_emul_http_proxy_addr()) {
- httpProxyAddr = "-Dhttp.proxyHost=" + QString(get_emul_http_proxy_addr());
- httpProxyPort = "-Dhttp.proxyPort=" + QString(get_emul_http_proxy_port());
+ const char *http_proxy_addr = get_http_proxy_addr();
+ if (http_proxy_addr) {
+ char **proxy = g_strsplit(http_proxy_addr, ":", 2);
+ if (proxy[0] && proxy[1]) {
+ httpProxyAddr = "-Dhttp.proxyHost=" + QString(proxy[0]);
+ httpProxyPort = "-Dhttp.proxyPort=" + QString(proxy[1]);
+ }
+ g_strfreev(proxy);
}
if (httpProxyAddr != NULL && httpProxyPort != NULL) {