diff --git a/uniq.c b/uniq.c
index 251cf2d..5f0e192 100644
--- a/uniq.c
+++ b/uniq.c
@@ -23,6 +23,8 @@
 
 #include "internal.h"
 #include <stdio.h>
+#include <string.h>
+#include <errno.h>
 
 static const char uniq_usage[] =
 "haha\n"
@@ -105,6 +107,35 @@
     return self;
 }
 
+static int
+set_file_pointers(int schema, FILE **in, FILE **out, char **argv)
+{
+    switch (schema) {
+	case 0:
+	    *in = stdin;
+	    *out = stdout;
+	    break;
+	case 1:
+	    *in = fopen(argv[0], "r");
+	    *out = stdout;
+	    break;
+	case 2:
+	    *in = fopen(argv[0], "r");
+	    *out = fopen(argv[1], "w");
+	    break;
+    }
+    if (*in == NULL) {
+	fprintf(stderr, "uniq: %s: %s\n", argv[0], strerror(errno));
+	return errno;
+    }
+    if (*out == NULL) {
+	fprintf(stderr, "uniq: %s: %s\n", argv[1], strerror(errno));
+	return errno;
+    }
+    return 0;
+}
+
+
 /* one variable is the decision algo */
 /* another variable is the printing algo */
 
@@ -122,20 +153,6 @@
     FILE    *in, *out;
     Subject s;
 
-    /* init */
-    in  = stdin;
-    out = stdout;
-
-    subject_init(&s, in, out, NULL);
-    while (subject_next(&s)) { 
-	subject_study(&s);
-    }
-    subject_last(&s);
-    subject_study(&s);
-    exit(0);
-
-    /* XXX : finish the tedious stuff */
-
     /* parse argv[] */
     for (i = 1; i < argc; i++) {
 	if (argv[i][0] == '-') {
@@ -152,7 +169,21 @@
 	}
     }
 
+    /* 0 src: stdin; dst: stdout */
+    /* 1 src: file;  dst: stdout */
+    /* 2 src: file;  dst: file   */
+    if (set_file_pointers((argc - 1), &in, &out, &argv[i])) {
+	exit(1);
+    }
+
+    subject_init(&s, in, out, NULL);
+    while (subject_next(&s)) { 
+	subject_study(&s);
+    }
+    subject_last(&s);
+    subject_study(&s);
+
     exit(0);
 }
 
-/* $Id: uniq.c,v 1.2 2000/01/06 01:14:56 erik Exp $ */
+/* $Id: uniq.c,v 1.3 2000/01/06 23:49:21 beppu Exp $ */
