Index: uspace/lib/posix/fcntl.h
===================================================================
--- uspace/lib/posix/fcntl.h	(revision 46ac9860c43b82ea5dcc32a3d5e6d42b6def64b1)
+++ uspace/lib/posix/fcntl.h	(revision 221afc9ed8935991a22dbd8c1718c6e9d644b4fd)
@@ -71,4 +71,15 @@
 #define FD_CLOEXEC         1 /* Close on exec. */
 
+#undef open
+#define open(path, oflag, ...) \
+	({ \
+		int rc = open(path, oflag, ##__VA_ARGS__); \
+		if (rc < 0) { \
+			errno = -rc; \
+			rc = -1; \
+		} \
+		rc; \
+	})
+
 extern int posix_fcntl(int fd, int cmd, ...);
 
Index: uspace/lib/posix/stdio.c
===================================================================
--- uspace/lib/posix/stdio.c	(revision 46ac9860c43b82ea5dcc32a3d5e6d42b6def64b1)
+++ uspace/lib/posix/stdio.c	(revision 221afc9ed8935991a22dbd8c1718c6e9d644b4fd)
@@ -86,4 +86,21 @@
 	s[0] = '\0';
 	return s;
+}
+
+/**
+ * Put a string on the stream.
+ * 
+ * @param s String to be written.
+ * @param stream Output stream.
+ * @return Non-negative on success, EOF on failure.
+ */
+int posix_fputs(const char *restrict s, FILE *restrict stream)
+{
+	int rc = fputs(s, stream);
+	if (rc == 0) {
+		return EOF;
+	} else {
+		return 0;
+	}
 }
 
@@ -394,4 +411,21 @@
 
 /**
+ * Discard prefetched data or write unwritten data.
+ * 
+ * @param stream Stream that shall be flushed.
+ * @return Zero on success, EOF on failure.
+ */
+int posix_fflush(FILE *stream)
+{
+	int rc = fflush(stream);
+	if (rc < 0) {
+		errno = -rc;
+		return EOF;
+	} else {
+		return 0;
+	}
+}
+
+/**
  * Print formatted output to the opened file.
  *
Index: uspace/lib/posix/stdio.h
===================================================================
--- uspace/lib/posix/stdio.h	(revision 46ac9860c43b82ea5dcc32a3d5e6d42b6def64b1)
+++ uspace/lib/posix/stdio.h	(revision 221afc9ed8935991a22dbd8c1718c6e9d644b4fd)
@@ -53,4 +53,5 @@
 #undef putc
 #define putc fputc
+extern int posix_fputs(const char *restrict s, FILE *restrict stream);
 #undef getc
 #define getc fgetc
@@ -79,4 +80,7 @@
 extern long posix_ftell(FILE *stream);
 extern posix_off_t posix_ftello(FILE *stream);
+
+/* Flushing Buffers */
+extern int posix_fflush(FILE *stream);
 
 /* Formatted Output */
@@ -122,4 +126,5 @@
 	#define clearerr posix_clearerr
 
+	#define fputs posix_fputs
 	#define ungetc posix_ungetc
 	#define getdelim posix_getdelim
@@ -139,4 +144,6 @@
 	#define ftell posix_ftell
 	#define ftello posix_ftello
+
+	#define fflush posix_fflush
 
 	#define dprintf posix_dprintf
Index: uspace/lib/posix/unistd.c
===================================================================
--- uspace/lib/posix/unistd.c	(revision 46ac9860c43b82ea5dcc32a3d5e6d42b6def64b1)
+++ uspace/lib/posix/unistd.c	(revision 221afc9ed8935991a22dbd8c1718c6e9d644b4fd)
@@ -94,4 +94,28 @@
 
 /**
+ * Get the pathname of the current working directory.
+ *
+ * @param buf Buffer into which the pathname shall be put.
+ * @param size Size of the buffer.
+ * @return Buffer pointer on success, NULL on failure.
+ */
+char *posix_getcwd(char *buf, size_t size)
+{
+	/* Native getcwd() does not set any errno despite the fact that general
+	 * usage pattern of this function depends on it (caller is repeatedly
+	 * guessing the required size of the buffer by checking for ERANGE on
+	 * failure). */
+	if (size == 0) {
+		errno = EINVAL;
+		return NULL;
+	}
+	char *ret = getcwd(buf, size);
+	if (ret == NULL && errno == EOK) {
+		errno = ERANGE;
+	}
+	return ret;
+}
+
+/**
  * Determine the page size of the current run of the process.
  *
@@ -133,4 +157,40 @@
 	/* There is currently no support for user accounts in HelenOS. */
 	return 0;
+}
+
+/**
+ * Read from a file.
+ *
+ * @param fildes File descriptor of the opened file.
+ * @param buf Buffer to which the read bytes shall be stored.
+ * @param nbyte Upper limit on the number of read bytes.
+ * @return Number of read bytes on success, -1 otherwise.
+ */
+ssize_t posix_read(int fildes, void *buf, size_t nbyte)
+{
+	int rc = read(fildes, buf, nbyte);
+	if (rc < 0) {
+		errno = -rc;
+		return -1;
+	} else {
+		return rc;
+	}
+}
+
+/**
+ * Remove a link to a file.
+ * 
+ * @param path File pathname.
+ * @return Zero on success, -1 otherwise.
+ */
+int posix_unlink(const char *path)
+{
+	int rc = unlink(path);
+	if (rc < 0) {
+		errno = -rc;
+		return -1;
+	} else {
+		return rc;
+	}
 }
 
Index: uspace/lib/posix/unistd.h
===================================================================
--- uspace/lib/posix/unistd.h	(revision 46ac9860c43b82ea5dcc32a3d5e6d42b6def64b1)
+++ uspace/lib/posix/unistd.h	(revision 221afc9ed8935991a22dbd8c1718c6e9d644b4fd)
@@ -51,4 +51,5 @@
 extern char **posix_environ;
 
+/* Login Information */
 extern char *posix_getlogin(void);
 extern int posix_getlogin_r(char *name, size_t namesize);
@@ -56,4 +57,7 @@
 /* Identifying Terminals */
 extern int posix_isatty(int fd);
+
+/* Working Directory */
+extern char *posix_getcwd(char *buf, size_t size);
 
 /* Query Memory Parameters */
@@ -64,4 +68,10 @@
 extern posix_uid_t posix_getuid(void);
 extern posix_gid_t posix_getgid(void);
+
+/* File Input/Output */
+extern ssize_t posix_read(int fildes, void *buf, size_t nbyte);
+
+/* Deleting Files */
+extern int posix_unlink(const char *path);
 
 /* Standard Streams */
@@ -129,6 +139,9 @@
 #ifndef LIBPOSIX_INTERNAL
 	#define environ posix_environ
+
 	#define getlogin posix_getlogin
 	#define getlogin_r posix_getlogin_r
+
+	#define getcwd posix_getcwd
 
 	#define isatty posix_isatty
@@ -140,4 +153,8 @@
 	#define getuid posix_getuid
 	#define getgid posix_getgid
+
+	#define read posix_read
+
+	#define unlink posix_unlink
 
 	#define access posix_access
