/* Zad4.c */
/* Jasmina Strizak */

#include <stdio.h>

int UporediChar(char x, char y)
{
  if ((64 < x) && (x < 91)) x += 32;
  if ((64 < y) && (y < 91)) y += 32;
  if (x == y)
    return 0;
  else
    return 1;
}

int UporediString(char *x, char *y)
{
  int i = 0;
  while ((UporediChar(x[i], y[i]) == 0) && ((x[i] != '\0') && (y[i] != '\0')))
    {
      i++;
    }
  if ((x[i] == '\0') && (y[i] == '\0'))
    {
      return 0; /* x == y */
    }
  else
    {
      return 1; /* x != y */
    }
}

void iso8859_2(FILE *Ulaz, FILE *Izlaz)
{
  /* Deklaracije promenljivih */
  int i;
  int j;
  char c;
  char d;
  char s[256];
  char s1[256];
  /* Deklaracije promenljivih tabele */
  int   td;
  int   tb[10];
  char* tv[10];
  /* Inicijalizacija promenljivih tabele */
  td = 10;
  tb[0] = 0xC8; tv[0] = "&Cx;";
  tb[1] = 0xD0; tv[1] = "&Dx;";
  tb[2] = 0xAE; tv[2] = "&Zx;";
  tb[3] = 0xC6; tv[3] = "&Cy;";
  tb[4] = 0xA9; tv[4] = "&Sx;";
  tb[5] = 0xE8; tv[5] = "&cx;";
  tb[6] = 0xF0; tv[6] = "&dx;";
  tb[7] = 0xBE; tv[7] = "&zx;";
  tb[8] = 0xE6; tv[8] = "&cy;";
  tb[9] = 0xB9; tv[9] = "&sx;";
  /* Resetuje ulazni fajl */
  fseek(Ulaz, 0, SEEK_SET);
  /* Konvertovanje */
  while (! feof(Ulaz))
    {
      c = fgetc(Ulaz);
      if (c == EOF)
	return;
      if (c == '<')
	{
	  fprintf(Izlaz, "<");
	  /* Obrada etikete */
	  i = 0;
	  c = fgetc(Ulaz);
	  while (((c != ' ') && (c != '>')) && (i < 255))
	    {
	      s[i] = c;
	      i++;
	      c = fgetc(Ulaz);
	    }
	  s[i] = '\0';
	  /* Ispis stringa u Izlaz */
	  fprintf(Izlaz, "%s%c", s, c);
	  /* Da li je procitana etiketa META ? */
	  if (UporediString(s, "META") == 0)
	    {
	      /* Citanje sadrzaja META etikete */
	      i = 0;
	      c = fgetc(Ulaz);
	      while ((c != '>') && (i < 255))
		{
		  s[i] = c;
		  i++;
		  c = fgetc(Ulaz);
		}
	      s[i] = '\0';
	      /* Traganje za "charset" */
	      i = 0;
	      while (s[i] != '\0')
		{
		  if (UporediChar(s[i], 'c') == 0)
		    {
		      /* Kopiranje stringa koji pocinje sa c */
		      j = 0;
		      while ((s[i] != '\0') && (s[i] != '=') && (s[i] != ' '))
			{
			  s1[j] = s[i];
			  i++;
			  j++;
			}
		      s1[j] = '\0';
		      /* Stampanje procitanog stringa */
		      fprintf(Izlaz, "%s%c", s1, s[i]);
		      i++;
		      /* Da li procitani string == "charset" ? */
		      if (UporediString(s1, "charset") == 0)
			{
			  /* Preskakanje kodne stranice */
			  j = 0;
			  /* Ispis separatora */
			  while ((s[i] == '=') || (s[i] == ' ') || (s[i] == '"'))
			    {
			      fputc(s[i], Izlaz);
			      i++;
			    }
			  while ((s[i] != '\0') && (s[i] != ' ') && (s[i] != '"'))
			    {
			      i++;
			    }
			  /* Ispis kodne stranice */
			  fprintf(Izlaz, "iso-8859-1");
                          /* Ispis ostatka */
			  while (s[i] != '\0')
			    {
			      fputc(s[i], Izlaz);
			      i++;
			    }
			}
		    }
		  else
		    {
		      /* Stampanje znaka koji je != 'c' */
		      fputc(s[i], Izlaz);
		      i++;
		    }
		}
	      fprintf(Izlaz, ">");
	    }
	}
      else
	{
	  /* printf("%d\n", c); */
	  /* Konverzija znaka */
	  j = 0;
	  for (i = 0 ; i < td ; i++ )
	    {
	      if (c == (char)tb[i])
		{
		  j = 1;
		  fprintf(Izlaz, "%s", tv[i]);
		}
	    }
	  /* Konverzija nije izvrsena */
	  if (j == 0)
	    {
	      /* Da li je trenutni znak potencijalno 'nj' ili 'lj' ? */
	      if ((UporediChar(c, 'n') == 0) || (UporediChar(c, 'l') == 0))
		{
		  d = fgetc(Ulaz);
		  /* Da li trenutni znak sa predhodnim gradi 'nj' ili 'lj' ? */
		  if (UporediChar(d, 'j') == 0)
		    {
		      fprintf(Izlaz, "&%cx;", c);
		      j = 1;
		    }
		  else
		    {
		      /* Vracanje znaka koji nije 'j' */
		      ungetc(d, Ulaz);
		    }
		}
	      /* Da li je trenutni znak potencijalno 'dz' ? */
	      if (UporediChar(c, 'd') == 0)
		{
		  d = fgetc(Ulaz);
		  /* Da li trenutni znak sa predhodnim gradi 'dz' ? */
		  if (UporediChar(d, 'z') == 0)
		    {
		      fprintf(Izlaz, "&%cy;", c);
		      j = 1;
		    }
		  else
		    {
		      /* Vracenje znaka koji nije 'z' */
		      ungetc(d, Ulaz);
		    }
		}
	      /* Konverzija nije izvrsena */
	      if (j == 0)
		fputc(c, Izlaz);
	    }
	}
    }
}

void iso8859_5(FILE *Ulaz, FILE *Izlaz)
{
  /* Deklaracije promenljivih */
  int i;
  int j;
  char c;
  char s[256];
  char s1[256];
  /* Deklaracije promenljivih tabele */
  int   td;
  int   tb[60];
  char* tv[60];
  /* Inicijalizacija promenljivih tabele */
  td = 60;
  tb[ 0] = 0xB0; tv[ 0] = "A";
  tb[ 1] = 0xB1; tv[ 1] = "B";
  tb[ 2] = 0xB2; tv[ 2] = "V";
  tb[ 3] = 0xB3; tv[ 3] = "G";
  tb[ 4] = 0xB4; tv[ 4] = "D";
  tb[ 5] = 0xA2; tv[ 5] = "&Dx;";
  tb[ 6] = 0xB5; tv[ 6] = "E";
  tb[ 7] = 0xB6; tv[ 7] = "&Zx;";
  tb[ 8] = 0xB7; tv[ 8] = "Z";
  tb[ 9] = 0xB8; tv[ 9] = "I";
  tb[10] = 0xA8; tv[10] = "J";
  tb[11] = 0xBA; tv[11] = "K";
  tb[12] = 0xBB; tv[12] = "L";
  tb[13] = 0xA9; tv[13] = "&Lx;";
  tb[14] = 0xBC; tv[14] = "M";
  tb[15] = 0xBD; tv[15] = "N";
  tb[16] = 0xAA; tv[16] = "&Nx;";
  tb[17] = 0xBE; tv[17] = "O";
  tb[18] = 0xBF; tv[18] = "P";
  tb[19] = 0xC0; tv[19] = "R";
  tb[20] = 0xC1; tv[20] = "S";
  tb[21] = 0xC2; tv[21] = "T";
  tb[22] = 0xAB; tv[22] = "&Cy;";
  tb[23] = 0xC3; tv[23] = "U";
  tb[24] = 0xC4; tv[24] = "F";
  tb[25] = 0xC5; tv[25] = "H";
  tb[26] = 0xC6; tv[26] = "C";
  tb[27] = 0xC7; tv[27] = "&Cx;";
  tb[28] = 0xAF; tv[28] = "&Dy;";
  tb[29] = 0xC8; tv[29] = "&Sx;";
  tb[30] = 0xD0; tv[30] = "a";
  tb[31] = 0xD1; tv[31] = "b";
  tb[32] = 0xD2; tv[32] = "v";
  tb[33] = 0xD3; tv[33] = "g";
  tb[34] = 0xD4; tv[34] = "d";
  tb[35] = 0xF2; tv[35] = "&dx;";
  tb[36] = 0xD5; tv[36] = "e";
  tb[37] = 0xD6; tv[37] = "&zx;";
  tb[38] = 0xD7; tv[38] = "z";
  tb[39] = 0xD8; tv[39] = "i";
  tb[40] = 0xF8; tv[40] = "j";
  tb[41] = 0xDA; tv[41] = "k";
  tb[42] = 0xDB; tv[42] = "l";
  tb[43] = 0xF9; tv[43] = "&lx;";
  tb[44] = 0xDC; tv[44] = "m";
  tb[45] = 0xDD; tv[45] = "n";
  tb[46] = 0xFA; tv[46] = "&nx;";
  tb[47] = 0xDE; tv[47] = "o";
  tb[48] = 0xDF; tv[48] = "p";
  tb[49] = 0xE0; tv[49] = "r";
  tb[50] = 0xE1; tv[50] = "s";
  tb[51] = 0xE2; tv[51] = "t";
  tb[52] = 0xFB; tv[52] = "&cy;";
  tb[53] = 0xE3; tv[53] = "u";
  tb[54] = 0xE4; tv[54] = "f";
  tb[55] = 0xE5; tv[55] = "h";
  tb[56] = 0xE6; tv[56] = "c";
  tb[57] = 0xE7; tv[57] = "&cx;";
  tb[58] = 0xFF; tv[58] = "&dy;";
  tb[59] = 0xE8; tv[59] = "&sx;";
  /* Resetuje ulazni fajl */
  fseek(Ulaz, 0, SEEK_SET);
  /* Konvertovanje */
  while (! feof(Ulaz))
    {
      c = fgetc(Ulaz);
      if (c == EOF)
	return;
      if (c == '<')
	{
	  fprintf(Izlaz, "<");
	  /* Obrada etikete */
	  i = 0;
	  c = fgetc(Ulaz);
	  while (((c != ' ') && (c != '>')) && (i < 255))
	    {
	      s[i] = c;
	      i++;
	      c = fgetc(Ulaz);
	    }
	  s[i] = '\0';
	  /* Ispis stringa u Izlaz */
	  fprintf(Izlaz, "%s%c", s, c);
	  /* Da li je procitana etiketa META ? */
	  if (UporediString(s, "META") == 0)
	    {
	      /* Citanje sadrzaja META etikete */
	      i = 0;
	      c = fgetc(Ulaz);
	      while ((c != '>') && (i < 255))
		{
		  s[i] = c;
		  i++;
		  c = fgetc(Ulaz);
		}
	      s[i] = '\0';
	      /* Traganje za "charset" */
	      i = 0;
	      while (s[i] != '\0')
		{
		  if (UporediChar(s[i], 'c') == 0)
		    {
		      /* Kopiranje stringa koji pocinje sa c */
		      j = 0;
		      while ((s[i] != '\0') && (s[i] != '=') && (s[i] != ' '))
			{
			  s1[j] = s[i];
			  i++;
			  j++;
			}
		      s1[j] = '\0';
		      /* Stampanje procitanog stringa */
		      fprintf(Izlaz, "%s%c", s1, s[i]);
		      i++;
		      /* Da li procitani string == "charset" ? */
		      if (UporediString(s1, "charset") == 0)
			{
			  /* Preskakanje kodne stranice */
			  j = 0;
			  /* Ispis separatora */
			  while ((s[i] == '=') || (s[i] == ' ') || (s[i] == '"'))
			    {
			      fputc(s[i], Izlaz);
			      i++;
			    }
			  while ((s[i] != '\0') && (s[i] != ' ') && (s[i] != '"'))
			    {
			      i++;
			    }
			  /* Ispis kodne stranice */
			  fprintf(Izlaz, "iso-8859-1");
                          /* Ispis ostatka */
			  while (s[i] != '\0')
			    {
			      fputc(s[i], Izlaz);
			      i++;
			    }
			}
		    }
		  else
		    {
		      /* Stampanje znaka koji je != 'c' */
		      fputc(s[i], Izlaz);
		      i++;
		    }
		}
	      fprintf(Izlaz, ">");
	    }
	}
      else
	{
	  /* printf("%d\n", c); */
	  /* Konverzija znaka */
	  j = 0;
	  for (i = 0 ; i < td ; i++ )
	    {
	      if (c == (char)tb[i])
		{
		  j = 1;
		  fprintf(Izlaz, "%s", tv[i]);
		}
	    }
	  if (j == 0)
	    {
	      fputc(c, Izlaz);
	    }
	}
    }
}

void windows1250(FILE *Ulaz, FILE *Izlaz)
{
  /* Deklaracije promenljivih */
  int i;
  int j;
  char c;
  char d;
  char s[256];
  char s1[256];
  /* Deklaracije promenljivih tabele */
  int   td;
  int   tb[10];
  char* tv[10];
  /* Inicijalizacija promenljivih tabele */
  td = 10;
  tb[0] = 0xC8; tv[0] = "&Cx;";
  tb[1] = 0xD0; tv[1] = "&Dx;";
  tb[2] = 0x8E; tv[2] = "&Zx;";
  tb[3] = 0xC6; tv[3] = "&Cy;";
  tb[4] = 0x8A; tv[4] = "&Sx;";
  tb[5] = 0xE8; tv[5] = "&cx;";
  tb[6] = 0xF0; tv[6] = "&dx;";
  tb[7] = 0x9E; tv[7] = "&zx;";
  tb[8] = 0xE6; tv[8] = "&cy;";
  tb[9] = 0x9A; tv[9] = "&sx;";
  /* Resetuje ulazni fajl */
  fseek(Ulaz, 0, SEEK_SET);
  /* Konvertovanje */
  while (! feof(Ulaz))
    {
      c = fgetc(Ulaz);
      if (c == EOF)
	return;
      if (c == '<')
	{
	  fprintf(Izlaz, "<");
	  /* Obrada etikete */
	  i = 0;
	  c = fgetc(Ulaz);
	  while (((c != ' ') && (c != '>')) && (i < 255))
	    {
	      s[i] = c;
	      i++;
	      c = fgetc(Ulaz);
	    }
	  s[i] = '\0';
	  /* Ispis stringa u Izlaz */
	  fprintf(Izlaz, "%s%c", s, c);
	  /* Da li je procitana etiketa META ? */
	  if (UporediString(s, "META") == 0)
	    {
	      /* Citanje sadrzaja META etikete */
	      i = 0;
	      c = fgetc(Ulaz);
	      while ((c != '>') && (i < 255))
		{
		  s[i] = c;
		  i++;
		  c = fgetc(Ulaz);
		}
	      s[i] = '\0';
	      /* Traganje za "charset" */
	      i = 0;
	      while (s[i] != '\0')
		{
		  if (UporediChar(s[i], 'c') == 0)
		    {
		      /* Kopiranje stringa koji pocinje sa c */
		      j = 0;
		      while ((s[i] != '\0') && (s[i] != '=') && (s[i] != ' '))
			{
			  s1[j] = s[i];
			  i++;
			  j++;
			}
		      s1[j] = '\0';
		      /* Stampanje procitanog stringa */
		      fprintf(Izlaz, "%s%c", s1, s[i]);
		      i++;
		      /* Da li procitani string == "charset" ? */
		      if (UporediString(s1, "charset") == 0)
			{
			  /* Preskakanje kodne stranice */
			  j = 0;
			  /* Ispis separatora */
			  while ((s[i] == '=') || (s[i] == ' ') || (s[i] == '"'))
			    {
			      fputc(s[i], Izlaz);
			      i++;
			    }
			  while ((s[i] != '\0') && (s[i] != ' ') && (s[i] != '"'))
			    {
			      i++;
			    }
			  /* Ispis kodne stranice */
			  fprintf(Izlaz, "iso-8859-1");
                          /* Ispis ostatka */
			  while (s[i] != '\0')
			    {
			      fputc(s[i], Izlaz);
			      i++;
			    }
			}
		    }
		  else
		    {
		      /* Stampanje znaka koji je != 'c' */
		      fputc(s[i], Izlaz);
		      i++;
		    }
		}
	      fprintf(Izlaz, ">");
	    }
	}
      else
	{
	  /* printf("%d\n", c); */
	  /* Konverzija znaka */
	  j = 0;
	  for (i = 0 ; i < td ; i++ )
	    {
	      if (c == (char)tb[i])
		{
		  j = 1;
		  fprintf(Izlaz, "%s", tv[i]);
		}
	    }
	  /* Konverzija nije izvrsena */
	  if (j == 0)
	    {
	      /* Da li je procitani znak potencijalno 'nj' ili 'lj' ? */
              if ((UporediChar(c, 'n') == 0) || (UporediChar(c, 'l') == 0))
		{
		  d = fgetc(Ulaz);
		  /* Da li je trenutni znak sa predhodnim gradi 'nj' ili 'lj' ? */
		  if (UporediChar(d, 'j') == 0)
		    {
		      fprintf(Izlaz, "&%cx;", c);
		      j = 1;
		    }
		  else
		    {
		      /* Vracanje znaka koji nije 'j' */
		      ungetc(d, Ulaz);
		    }
		}
	      /* Da li je trenutni znak potencijalno 'dz' ? */
	      if (UporediChar(c, 'd') == 0)
		{
		  d = fgetc(Ulaz);
		  /* Da li trenutni znak sa predhodnim gradi 'dz' ? */
		  if (UporediChar(d, 'z') == 0)
		    {
		      fprintf(Izlaz, "&%cy;", c);
		      j = 1;
		    }
		  else
		    {
		      /* Vracanje znaka koji nije 'z' */
		      ungetc(d, Ulaz);
		    }
		}
	      /* Konverzija nije izvrsena */
	      if (j == 0)
		fputc(c, Izlaz);
	    }
	}
    }
}

void windows1251(FILE *Ulaz, FILE *Izlaz)
{
  /* Deklaracije promenljivih */
  int i;
  int j;
  char c;
  char s[256];
  char s1[256];
  /* Deklaracije promenljivih tabele */
  int   td;
  int   tb[60];
  char* tv[60];
  /* Inicijalizacija promenljivih tabele */
  td = 60;
  tb[ 0] = 0xC0; tv[ 0] = "A";
  tb[ 1] = 0xC1; tv[ 1] = "B";
  tb[ 2] = 0xC2; tv[ 2] = "V";
  tb[ 3] = 0xC3; tv[ 3] = "G";
  tb[ 4] = 0xC4; tv[ 4] = "D";
  tb[ 5] = 0x80; tv[ 5] = "&Dx;";
  tb[ 6] = 0xC5; tv[ 6] = "E";
  tb[ 7] = 0xC6; tv[ 7] = "&Zx;";
  tb[ 8] = 0xC7; tv[ 8] = "Z";
  tb[ 9] = 0xC8; tv[ 9] = "I";
  tb[10] = 0xA3; tv[10] = "J";
  tb[11] = 0xCA; tv[11] = "K";
  tb[12] = 0xCB; tv[12] = "L";
  tb[13] = 0x8A; tv[13] = "&Lx;";
  tb[14] = 0xCC; tv[14] = "M";
  tb[15] = 0xCD; tv[15] = "N";
  tb[16] = 0x8C; tv[16] = "&Nx;";
  tb[17] = 0xCE; tv[17] = "O";
  tb[18] = 0xCF; tv[18] = "P";
  tb[19] = 0xD0; tv[19] = "R";
  tb[20] = 0xD1; tv[20] = "S";
  tb[21] = 0xD2; tv[21] = "T";
  tb[22] = 0x8E; tv[22] = "&Cy;";
  tb[23] = 0xD3; tv[23] = "U";
  tb[24] = 0xD4; tv[24] = "F";
  tb[25] = 0xD5; tv[25] = "H";
  tb[26] = 0xD6; tv[26] = "C";
  tb[27] = 0xD7; tv[27] = "&Cx;";
  tb[28] = 0x8F; tv[28] = "&Dy;";
  tb[29] = 0xD8; tv[29] = "&Sx;";
  tb[30] = 0xE0; tv[30] = "a";
  tb[31] = 0xE1; tv[31] = "b";
  tb[32] = 0xE2; tv[32] = "v";
  tb[33] = 0xE3; tv[33] = "g";
  tb[34] = 0xE4; tv[34] = "d";
  tb[35] = 0x90; tv[35] = "&dx;";
  tb[36] = 0xE5; tv[36] = "e";
  tb[37] = 0xE6; tv[37] = "&zx;";
  tb[38] = 0xE7; tv[38] = "z";
  tb[39] = 0xE8; tv[39] = "i";
  tb[40] = 0xBC; tv[40] = "j";
  tb[41] = 0xEA; tv[41] = "k";
  tb[42] = 0xEB; tv[42] = "l";
  tb[43] = 0x9A; tv[43] = "&lx;";
  tb[44] = 0xEC; tv[44] = "m";
  tb[45] = 0xED; tv[45] = "n";
  tb[46] = 0x9C; tv[46] = "&nx;";
  tb[47] = 0xEE; tv[47] = "o";
  tb[48] = 0xEF; tv[48] = "p";
  tb[49] = 0xF0; tv[49] = "r";
  tb[50] = 0xF1; tv[50] = "s";
  tb[51] = 0xF2; tv[51] = "t";
  tb[52] = 0x9E; tv[52] = "&cy;";
  tb[53] = 0xF3; tv[53] = "u";
  tb[54] = 0xF4; tv[54] = "f";
  tb[55] = 0xF5; tv[55] = "h";
  tb[56] = 0xF6; tv[56] = "c";
  tb[57] = 0xF7; tv[57] = "&cx;";
  tb[58] = 0x9F; tv[58] = "&dy;";
  tb[59] = 0xF8; tv[59] = "&sx;";
  /* Resetuje ulazni fajl */
  fseek(Ulaz, 0, SEEK_SET);
  /* Konvertovanje */
  while (! feof(Ulaz))
    {
      c = fgetc(Ulaz);
      if (c == EOF)
	return;
      if (c == '<')
	{
	  fprintf(Izlaz, "<");
	  /* Obrada etikete */
	  i = 0;
	  c = fgetc(Ulaz);
	  while (((c != ' ') && (c != '>')) && (i < 255))
	    {
	      s[i] = c;
	      i++;
	      c = fgetc(Ulaz);
	    }
	  s[i] = '\0';
	  /* Ispis stringa u Izlaz */
	  fprintf(Izlaz, "%s%c", s, c);
	  /* Da li je procitana etiketa META ? */
	  if (UporediString(s, "META") == 0)
	    {
	      /* Citanje sadrzaja META etikete */
	      i = 0;
	      c = fgetc(Ulaz);
	      while ((c != '>') && (i < 255))
		{
		  s[i] = c;
		  i++;
		  c = fgetc(Ulaz);
		}
	      s[i] = '\0';
	      /* Traganje za "charset" */
	      i = 0;
	      while (s[i] != '\0')
		{
		  if (UporediChar(s[i], 'c') == 0)
		    {
		      /* Kopiranje stringa koji pocinje sa c */
		      j = 0;
		      while ((s[i] != '\0') && (s[i] != '=') && (s[i] != ' '))
			{
			  s1[j] = s[i];
			  i++;
			  j++;
			}
		      s1[j] = '\0';
		      /* Stampanje procitanog stringa */
		      fprintf(Izlaz, "%s%c", s1, s[i]);
		      i++;
		      /* Da li procitani string == "charset" ? */
		      if (UporediString(s1, "charset") == 0)
			{
			  /* Preskakanje kodne stranice */
			  j = 0;
			  /* Ispis separatora */
			  while ((s[i] == '=') || (s[i] == ' ') || (s[i] == '"'))
			    {
			      fputc(s[i], Izlaz);
			      i++;
			    }
			  while ((s[i] != '\0') && (s[i] != ' ') && (s[i] != '"'))
			    {
			      i++;
			    }
			  /* Ispis kodne stranice */
			  fprintf(Izlaz, "iso-8859-1");
			  /* Ispis ostatka */
			  while (s[i] != '\0')
			    {
			      fputc(s[i], Izlaz);
			      i++;
			    }
			}
		    }
		  else
		    {
		      /* Stampanje znaka koji je != 'c' */
		      fputc(s[i], Izlaz);
		      i++;
		    }
		}
	      fprintf(Izlaz, ">");
	    }
	}
      else
	{
	  /* printf("%d\n", c); */
	  /* Konverzija znaka */
	  j = 0;
	  for (i = 0 ; i < td ; i++ )
	    {
	      if (c == (char)tb[i])
		{
		  j = 1;
		  fprintf(Izlaz, "%s", tv[i]);
		}
	    }
	  if (j == 0)
	    {
	      fputc(c, Izlaz);
	    }
	}
    }
}

int main(int BrojArgumenata, char **SadrzajArgumenta)
{
  /* Deklaracije promenljivih */
  int i;
  int j;
  char c;
  char s[256];
  char s1[256];
  char ks[256]; /* kodna stanica */
  FILE *Ulaz;
  FILE *Izlaz;
  /* Provere argumenata */
  if (BrojArgumenata < 3)
    {
      printf("Koriscenje: DEKODER Ulaz.HTM Izlaz.HTM\n");
      return 1; /* Nisu navedeni svi argumenti */
    }
  /* Inicijalizacije */
  ks[0] = '\0';
  /* Otvaranje fajlova */
  Ulaz = fopen(SadrzajArgumenta[1], "rb");
  Izlaz = fopen(SadrzajArgumenta[2], "wb");
  /* Identifikovanje kodne stranice */
  while (! feof(Ulaz))
    {
      /* Citanje karaktera */
      c = fgetc(Ulaz);
      if (c == '<')
	{
	  /* Citanje etikete */
	  i = 0;
	  c = fgetc(Ulaz);
	  while (((c != ' ') && (c != '>')) && (i < 255))
	    {
	      s[i] = c;
	      i++;
	      c = fgetc(Ulaz);
	    }
	  s[i] = '\0';
	  /* Da li je procitana etiketa META ? */
	  if (UporediString(s, "META") == 0)
	    {
	      /* Citanje sadrzaja META etikete */
	      i = 0;
	      c = fgetc(Ulaz);
	      while ((c != '>') && (i < 255))
		{
		  s[i] = c;
		  i++;
		  c = fgetc(Ulaz);
		}
	      s[i] = '\0';
	      /* Traganje za "charset" */
	      i = 0;
	      while (s[i] != '\0')
		{
		  if (UporediChar(s[i], 'c') == 0)
		    {
		      /* Kopiranje stringa koji pocinje sa c */
		      j = 0;
		      while ((s[i] != '\0') && (s[i] != '=') && (s[i] != ' '))
			{
			  s1[j] = s[i];
			  i++;
			  j++;
			}
		      s1[j] = '\0';
		      /* Da li procitani string == "charset" ? */
		      if (UporediString(s1, "charset") == 0)
			{
			  /* Citanje kodne stranice */
			  j = 0;
			  /* Preskakanje separatora */
			  while ((s[i] == '=') || (s[i] == ' ') || (s[i] == '"'))
			    {
			      i++;
			    }
			  while ((s[i] != '\0') && (s[i] != ' ') && (s[i] != '"'))
			    {
			      ks[j] = s[i];
			      i++;
			      j++;
			    }
			  ks[j] = '\0';
			}
		    }
		  else
		    {
		      i++;
		    }
		}
	    }
	}
    }
  /* Ispis poruke */
  if (ks[0] == '\0')
    {
      /* Greska */
      printf("Informacija o kodnoj semi se ne nalazi u tekstu !\n");
    }
  else
    {
      printf("Tekst je kodiran prema semi %s\n", ks);
    }
  /* Dekodiranje seme i rezultat upisuje u izlazni stream */
  if (UporediString(ks, "iso-8859-2") == 0)
    {
      iso8859_2(Ulaz, Izlaz);
    }
  if (UporediString(ks, "iso-8859-5") == 0)
    {
      iso8859_5(Ulaz, Izlaz);
    }
  if (UporediString(ks, "windows-1250") == 0)
    {
      windows1250(Ulaz, Izlaz);
    }
  if (UporediString(ks, "windows-1251") == 0)
    {
      windows1251(Ulaz, Izlaz);
    }
  /* Zatvaranje fajlova */
  fclose(Ulaz);
  fclose(Izlaz);
  /* Kraj */
  return 0;
}