~ubuntu-branches/ubuntu/saucy/qemu/saucy-proposed

« back to all changes in this revision

Viewing changes to qobject/qjson.c

  • Committer: Package Import Robot
  • Author(s): Serge Hallyn
  • Date: 2013-05-28 08:18:30 UTC
  • mfrom: (1.8.2) (10.1.37 sid)
  • Revision ID: package-import@ubuntu.com-20130528081830-87xl2z9fq516a814
Tags: 1.5.0+dfsg-2ubuntu1
* Merge 1.5.0+dfs-2 from debian unstable.  Remaining changes:
  - debian/control
    * update maintainer
    * remove libiscsi, usb-redir, vde, vnc-jpeg, and libssh2-1-dev
      from build-deps
    * enable rbd
    * add qemu-system and qemu-common B/R to qemu-keymaps
    * add D:udev, R:qemu, R:qemu-common and B:qemu-common to
      qemu-system-common
    * qemu-system-arm, qemu-system-ppc, qemu-system-sparc:
      - add qemu-kvm to Provides
      - add qemu-common, qemu-kvm, kvm to B/R
      - remove openbios-sparc from qemu-system-sparc D
    * qemu-system-x86:
      - add qemu-common to Breaks/Replaces.
      - add cpu-checker to Recommends.
    * qemu-user: add B/R:qemu-kvm
    * qemu-kvm:
      - add armhf armel powerpc sparc to Architecture
      - C/R/P: qemu-kvm-spice
    * add qemu-common package
    * drop qemu-slof which is not packaged in ubuntu
  - add qemu-system-common.links for tap ifup/down scripts and OVMF link.
  - qemu-system-x86.links:
    * remove pxe rom links which are in kvm-ipxe
    * add symlink for kvm.1 manpage
  - debian/rules
    * add kvm-spice symlink to qemu-kvm
    * call dh_installmodules for qemu-system-x86
    * update dh_installinit to install upstart script
    * run dh_installman (Closes: #709241) (cherrypicked from 1.5.0+dfsg-2)
  - Add qemu-utils.links for kvm-* symlinks.
  - Add qemu-system-x86.qemu-kvm.upstart and .default
  - Add qemu-system-x86.modprobe to set nesting=1
  - Add qemu-system-common.preinst to add kvm group
  - qemu-system-common.postinst: remove bad group acl if there, then have
    udev relabel /dev/kvm.
  - Dropped patches:
    * 0001-fix-wrong-output-with-info-chardev-for-tcp-socket.patch
  - Kept patches:
    * expose_vms_qemu64cpu.patch - updated
    * gridcentric patch - updated
    * linaro arm patches from qemu-linaro rebasing branch

Show diffs side-by-side

added added

removed removed

Lines of Context:
136
136
    case QTYPE_QSTRING: {
137
137
        QString *val = qobject_to_qstring(obj);
138
138
        const char *ptr;
 
139
        int cp;
 
140
        char buf[16];
 
141
        char *end;
139
142
 
140
143
        ptr = qstring_get_str(val);
141
144
        qstring_append(str, "\"");
142
 
        while (*ptr) {
143
 
            if ((ptr[0] & 0xE0) == 0xE0 &&
144
 
                (ptr[1] & 0x80) && (ptr[2] & 0x80)) {
145
 
                uint16_t wchar;
146
 
                char escape[7];
147
 
 
148
 
                wchar  = (ptr[0] & 0x0F) << 12;
149
 
                wchar |= (ptr[1] & 0x3F) << 6;
150
 
                wchar |= (ptr[2] & 0x3F);
151
 
                ptr += 2;
152
 
 
153
 
                snprintf(escape, sizeof(escape), "\\u%04X", wchar);
154
 
                qstring_append(str, escape);
155
 
            } else if ((ptr[0] & 0xE0) == 0xC0 && (ptr[1] & 0x80)) {
156
 
                uint16_t wchar;
157
 
                char escape[7];
158
 
 
159
 
                wchar  = (ptr[0] & 0x1F) << 6;
160
 
                wchar |= (ptr[1] & 0x3F);
161
 
                ptr++;
162
 
 
163
 
                snprintf(escape, sizeof(escape), "\\u%04X", wchar);
164
 
                qstring_append(str, escape);
165
 
            } else switch (ptr[0]) {
166
 
                case '\"':
167
 
                    qstring_append(str, "\\\"");
168
 
                    break;
169
 
                case '\\':
170
 
                    qstring_append(str, "\\\\");
171
 
                    break;
172
 
                case '\b':
173
 
                    qstring_append(str, "\\b");
174
 
                    break;
175
 
                case '\f':
176
 
                    qstring_append(str, "\\f");
177
 
                    break;
178
 
                case '\n':
179
 
                    qstring_append(str, "\\n");
180
 
                    break;
181
 
                case '\r':
182
 
                    qstring_append(str, "\\r");
183
 
                    break;
184
 
                case '\t':
185
 
                    qstring_append(str, "\\t");
186
 
                    break;
187
 
                default: {
188
 
                    if (ptr[0] <= 0x1F) {
189
 
                        char escape[7];
190
 
                        snprintf(escape, sizeof(escape), "\\u%04X", ptr[0]);
191
 
                        qstring_append(str, escape);
192
 
                    } else {
193
 
                        char buf[2] = { ptr[0], 0 };
194
 
                        qstring_append(str, buf);
195
 
                    }
196
 
                    break;
197
 
                }
198
 
                }
199
 
            ptr++;
200
 
        }
 
145
 
 
146
        for (; *ptr; ptr = end) {
 
147
            cp = mod_utf8_codepoint(ptr, 6, &end);
 
148
            switch (cp) {
 
149
            case '\"':
 
150
                qstring_append(str, "\\\"");
 
151
                break;
 
152
            case '\\':
 
153
                qstring_append(str, "\\\\");
 
154
                break;
 
155
            case '\b':
 
156
                qstring_append(str, "\\b");
 
157
                break;
 
158
            case '\f':
 
159
                qstring_append(str, "\\f");
 
160
                break;
 
161
            case '\n':
 
162
                qstring_append(str, "\\n");
 
163
                break;
 
164
            case '\r':
 
165
                qstring_append(str, "\\r");
 
166
                break;
 
167
            case '\t':
 
168
                qstring_append(str, "\\t");
 
169
                break;
 
170
            default:
 
171
                if (cp < 0) {
 
172
                    cp = 0xFFFD; /* replacement character */
 
173
                }
 
174
                if (cp > 0xFFFF) {
 
175
                    /* beyond BMP; need a surrogate pair */
 
176
                    snprintf(buf, sizeof(buf), "\\u%04X\\u%04X",
 
177
                             0xD800 + ((cp - 0x10000) >> 10),
 
178
                             0xDC00 + ((cp - 0x10000) & 0x3FF));
 
179
                } else if (cp < 0x20 || cp >= 0x7F) {
 
180
                    snprintf(buf, sizeof(buf), "\\u%04X", cp);
 
181
                } else {
 
182
                    buf[0] = cp;
 
183
                    buf[1] = 0;
 
184
                }
 
185
                qstring_append(str, buf);
 
186
            }
 
187
        };
 
188
 
201
189
        qstring_append(str, "\"");
202
190
        break;
203
191
    }