#include "tests.h"
#include <asm/unistd.h>

#ifdef __NR_uname

# include <stdio.h>
# include <sys/utsname.h>
# include <unistd.h>

int main(int ac, char **av)
{
	int abbrev = ac > 1;
	struct utsname *const uname = tail_alloc(sizeof(struct utsname));
	int rc = syscall(__NR_uname, uname);
	printf("uname({sysname=\"");
	print_quoted_string(uname->sysname);
	printf("\", nodename=\"");
	print_quoted_string(uname->nodename);
	if (abbrev) {
		printf("\", ...");
	} else {
		printf("\", release=\"");
		print_quoted_string(uname->release);
		printf("\", version=\"");
		print_quoted_string(uname->version);
		printf("\", machine=\"");
		print_quoted_string(uname->machine);
# ifdef HAVE_STRUCT_UTSNAME_DOMAINNAME
		printf("\", domainname=\"");
		print_quoted_string(uname->domainname);
# endif
		printf("\"");
	}
	printf("}) = %d\n", rc);

	puts("+++ exited with 0 +++");
	return 0;
}

#else

SKIP_MAIN_UNDEFINED("__NR_uname")

#endif
