• [^] # Re: GNet lib

    Posté par . En réponse au message Avoir le host d'une url. Évalué à 2.

    #include <stdio.h>
    #include <string.h>
    #include <alloca.h>
    #define METHOD_SIZE (sizeof("http://") - 1)
    int get_host(const char *url, unsigned int len, char **res, unsigned int size)
    {
     unsigned int i;
     /* chaine vide */
     if ( 0 > len )
     return 0;
     /* chaine ne contenant meme pas la methode ... */
     if ( METHOD_SIZE > len )
     return 0;
     for ( i = METHOD_SIZE; i < len; i++ ) {
     if ( '/' == url[i] )
     break;
     }
     /* pas assez de memoire pour contenir le resultat */
     if ( size < len )
     return -1;
     len = i - METHOD_SIZE;
     memcpy(*res, &url[METHOD_SIZE], len );
     return len;
    }
    int main(int ac, char *av[])
    {
     char *host = 0;
     int len = 0;
     if ( ac < 2 )
     return 1;
     host = (char *) alloca(32);
     len = get_host(av[1], strlen(av[1]), &host, 32);
     if ( 0 < len )
     printf("host: %.*s\n", len, host);
     else
     printf("ret: %d\n", len);
     return 0;
    }