Index: uspace/lib/posix/stdlib.c
===================================================================
--- uspace/lib/posix/stdlib.c	(revision 2b83add11c5bcd828a9b4eca961890f4cbac0c38)
+++ uspace/lib/posix/stdlib.c	(revision cc3652db72b709e99571f9efdeae2068ea0e1fa4)
@@ -86,4 +86,19 @@
 }
 
+posix_div_t posix_div(int numer, int denom)
+{
+	return (posix_div_t) { .quot = numer / denom, .rem = numer % denom };
+}
+
+posix_ldiv_t posix_ldiv(long numer, long denom)
+{
+	return (posix_ldiv_t) { .quot = numer / denom, .rem = numer % denom };
+}
+
+posix_lldiv_t posix_lldiv(long long numer, long long denom)
+{
+	return (posix_lldiv_t) { .quot = numer / denom, .rem = numer % denom };
+}
+
 /**
  * Private helper function that serves as a compare function for qsort().
@@ -117,4 +132,40 @@
 
 /**
+ * Binary search in a sorted array.
+ *
+ * @param key Object to search for.
+ * @param base Pointer to the first element of the array.
+ * @param nmemb Number of elements in the array.
+ * @param size Size of each array element.
+ * @param compar Comparison function.
+ * @return Pointer to a matching element, or NULL if none can be found.
+ */
+void *posix_bsearch(const void *key, const void *base,
+    size_t nmemb, size_t size, int (*compar)(const void *, const void *))
+{
+	while (nmemb > 0) {
+		const void *middle = base + (nmemb / 2) * size;
+		int cmp = compar(key, middle);
+		if (cmp == 0) {
+			return (void *) middle;
+		}
+		if (middle == base) {
+			/* There is just one member left to check and it
+			 * didn't match the key. Avoid infinite loop.
+			 */
+			break;
+		}
+		if (cmp < 0) {
+			nmemb = nmemb / 2;
+		} else if (cmp > 0) {
+			nmemb = nmemb - (nmemb / 2);
+			base = middle;
+		}
+	}
+	
+	return NULL;
+}
+
+/**
  * Retrieve a value of the given environment variable.
  * Since HelenOS doesn't support env variables at the moment,
@@ -139,4 +190,14 @@
 	// TODO: low priority, just a compile-time dependency of binutils
 	not_implemented();
+}
+
+/**
+ *
+ * @param string String to be passed to a command interpreter.
+ * @return
+ */
+int posix_system(const char *string) {
+	// TODO: does nothing at the moment
+	return 0;
 }
 
Index: uspace/lib/posix/stdlib.h
===================================================================
--- uspace/lib/posix/stdlib.h	(revision 2b83add11c5bcd828a9b4eca961890f4cbac0c38)
+++ uspace/lib/posix/stdlib.h	(revision cc3652db72b709e99571f9efdeae2068ea0e1fa4)
@@ -56,11 +56,35 @@
 extern long long posix_llabs(long long i);
 
-/* Array Sort Function */
+/* Integer division */
+
+typedef struct {
+	int quot, rem;
+} posix_div_t;
+
+typedef struct {
+	long quot, rem;
+} posix_ldiv_t;
+
+typedef struct {
+	long long quot, rem;
+} posix_lldiv_t;
+
+extern posix_div_t posix_div(int numer, int denom);
+extern posix_ldiv_t posix_ldiv(long numer, long denom);
+extern posix_lldiv_t posix_lldiv(long long numer, long long denom);
+
+/* Array Functions */
 extern void posix_qsort(void *array, size_t count, size_t size,
     int (*compare)(const void *, const void *));
+extern void *posix_bsearch(const void *key, const void *base,
+    size_t nmemb, size_t size, int (*compar)(const void *, const void *));
+
 
 /* Environment Access */
 extern char *posix_getenv(const char *name);
 extern int posix_putenv(char *string);
+
+extern int posix_system(const char *string);
+
 
 /* Symbolic Links */
@@ -104,8 +128,17 @@
 	#define llabs posix_llabs
 
+	#define div_t posix_div_t
+	#define ldiv_t posix_ldiv_t
+	#define lldiv_t posix_lldiv_t
+	#define div posix_div
+	#define ldiv posix_ldiv
+	#define lldiv posix_lldiv
+
 	#define qsort posix_qsort
+	#define bsearch posix_bsearch
 
 	#define getenv posix_getenv
 	#define putenv posix_putenv
+	#define system posix_system
 
 	#define realpath posix_realpath
