static int cmd_uname(void *data, const char *input) {
	const char* help_msg[] = {
		"Usage:", "u", "uname or undo write/seek",
		"u", "", "show system uname",
		"uw", "", "alias for wc (requires: e io.cache=true)",
		"us", "", "alias for s- (seek history)",
		NULL};
	switch (input[0]) {
	case '?':
		r_core_cmd_help (data, help_msg);
		return 1;
	case 's':
		r_core_cmdf (data, "s-%s", input + 1);
		return 1;
	case 'w':
		r_core_cmdf (data, "wc%s", input + 1);
		return 1;
	}
#if __UNIX__
	struct utsname un;
	uname (&un);
	r_cons_printf ("%s %s %s %s\n", un.sysname,
		un.nodename, un.release, un.machine);
#elif __WINDOWS__
	r_cons_printf ("windows\n");
#else
	r_cons_printf ("unknown\n");
#endif
	return 0;
}
static int cmd_uname(void *data, const char *input) {
	const char* help_msg[] = {
		"Usage:", "u", "uname or undo write/seek",
		"u", "", "show system uname",
		"uw", "", "alias for wc (requires: e io.cache=true)",
		"us", "", "alias for s- (seek history)",
		NULL};
	switch (input[0]) {
	case '?':
		r_core_cmd_help (data, help_msg);
		return 1;
	case 's':
		r_core_cmdf (data, "s-%s", input + 1);
		return 1;
	case 'w':
		r_core_cmdf (data, "wc%s", input + 1);
		return 1;
	}
#if __UNIX__
	struct utsname un;
	uname (&un);
	r_cons_printf ("%s %s %s %s\n", un.sysname,
		un.nodename, un.release, un.machine);
#elif __WINDOWS__
	r_cons_printf ("windows\n");
#else
	r_cons_printf ("unknown\n");
#endif
	return 0;
}