Index: init/Makefile
===================================================================
--- init/Makefile	(revision ecfd7e595a620893f20fa064a27ac0845f667e51)
+++ init/Makefile	(revision 350514cb8dd5c0fa5256bae2ae04520fef3f1568)
@@ -38,5 +38,6 @@
 OUTPUT = init
 SOURCES = \
-	init.c
+	init.c \
+	version.c
 
 OBJECTS := $(addsuffix .o,$(basename $(SOURCES)))
Index: init/init.c
===================================================================
--- init/init.c	(revision ecfd7e595a620893f20fa064a27ac0845f667e51)
+++ init/init.c	(revision 350514cb8dd5c0fa5256bae2ae04520fef3f1568)
@@ -27,11 +27,9 @@
  */
 
-#include <unistd.h>
-#include <stdio.h>
+#include "version.h"
 
 int main(int argc, char *argv[])
 {
-	puts("Hello world\n");
-	while (1) ;
+	version_print();
 	return 0;
 }
Index: init/init.h
===================================================================
--- init/init.h	(revision 350514cb8dd5c0fa5256bae2ae04520fef3f1568)
+++ init/init.h	(revision 350514cb8dd5c0fa5256bae2ae04520fef3f1568)
@@ -0,0 +1,34 @@
+/*
+ * Copyright (C) 2006 Martin Decky
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * - Redistributions of source code must retain the above copyright
+ *   notice, this list of conditions and the following disclaimer.
+ * - Redistributions in binary form must reproduce the above copyright
+ *   notice, this list of conditions and the following disclaimer in the
+ *   documentation and/or other materials provided with the distribution.
+ * - The name of the author may not be used to endorse or promote products
+ *   derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#ifndef __INIT_H__
+#define __INIT_H__
+
+#include "version.h"
+
+#endif
Index: init/version.c
===================================================================
--- init/version.c	(revision 350514cb8dd5c0fa5256bae2ae04520fef3f1568)
+++ init/version.c	(revision 350514cb8dd5c0fa5256bae2ae04520fef3f1568)
@@ -0,0 +1,38 @@
+/*
+ * Copyright (C) 2006 Jakub Jermar
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * - Redistributions of source code must retain the above copyright
+ *   notice, this list of conditions and the following disclaimer.
+ * - Redistributions in binary form must reproduce the above copyright
+ *   notice, this list of conditions and the following disclaimer in the
+ *   documentation and/or other materials provided with the distribution.
+ * - The name of the author may not be used to endorse or promote products
+ *   derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include <unistd.h>
+#include <stdio.h>
+#include "version.h"
+
+/** Print version information. */
+void version_print(void)
+{
+	puts("HelenOS init");
+	puts("Copyright (C) 2006 HelenOS project");
+}
Index: init/version.h
===================================================================
--- init/version.h	(revision 350514cb8dd5c0fa5256bae2ae04520fef3f1568)
+++ init/version.h	(revision 350514cb8dd5c0fa5256bae2ae04520fef3f1568)
@@ -0,0 +1,34 @@
+/*
+ * Copyright (C) 2006 Martin Decky
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * - Redistributions of source code must retain the above copyright
+ *   notice, this list of conditions and the following disclaimer.
+ * - Redistributions in binary form must reproduce the above copyright
+ *   notice, this list of conditions and the following disclaimer in the
+ *   documentation and/or other materials provided with the distribution.
+ * - The name of the author may not be used to endorse or promote products
+ *   derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#ifndef __VERSION_H__
+#define __VERSION_H__
+
+extern void version_print(void);
+
+#endif
Index: libc/generic/io.c
===================================================================
--- libc/generic/io.c	(revision ecfd7e595a620893f20fa064a27ac0845f667e51)
+++ libc/generic/io.c	(revision 350514cb8dd5c0fa5256bae2ae04520fef3f1568)
@@ -31,4 +31,6 @@
 #include <stdio.h>
 
+static char nl = '\n';
+
 int puts(const char * str)
 {
@@ -36,8 +38,10 @@
 	
 	for (count = 0; str[count] != 0; count++);
-	if (write(1, (void * ) str, count) == count)
-		return 0;
-	else
-		return EOF;
+	if (write(1, (void * ) str, count) == count) {
+		if (write(1, &nl, 1) == 1)
+			return 0;
+	}
+	
+	return EOF;
 }
 
Index: libc/generic/libc.c
===================================================================
--- libc/generic/libc.c	(revision ecfd7e595a620893f20fa064a27ac0845f667e51)
+++ libc/generic/libc.c	(revision 350514cb8dd5c0fa5256bae2ae04520fef3f1568)
@@ -30,7 +30,12 @@
 #include <unistd.h>
 
+void _exit(int status) {
+	__SYSCALL0(SYS_CTL);
+}
+
 void __main(void) {
 }
 
 void __exit(void) {
+	_exit(0);
 }
Index: libc/include/libc.h
===================================================================
--- libc/include/libc.h	(revision ecfd7e595a620893f20fa064a27ac0845f667e51)
+++ libc/include/libc.h	(revision 350514cb8dd5c0fa5256bae2ae04520fef3f1568)
@@ -33,4 +33,9 @@
 
 
+#define __SYSCALL0(id) __syscall(id, 0, 0, 0)
+#define __SYSCALL1(id, p1) __syscall(id, p1, 0, 0)
+#define __SYSCALL2(id, p1, p2) __syscall(id, p1, p2, 0)
+
+
 typedef enum {
 	SYS_CTL = 0,
Index: libc/include/unistd.h
===================================================================
--- libc/include/unistd.h	(revision ecfd7e595a620893f20fa064a27ac0845f667e51)
+++ libc/include/unistd.h	(revision 350514cb8dd5c0fa5256bae2ae04520fef3f1568)
@@ -35,4 +35,5 @@
 
 extern ssize_t write(int fd, const void * buf, size_t count);
+extern void _exit(int status);
 
 #endif
