Lines Matching +full:en +full:- +full:us

2  * QEMU Guest Agent common/cross-platform command implementations
10 * See the COPYING file in the top-level directory.
15 #include "guest-agent-core.h"
16 #include "qga-qapi-commands.h"
20 #include "commands-common.h"
22 /* Maximum captured guest-exec out_data/err_data - 16MB */
24 /* Allocation and I/O buffer for reading guest-exec out_data/err_data - 4KB */
27 * Maximum file size to read - 48MB
59 slog("guest-ping called"); in qmp_guest_ping()
68 cmd_info->name = g_strdup(qmp_command_name(cmd)); in qmp_command_info()
69 cmd_info->enabled = qmp_command_is_enabled(cmd); in qmp_command_info()
70 cmd_info->success_response = qmp_has_success_response(cmd); in qmp_command_info()
72 QAPI_LIST_PREPEND(info->supported_commands, cmd_info); in qmp_command_info()
79 info->version = g_strdup(QEMU_VERSION); in qmp_guest_info()
127 gei->pid = pid; in guest_exec_info_add()
128 gei->pid_numeric = gpid_to_int64(pid); in guest_exec_info_add()
139 if (gei->pid_numeric == pid_numeric) { in guest_exec_info_find()
152 slog("guest-exec-status called, pid: %u", (uint32_t)pid); in qmp_guest_exec_status()
162 bool finished = gei->finished; in qmp_guest_exec_status()
166 if (gei->has_output) { in qmp_guest_exec_status()
167 finished &= gei->out.closed && gei->err.closed; in qmp_guest_exec_status()
170 ges->exited = finished; in qmp_guest_exec_status()
179 * well-known codes, e.g. C0000005 ACCESS_DENIED - analog of SIGSEGV in qmp_guest_exec_status()
181 * https://msdn.microsoft.com/en-us/library/windows/desktop/ms683189(v=vs.85).aspx in qmp_guest_exec_status()
182 * https://msdn.microsoft.com/en-us/library/aa260331(v=vs.60).aspx in qmp_guest_exec_status()
190 if ((uint32_t)gei->status < 0xC0000000U) { in qmp_guest_exec_status()
191 ges->has_exitcode = true; in qmp_guest_exec_status()
192 ges->exitcode = gei->status; in qmp_guest_exec_status()
194 ges->has_signal = true; in qmp_guest_exec_status()
195 ges->signal = gei->status; in qmp_guest_exec_status()
198 if (WIFEXITED(gei->status)) { in qmp_guest_exec_status()
199 ges->has_exitcode = true; in qmp_guest_exec_status()
200 ges->exitcode = WEXITSTATUS(gei->status); in qmp_guest_exec_status()
201 } else if (WIFSIGNALED(gei->status)) { in qmp_guest_exec_status()
202 ges->has_signal = true; in qmp_guest_exec_status()
203 ges->signal = WTERMSIG(gei->status); in qmp_guest_exec_status()
206 if (gei->out.length > 0) { in qmp_guest_exec_status()
207 ges->out_data = g_base64_encode(gei->out.data, gei->out.length); in qmp_guest_exec_status()
208 ges->has_out_truncated = gei->out.truncated; in qmp_guest_exec_status()
210 g_free(gei->out.data); in qmp_guest_exec_status()
212 if (gei->err.length > 0) { in qmp_guest_exec_status()
213 ges->err_data = g_base64_encode(gei->err.data, gei->err.length); in qmp_guest_exec_status()
214 ges->has_err_truncated = gei->err.truncated; in qmp_guest_exec_status()
216 g_free(gei->err.data); in qmp_guest_exec_status()
234 for (it = entry; it != NULL; it = it->next) { in guest_exec_get_args()
236 str_size += 1 + strlen(it->value); in guest_exec_get_args()
242 for (it = entry; it != NULL; it = it->next) { in guest_exec_get_args()
243 args[i++] = it->value; in guest_exec_get_args()
244 pstrcat(str, str_size, it->value); in guest_exec_get_args()
245 if (it->next) { in guest_exec_get_args()
252 slog("guest-exec called: \"%s\"", str); in guest_exec_get_args()
266 gei->status = status; in guest_exec_child_watch()
267 gei->finished = true; in guest_exec_child_watch()
311 if (p->size == p->length) { in guest_exec_input_watch()
315 status = g_io_channel_write_chars(ch, (gchar *)p->data + p->length, in guest_exec_input_watch()
316 p->size - p->length, &bytes_written, &gerr); in guest_exec_input_watch()
320 p->length += bytes_written; in guest_exec_input_watch()
330 gerr->message); in guest_exec_input_watch()
337 p->closed = true; in guest_exec_input_watch()
338 g_free(p->data); in guest_exec_input_watch()
354 if (p->size == p->length) { in guest_exec_output_watch()
356 if (!p->truncated && p->size < GUEST_EXEC_MAX_OUTPUT) { in guest_exec_output_watch()
357 t = g_try_realloc(p->data, p->size + GUEST_EXEC_IO_SIZE); in guest_exec_output_watch()
363 p->truncated = true; in guest_exec_output_watch()
372 p->size += GUEST_EXEC_IO_SIZE; in guest_exec_output_watch()
373 p->data = t; in guest_exec_output_watch()
378 gstatus = g_io_channel_read_chars(ch, (gchar *)p->data + p->length, in guest_exec_output_watch()
379 p->size - p->length, &bytes_read, NULL); in guest_exec_output_watch()
384 p->length += bytes_read; in guest_exec_output_watch()
391 p->closed = true; in guest_exec_output_watch()
400 else if (capture_output->type == QTYPE_QBOOL) in ga_parse_capture_output()
401 return capture_output->u.flag ? GUEST_EXEC_CAPTURE_OUTPUT_MODE_SEPARATED in ga_parse_capture_output()
404 return capture_output->u.mode; in ga_parse_capture_output()
434 input = qbase64_decode(input_data, -1, &ninput, errp); in qmp_guest_exec()
477 error_setg(errp, "%s", gerr->message); in qmp_guest_exec()
483 ge->pid = gpid_to_int64(pid); in qmp_guest_exec()
486 gei->has_output = has_output; in qmp_guest_exec()
490 gei->in.data = g_steal_pointer(&input); in qmp_guest_exec()
491 gei->in.size = ninput; in qmp_guest_exec()
501 g_io_add_watch(in_ch, G_IO_OUT, guest_exec_input_watch, &gei->in); in qmp_guest_exec()
519 guest_exec_output_watch, &gei->out); in qmp_guest_exec()
521 guest_exec_output_watch, &gei->err); in qmp_guest_exec()
540 if (whence->type == QTYPE_QSTRING) { in ga_parse_whence()
541 int value = whence->u.name; in ga_parse_whence()
542 whence->type = QTYPE_QNUM; in ga_parse_whence()
543 whence->u.value = value; in ga_parse_whence()
545 switch (whence->u.value) { in ga_parse_whence()
553 error_setg(errp, "invalid whence code %"PRId64, whence->u.value); in ga_parse_whence()
554 return -1; in ga_parse_whence()
573 result->host_name = g_steal_pointer(&hostname); in qmp_guest_get_host_name()
594 info->offset = g_time_zone_get_offset(tz, intv); in qmp_guest_get_timezone()
597 info->zone = g_strdup(name); in qmp_guest_get_timezone()
627 slog("guest-file-write failed, handle: %" PRId64, handle); in qmp_guest_file_read()