- /* tmp line holders */
- static char line[2][UNIQ_MAX];
- static int alternator = 0;
-
- if (fgets(line[alternator], UNIQ_MAX, self->in)) {
- self->a = self->b;
- self->b = line[alternator];
- alternator ^= 1;
- return self;
+ FILE *in, *out;
+ /* Note: Ignore the warning about dups and e0 possibly being uninitialized.
+ * They will be initialized on the fist pass of the loop (since s0 is NULL). */
+ unsigned long dups, skip_fields, skip_chars, i;
+ const char *s0, *e0, *s1, *e1, *input_filename;
+ int opt;
+ int uniq_flags = 6; /* -u */
+
+ skip_fields = skip_chars = 0;
+
+ while ((opt = getopt(argc, argv, uniq_opts)) > 0) {
+ if (opt == 'f') {
+ skip_fields = bb_xgetularg10(optarg);
+ } else if (opt == 's') {
+ skip_chars = bb_xgetularg10(optarg);
+ } else if ((s0 = strchr(uniq_opts, opt)) != NULL) {
+ uniq_flags &= s0[4];
+ uniq_flags |= s0[7];
+ } else {
+ bb_show_usage();
+ }