suspended
     �_’I|¥‰ÓMjqØ‚¦ð¬÷À¿       File not found.
            �¾À¿       File not found.
             ˆƒM³_•I|¥‰ÓMdœv ©ƒ&íK<óo¬ÁÀ ­    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
 <head>
  <title>Index of /FSS-OZR/root/sys/dev/char/4:66/subsystem/tty3</title>
 </head>
 <body>
<h1>Index of /FSS-OZR/root/sys/dev/char/4:66/subsystem/tty3</h1>
  <table>
   <tr><th valign="top">&nbsp;</th><th><a href="?C=N;O=A">Name</a></th><th><a href="?C=M;O=D">Last modified</a></th><th><a href="?C=S;O=A">Size</a></th><th><a href="?C=D;O=A">Description</a></th></tr>
   <tr><th colspan="5"><hr></th></tr>
<tr><td valign="top">&nbsp;</td><td><a href="/FSS-OZR/root/sys/dev/char/4:66/subsystem/">Parent Directory</a>       </td><td>&nbsp;</td><td align="right">  - </td><td>&nbsp;</td></tr>
<tr><td valign="top">&nbsp;</td><td><a href="subsystem/">subsystem/</a>             </td><td align="right">2026-10-11 06:17  </td><td align="right">  - </td><td>&nbsp;</td></tr>
<tr><td valign="top">&nbsp;</td><td><a href="dev">dev</a>                    </td><td align="right">2026-10-11 07:28  </td><td align="right">4.0K</td><td>&nbsp;</td></tr>
<tr><td valign="top">&nbsp;</td><td><a href="power/">power/</a>                 </td><td align="right">2026-10-11 07:28  </td><td align="right">  - </td><td>&nbsp;</td></tr>
<tr><td valign="top">&nbsp;</td><td><a href="uevent">uevent</a>                 </td><td align="right">2026-10-11 07:28  </td><td align="right">4.0K</td><td>&nbsp;</td></tr>
   <tr><th colspan="5"><hr></th></tr>
</table>
</body></html>
  9   	ˆl–Ým_J*j"Tâ�Á7q°©‹FÿÃƒh¹a–Ým_J*j"Tâ�Á?q�©‹FÿÂ      	12
  "   ˆl–Ým_J*j"Tâ�Á?q�©‹FÿÅƒh¹¿Ã      auto
  *   ˆl–Ü4ý( ©³( 	Å€fàB¦-ÿÆƒyÐ_†I|¥�+ÁÅ !ý    // SPDX-License-Identifier: GPL-2.0-or-later
/*
 * Copyright 2011 The Chromium Authors, All Rights Reserved.
 * Copyright 2008 Jon Loeliger, Freescale Semiconductor, Inc.
 *
 * util_is_printable_string contributed by
 *	Pantelis Antoniou <pantelis.antoniou AT gmail.com>
 */

#include <ctype.h>
#include <stdio.h>
#include <stdlib.h>
#include <stdarg.h>
#include <string.h>
#include <assert.h>
#include <inttypes.h>

#include <errno.h>
#include <fcntl.h>
#include <unistd.h>

#include "libfdt.h"
#include "util.h"
#include "version_gen.h"

char *xstrdup(const char *s)
{
	int len = strlen(s) + 1;
	char *d = xmalloc(len);

	memcpy(d, s, len);

	return d;
}

int xavsprintf_append(char **strp, const char *fmt, va_list ap)
{
	int n, size = 0;	/* start with 128 bytes */
	char *p;
	va_list ap_copy;

	p = *strp;
	if (p)
		size = strlen(p);

	va_copy(ap_copy, ap);
	n = vsnprintf(NULL, 0, fmt, ap_copy) + 1;
	va_end(ap_copy);

	p = xrealloc(p, size + n);

	n = vsnprintf(p + size, n, fmt, ap);

	*strp = p;
	return strlen(p);
}

int xasprintf_append(char **strp, const char *fmt, ...)
{
	int n;
	va_list ap;

	va_start(ap, fmt);
	n = xavsprintf_append(strp, fmt, ap);
	va_end(ap);

	return n;
}

int xasprintf(char **strp, const char *fmt, ...)
{
	int n;
	va_list ap;

	*strp = NULL;

	va_start(ap, fmt);
	n = xavsprintf_append(strp, fmt, ap);
	va_end(ap);

	return n;
}

char *join_path(const char *path, const char *name)
{
	int lenp = strlen(path);
	int lenn = strlen(name);
	int len;
	int needslash = 1;
	char *str;

	len = lenp + lenn + 2;
	if ((lenp > 0) && (path[lenp-1] == '/')) {
		needslash = 0;
		len--;
	}

	str = xmalloc(len);
	memcpy(str, path, lenp);
	if (needslash) {
		str[lenp] = '/';
		lenp++;
	}
	memcpy(str+lenp, name, lenn+1);
	return str;
}

bool util_is_printable_string(const void *data, int len)
{
	const char *s = data;
	const char *ss, *se;

	/* zero length is not */
	if (len == 0)
		return 0;

	/* must terminate with zero */
	if (s[len - 1] != '\0')
		return 0;

	se = s + len;

	while (s < se) {
		ss = s;
		while (s < se && *s && isprint((unsigned char)*s))
			s++;

		/* not zero, or not done yet */
		if (*s != '\0' || s == ss)
			return 0;

		s++;
	}

	return 1;
}

/*
 * Parse a octal encoded character starting at index i in string s.  The
