/* Zadatak 3 - Nikola Trajkovic, 232/2000 */
#include <stdio.h>

int strlength(char s[]);
int strcomp(char s1[], char s2[]);
void strcopy(char s1[], char s2[], char c1, char c2, int i);
int atoi(char s[]);
void ime_mail(char s[], char ime[], char mail[]);

main(int argc, char *argv[])
{
 char line[100], kontakt[100]="", ime[50]="", mail[50]="", indeks[10]="", temp[10], p1[5], p2[5];
 long int br=0, bz=0;
 int p[40],i=0,j=0,poz;
 do
 {
  gets(line);
  bz+=strlength(line);
  br++;
  if (poz=strcomp(line,"<!KONTAKT")) strcopy(line,kontakt,' ', '>',poz-1);
  else if (poz=strcomp(line, "<!IDENT_STUDENT")) strcopy(line, indeks, ' ', '>',poz-1);
  else;
 }
 while (!strcomp(line, "<BODY"));

 while (gets(line)!=NULL)
 {
  br++;
  bz+=strlength(line);
  if (poz=strcomp(line, "<!---"))
   {
    strcopy(line, temp, '=', '-',poz-1);
    p[i++]=atoi(temp);
   }
 }
 ime_mail(kontakt, ime, mail);

 strcopy(argv[1], p1, '-', '-',0);
 strcopy(argv[1], temp, '-', '.',0);
 strcopy(temp, p2, '-', '\0',0);
 if (atoi(p1)!=p[0] || atoi(p2)!=p[i-1]) printf("NEKOREKTNO IME DATOTEKE!\n");

 if (ime[0]!='\0') printf("Ime studenta: %s\n",ime);
 else printf("NEDOSTAJE IME STUDENTA!\n");

 if (mail[0]!='\0') printf("E-mail studenta: %s\n", mail);
 else printf("NEDOSTAJE E-MAIL STUDENTA!\n");

 if (indeks[0]!='\0')printf("Broj dosijea: %s\n",indeks);
 else printf("NEDOSTAJE BROJ INDEKSA!\n");

 if (argv[1]!='\0') printf("Naziv datoteke: %s\n", argv[1]);
 else printf("NEDOSTAJE NAZIV DATOTEKE!\n");

 printf("Pocetna strana: %d\n", p[0]);
 printf("Zavrsna strana: %d\n", p[i-1]);
 printf("Broj redova: %ld   Broj znakova: %ld\n",br,bz);
 printf("Spisak brojeva strana:\n");
 for(j=0 ; j<i ; j++) printf("%d ",p[j]);
}

/* funkcija koja odredjuje duzinu stringa */

int strlength(char s[])
{
 int i;
 for(i=0 ; s[i] ; i++);
 return (i);
}

/* f-ja proverava da li se u stringu s1 nalazi string s2, */
/* tako da ne razlikuje velika i mala slova. Ako se string s2 */
/* ne pojavljuje u s1 f-ja vraca 0 u suprotnom vraca poziciju */
/* na kojoj se nalazi s2 (1,2,....) */

int strcomp(char s1[], char s2[])
{
 int i,j,p;
 char a,b;

 for(i=0; s1[i] ; i++)
 {
  for (j=0, p=1 ; s2[j] && p ; j++)
  {
   if (s1[i+j]>='a' && s1[i+j]<='z') a=s1[i+j]-('a'-'A');
   else a=s1[i+j];
   if (s2[j]>='a' && s2[j]<='z') b=s2[j]-('a'-'A');
   else b=s2[j];
   p=(a==b);
  }
  if (p) return (i+1);
 }
 return (0);
}

/* Kopira iz s1 u s2 sve sto se nalazi izmedju znakova c1 i c2 */
/* pocevsi od od pozicije i u stringu s1. To je bilo potrebno zbog toga sto se */
/* etiketa moze pojaviti bilo gde u redu a ne samo na pocetku reda. */


void strcopy(char s1[], char s2[], char c1, char c2, int i)
{
 int j;
 for( ; s1[i] && s1[i]!=c1 ; i++);
 if (s1[i]=='\0') s2[0]='\0';
 else
  {
   for(++i, j=0 ; s1[i] && s1[i]!=c2 ; i++, j++) s2[j]=s1[i];
   s2[j]='\0';
  }
}

/* f-ja konvertuje string u ceo broj. f-ja je ogranicena na */
/* pozitivne brojeve ali to u ovom slucaju nije bitno jer 
/* brojevi strana mogu biti samo pozitivni /*

int atoi(char s[])
{
 int n=0,i=0;
 while (s[i])
  n=n*10+(s[i++]-'0');
 return (n);
}

/* f-ja razdvaja ime i prezime od e-mail adrese */
/* i smesta ih u odgovarajuce promenljive */

void ime_mail(char s[], char ime[], char mail[])
{
 int i,j;
 for(i=strlength(s)-1 ; i>=0 && s[i]!='@' ; i--);
 if (i==-1)
  {
   mail[0]='\0';
   for(j=0 ; s[j] ; j++) ime[j]=s[j];
   ime[j]='\0';
  }
 else
  {
   for(--i ; s[i]!=';' && i>=0; i--);
   if (i==-1)
   {
    mail[0]='\0';
    for(j=0 ; s[j] ; j++) ime[j]=s[j];
    s[j]='\0';
   }
   else
   {
    for(j=0 ; j<i ; j++) ime[j]=s[j];
    ime[j]='\0';
    if (s[i+1]==' ') i+=2;
    else ++i;
    for(j=0 ; s[i+j] ; j++) mail[j]=s[i+j];
    mail[j]='\0';
   }
  }
}