-
- psz_tmp = psz_parser;
-
- while( *psz_parser &&
- *psz_parser != ':' && *psz_parser != '/' && *psz_parser != '@' )
- {
- psz_parser++;
- }
-
- p_url->psz_host = strndup( psz_tmp, psz_parser - psz_tmp );
-
- if( *psz_parser == ':' )
- {
- psz_parser++;
- psz_tmp = psz_parser;
-
- while( *psz_parser && *psz_parser != '/' && *psz_parser != '@' )
- {
- psz_parser++;
- }
- p_url->i_port = atoi( psz_tmp );
- }
- else
- {
- p_url->i_port = 0;
- }
-
- /* 2: get path */
- if( *psz_parser == '/' )
- {
- //psz_parser++;
-
- psz_tmp = psz_parser;
-
- while( *psz_parser && *psz_parser != '@' )
- {
- psz_parser++;
- }
-
- p_url->psz_path = strndup( psz_tmp, psz_parser - psz_tmp );
- }
- else
- {
- p_url->psz_path = strdup( "" );
- }
-
- /* 3: usrname and password */
- if( *psz_parser == '@' )
- {
- psz_parser++;
-
- psz_tmp = psz_parser;
-
- while( *psz_parser && *psz_parser != ':' )
- {
- psz_parser++;
- }
-
- p_url->psz_username = strndup( psz_tmp, psz_parser - psz_tmp );
-
- if( *psz_parser == ':' )
- {
- psz_parser++;
-
- p_url->psz_password = strdup( psz_parser );
- }
- else
- {
- p_url->psz_password = strdup( "" );
- }
- }
- else
- {
- p_url->psz_username = strdup( "" );
- p_url->psz_password = strdup( "" );
- }
-#if 0
- fprintf( stderr,
- "host=`%s' port=%d path=`%s' username=`%s' password=`%s'\n",
- p_url->psz_host,
- p_url->i_port,
- p_url->psz_path,
- p_url->psz_username,
- p_url->psz_password );
-#endif
- free( psz_dup );
- return p_url;
-}
-
-void E_( url_free ) ( url_t * p_url )
-{
- free( p_url->psz_host );
- free( p_url->psz_path );
- free( p_url->psz_username );
- free( p_url->psz_password );
- free( p_url );