char.c (539cb0876b0a84731267d6a21cd3448f87c9ae62) char.c (8de69efab1009d374c7f01d2536797ea009ee796)
1/*
2 * QEMU System Emulator
3 *
4 * Copyright (c) 2003-2008 Fabrice Bellard
5 *
6 * Permission is hereby granted, free of charge, to any person obtaining a copy
7 * of this software and associated documentation files (the "Software"), to deal
8 * in the Software without restriction, including without limitation the rights

--- 226 unchanged lines hidden (view full) ---

235
236static void qemu_char_open(Chardev *chr, ChardevBackend *backend,
237 bool *be_opened, Error **errp)
238{
239 ChardevClass *cc = CHARDEV_GET_CLASS(chr);
240 /* Any ChardevCommon member would work */
241 ChardevCommon *common = backend ? backend->u.null.data : NULL;
242
1/*
2 * QEMU System Emulator
3 *
4 * Copyright (c) 2003-2008 Fabrice Bellard
5 *
6 * Permission is hereby granted, free of charge, to any person obtaining a copy
7 * of this software and associated documentation files (the "Software"), to deal
8 * in the Software without restriction, including without limitation the rights

--- 226 unchanged lines hidden (view full) ---

235
236static void qemu_char_open(Chardev *chr, ChardevBackend *backend,
237 bool *be_opened, Error **errp)
238{
239 ChardevClass *cc = CHARDEV_GET_CLASS(chr);
240 /* Any ChardevCommon member would work */
241 ChardevCommon *common = backend ? backend->u.null.data : NULL;
242
243 if (common && common->has_logfile) {
243 if (common && common->logfile) {
244 int flags = O_WRONLY;
245 if (common->has_logappend &&
246 common->logappend) {
247 flags |= O_APPEND;
248 } else {
249 flags |= O_TRUNC;
250 }
251 chr->logfd = qemu_create(common->logfile, flags, 0666, errp);

--- 239 unchanged lines hidden (view full) ---

491 qemu_opts_del(opts);
492 return NULL;
493}
494
495void qemu_chr_parse_common(QemuOpts *opts, ChardevCommon *backend)
496{
497 const char *logfile = qemu_opt_get(opts, "logfile");
498
244 int flags = O_WRONLY;
245 if (common->has_logappend &&
246 common->logappend) {
247 flags |= O_APPEND;
248 } else {
249 flags |= O_TRUNC;
250 }
251 chr->logfd = qemu_create(common->logfile, flags, 0666, errp);

--- 239 unchanged lines hidden (view full) ---

491 qemu_opts_del(opts);
492 return NULL;
493}
494
495void qemu_chr_parse_common(QemuOpts *opts, ChardevCommon *backend)
496{
497 const char *logfile = qemu_opt_get(opts, "logfile");
498
499 backend->has_logfile = logfile != NULL;
500 backend->logfile = g_strdup(logfile);
499 backend->logfile = g_strdup(logfile);
501
502 backend->has_logappend = true;
503 backend->logappend = qemu_opt_get_bool(opts, "logappend", false);
504}
505
506static const ChardevClass *char_get_class(const char *driver, Error **errp)
507{
508 ObjectClass *oc;
509 const ChardevClass *cc;

--- 542 unchanged lines hidden (view full) ---

1052 if (!object_property_try_add_child(get_chardevs_root(), id, OBJECT(chr),
1053 errp)) {
1054 goto err;
1055 }
1056
1057 ret = g_new0(ChardevReturn, 1);
1058 if (CHARDEV_IS_PTY(chr)) {
1059 ret->pty = g_strdup(chr->filename + 4);
500 backend->has_logappend = true;
501 backend->logappend = qemu_opt_get_bool(opts, "logappend", false);
502}
503
504static const ChardevClass *char_get_class(const char *driver, Error **errp)
505{
506 ObjectClass *oc;
507 const ChardevClass *cc;

--- 542 unchanged lines hidden (view full) ---

1050 if (!object_property_try_add_child(get_chardevs_root(), id, OBJECT(chr),
1051 errp)) {
1052 goto err;
1053 }
1054
1055 ret = g_new0(ChardevReturn, 1);
1056 if (CHARDEV_IS_PTY(chr)) {
1057 ret->pty = g_strdup(chr->filename + 4);
1060 ret->has_pty = true;
1061 }
1062
1063 return ret;
1064
1065err:
1066 error_prepend(errp, "Failed to add chardev '%s': ", id);
1067 return NULL;
1068}

--- 86 unchanged lines hidden (view full) ---

1155 object_unparent(OBJECT(chr));
1156 object_property_add_child(get_chardevs_root(), chr_new->label,
1157 OBJECT(chr_new));
1158 object_unref(OBJECT(chr_new));
1159
1160 ret = g_new0(ChardevReturn, 1);
1161 if (CHARDEV_IS_PTY(chr_new)) {
1162 ret->pty = g_strdup(chr_new->filename + 4);
1058 }
1059
1060 return ret;
1061
1062err:
1063 error_prepend(errp, "Failed to add chardev '%s': ", id);
1064 return NULL;
1065}

--- 86 unchanged lines hidden (view full) ---

1152 object_unparent(OBJECT(chr));
1153 object_property_add_child(get_chardevs_root(), chr_new->label,
1154 OBJECT(chr_new));
1155 object_unref(OBJECT(chr_new));
1156
1157 ret = g_new0(ChardevReturn, 1);
1158 if (CHARDEV_IS_PTY(chr_new)) {
1159 ret->pty = g_strdup(chr_new->filename + 4);
1163 ret->has_pty = true;
1164 }
1165
1166 return ret;
1167}
1168
1169void qmp_chardev_remove(const char *id, Error **errp)
1170{
1171 Chardev *chr;

--- 59 unchanged lines hidden ---
1160 }
1161
1162 return ret;
1163}
1164
1165void qmp_chardev_remove(const char *id, Error **errp)
1166{
1167 Chardev *chr;

--- 59 unchanged lines hidden ---