Index: uspace/app/untar/main.c
===================================================================
--- uspace/app/untar/main.c	(revision 24fda5ed4fb3077000933b68f72dfc153ba3db02)
+++ uspace/app/untar/main.c	(revision 18ad56a8d754496a89691cf6df847dafd4b8f875)
@@ -37,13 +37,17 @@
 #include <untar.h>
 
-const char *filename;
+typedef struct {
+	const char *filename;
+	FILE *file;
+} tar_state_t;
 
 static int tar_open(tar_file_t *tar)
 {
-	FILE *file = fopen(filename, "rb");
-	if (file == NULL)
+	tar_state_t *state = (tar_state_t *) tar->data;
+
+	state->file = fopen(state->filename, "rb");
+	if (state->file == NULL)
 		return errno;
 
-	tar->data = (void *) file;
 	return EOK;
 }
@@ -51,12 +55,12 @@
 static void tar_close(tar_file_t *tar)
 {
-	FILE *file = (FILE *) tar->data;
-	fclose(file);
+	tar_state_t *state = (tar_state_t *) tar->data;
+	fclose(state->file);
 }
 
 static size_t tar_read(tar_file_t *tar, void *data, size_t size)
 {
-	FILE *file = (FILE *) tar->data;
-	return fread(data, 1, size, file);
+	tar_state_t *state = (tar_state_t *) tar->data;
+	return fread(data, 1, size, state->file);
 }
 
@@ -81,5 +85,8 @@
 	}
 
-	filename = argv[1];
+	tar_state_t state;
+	state.filename = argv[1];
+
+	tar.data = (void *) &state;
 	return untar(&tar);
 }
