X-Git-Url: https://git.proxmox.com/?a=blobdiff_plain;f=qstring.c;h=b7e12e40158200362b196aa566c3024d89360472;hb=64254eba53198fd14b52128b3f0026000d2dc4ab;hp=e422bd952db6af348d7eac2e1fd72baabfb5c038;hpb=6fe9565c5b6f2872f115223df3d8d61eb78bff8c;p=qemu.git diff --git a/qstring.c b/qstring.c index e422bd952..b7e12e401 100644 --- a/qstring.c +++ b/qstring.c @@ -1,14 +1,15 @@ /* - * QString data type. + * QString Module * * Copyright (C) 2009 Red Hat Inc. * * Authors: * Luiz Capitulino * - * This work is licensed under the terms of the GNU GPL, version 2. See - * the COPYING file in the top-level directory. + * This work is licensed under the terms of the GNU LGPL, version 2.1 or later. + * See the COPYING.LIB file in the top-level directory. */ + #include "qobject.h" #include "qstring.h" #include "qemu-common.h" @@ -31,21 +32,21 @@ QString *qstring_new(void) } /** - * qstring_from_str(): Create a new QString from a regular C string + * qstring_from_substr(): Create a new QString from a C string substring * - * Return strong reference. + * Return string reference */ -QString *qstring_from_str(const char *str) +QString *qstring_from_substr(const char *str, int start, int end) { QString *qstring; - qstring = qemu_malloc(sizeof(*qstring)); + qstring = g_malloc(sizeof(*qstring)); - qstring->length = strlen(str); + qstring->length = end - start + 1; qstring->capacity = qstring->length; - qstring->string = qemu_malloc(qstring->capacity + 1); - memcpy(qstring->string, str, qstring->length); + qstring->string = g_malloc(qstring->capacity + 1); + memcpy(qstring->string, str + start, qstring->length); qstring->string[qstring->length] = 0; QOBJECT_INIT(qstring, &qstring_type); @@ -53,13 +54,23 @@ QString *qstring_from_str(const char *str) return qstring; } +/** + * qstring_from_str(): Create a new QString from a regular C string + * + * Return strong reference. + */ +QString *qstring_from_str(const char *str) +{ + return qstring_from_substr(str, 0, strlen(str) - 1); +} + static void capacity_increase(QString *qstring, size_t len) { if (qstring->capacity < (qstring->length + len)) { qstring->capacity += len; qstring->capacity *= 2; /* use exponential growth */ - qstring->string = qemu_realloc(qstring->string, qstring->capacity + 1); + qstring->string = g_realloc(qstring->string, qstring->capacity + 1); } } @@ -75,6 +86,14 @@ void qstring_append(QString *qstring, const char *str) qstring->string[qstring->length] = 0; } +void qstring_append_int(QString *qstring, int64_t value) +{ + char num[32]; + + snprintf(num, sizeof(num), "%" PRId64, value); + qstring_append(qstring, num); +} + /** * qstring_append_chr(): Append a C char to a QString */ @@ -117,6 +136,6 @@ static void qstring_destroy_obj(QObject *obj) assert(obj != NULL); qs = qobject_to_qstring(obj); - qemu_free(qs->string); - qemu_free(qs); + g_free(qs->string); + g_free(qs); }