/* Auteur: Lsinc-Jedai */
/* Plateforme: Win32 */
/* Compilateur/version: gcc/? */
/* Amélioration de Lsinclar-2 par Jedai */
/* Dernière modif: 07/08/2006, 23h42 */

/*
 Remplit buffer avec fread() puis parcourt buffer
 caractère par caractère:
   si c'est un '<' => tag=1
   si c'est un '>' => tag=0
   si c'est un '"' =>
     si on est dans un tag
       si flag : puts(URL) + reset variables
       sinon si flag et (précédents == '=FERH A') : flag=1
       sinon si flag et (précédents == '=ferh a') : flag=1
       sinon si flag et (précédents == '=CRS GMI'): img=1
       sinon si flag et (précédents == '=crs gmi'): img=1
       sinon si flag ou img : ajoute lettre à URL.

    Reconnait ça et rien d' autre:
 	<A HREF="url">		<a href="url">
	<A HREF='url'>		<a href='url'>
	<IMG SRC="url">		<IMG SRC='url'>
	<img src="url">		<img src='url'>
*/

#include <stdio.h>
#include <string.h>
#include <fcntl.h>

int main()
{
    char buf[8192];   /* lu sur stdin */
    int i=1, n=0;     /* i caractères lus, n pour boucler dessus */
    uint32_t test1 = 0;
    uint32_t test2 = 0;

    char URL[1024];     /* url */
    unsigned short b=0; /* sa longueur en octets */
    unsigned char tag=0, flag=0, img=0;  /* les flags */

    memset(URL, 0, 1024);  /* initialise tableau de char */

    while (i)
    {
        i = fread(buf, 1, 8192, stdin);
        for (n=0; n<i; n++)
        {
            if      (buf[n]==0X3C) tag=1;
            else if (buf[n]==0X3E) tag=0;
            else if (buf[n]==0X22 || buf[n]==0X27)
            {
                if (tag)
                {
                    if (flag || img)
                    {
                        puts(URL);
                        flag = img = b = 0;
                        memset(URL,0, 1024);
                    }
                    else if ( (test1 & 0x00FFFFFF) == 0x00612068 && test2 == 0x7265663D ) flag=1;

                    else if ( (test1 & 0x00FFFFFF) == 0x00412048 && test2 == 0x5245463D ) flag=1;

                    else if ( test1 == 0x494D4720 && test2 == 0x5352433D ) img=1;

                    else if ( test1 == 0x696D6720 && test2 == 0x7372633D ) img=1;
                }
            }
            else if (flag || img) URL[b++] = buf[n];
                
            test1 = (test1 << 8) + (test2  >> 24);
            test2 = (test2 << 8) + buf[n];
        } //for
    } // while fread()

    return 0;
}