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 --- |