View | Details | Raw Unified | Return to bug 725993
Collapse All | Expand All

(-)a/sys-utils/dmesg.c (-9 / +8 lines)
Lines 429-438 static void safe_fwrite(const char *buf, size_t size, FILE *out) Link Here
429
	for (i = 0; i < size; i++) {
429
	for (i = 0; i < size; i++) {
430
		const char *p = buf + i;
430
		const char *p = buf + i;
431
		int rc, hex = 0;
431
		int rc, hex = 0;
432
        size_t len = 1;
432
433
433
#ifdef HAVE_WIDECHAR
434
#ifdef HAVE_WIDECHAR
434
		wchar_t wc;
435
		wchar_t wc;
435
		size_t len = mbrtowc(&wc, p, size - i, &s);
436
		len = mbrtowc(&wc, p, size - i, &s);
436
437
437
		if (len == 0)				/* L'\0' */
438
		if (len == 0)				/* L'\0' */
438
			return;
439
			return;
Lines 440-455 static void safe_fwrite(const char *buf, size_t size, FILE *out) Link Here
440
		if (len == (size_t)-1 || len == (size_t)-2) {		/* invalid sequence */
441
		if (len == (size_t)-1 || len == (size_t)-2) {		/* invalid sequence */
441
			memset(&s, 0, sizeof (s));
442
			memset(&s, 0, sizeof (s));
442
			len = hex = 1;
443
			len = hex = 1;
443
444
		} else if (len > 1 && !iswprint(wc)) {	/* non-printable multibyte */
444
		} else if (len > 1 && !iswprint(wc)) {	/* non-printable multibyte */
445
			hex = 1;
445
			hex = 1;
446
		} else
447
#endif
448
		{
449
			if (!isprint((unsigned int) *p) &&
450
			    !isspace((unsigned int) *p))		/* non-printable */
451
				hex = 1;
452
		}
446
		}
447
		i += len - 1;
448
#else
449
		if (!isprint((unsigned int) *p) &&
450
			!isspace((unsigned int) *p))        /* non-printable */
451
			hex = 1;
452
#endif
453
		if (hex)
453
		if (hex)
454
			rc = fwrite_hex(p, len, out);
454
			rc = fwrite_hex(p, len, out);
455
		else
455
		else
456
- 

Return to bug 725993