#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>

char **argvv;

int msg_help();
void read();
void print();

struct tekst_node {
	struct tekst_node *neste;
	char tekst[100];
};

struct tekst_node *teksttre;

int main (int argc, char *argv[]) {
	argvv = argv;

	if (argc != 3)
		msg_help();

	FILE *fp = fopen(argv[2], "r");
	read(fp);
	fclose(fp);
	
	if (!strcmp(argv[1], "print")) {
		print();
	}
	else if (!strcmp(argv[1], "random")) {
		print_random();
	}
	else if (!strcmp(argv[1], "len")) {
		len();
	}
	else {
		fprintf(stderr, "%s: Ikkje gjenkjend kommando\n", argv[1]);
		msg_help();
	}
	
	return 0;
}

void read(FILE *fp) {
	int c;
	struct tekst_node *tn;
	char linja[100];
	int i = 0;

	tn = malloc(sizeof(struct tekst_node));
	teksttre = tn;

	while (EOF != (c = fgetc(fp)) ) {
		if (('\n' == c) || (0 == c)) {
			linja[i] = 0;
			strcpy(tn->tekst, linja);
			tn->neste = malloc(sizeof(struct tekst_node));
			tn = tn->neste;
			i = 0;
		}
		else {
			linja[i++] = c;
		}
	}
	linja[i] = 0;
	strcpy(tn->tekst, linja);
	tn->neste = NULL;
}

void print() {
	struct tekst_node *tn;
	tn = teksttre;

	printf("Skriv ut teksten:\n");
	while (NULL != tn) {
		printf("\t%s\n", tn->tekst);
		tn = tn->neste;
	}
}

void len() {
	struct tekst_node *tn;
	tn = teksttre;
	int lengde = 0;

	while (NULL != tn) {
		lengde += strlen(tn->tekst);
		/* Maa leggja til ein for newline som er teke vekk i strengane */
		lengde++;
		tn = tn->neste;
	}
	printf("Teksten er '%d' karakterar lang.\n", lengde);
}

void replace_vovel() {
	char vovels[] = {'a', 'e', 'i', 'o', 'u', 'y', 0 };
	char replacement;
	int i = 0;

	struct tekst_node *tn;
	
	while (0 != (replacement = vovels[i])) {
		tn = teksttre;

		while (NULL != tn) {
			
			printf("\t%s\n", tn->tekst);
			tn = tn->neste;
		}
	}
}

void print_random() {
	struct tekst_node *tn;
	tn = teksttre;
	int lengde = 0;
	

printf("fyrr while\n");
	int i;
	while (NULL != tn) {
		lengde++;
		tn = tn->neste;
	}
	
	int r;

	for (i=0; i<20; i++) {
		srand(13+i);
		r = rand() % lengde;
		printf("rand: %d\n", r);
	}

	printf("Lengde paa lista: %i, rand: %i\n", lengde, r);
	
	tn = teksttre;
	for (i=0; i < r; i++) {
		printf(".");
		tn = tn->neste;
	}
printf("for ferdig:%x\n",tn);
	printf("\t%s\n", tn->tekst);
}

int msg_help () {
	fprintf(stderr, "Bruk: %s <kommando> <fil>\n", argvv[0]);
	exit(EXIT_FAILURE);
}
