1 #include <stdio.h>
2 #include <string.h>
3 #include "vars.h"
4 
5 #define MAX 1024
6 
7 
8  /**********************************************
9   ********** EXPAND URL TO struc url ***********/
cache2url(struct p_url * t_url,char * k)10 int cache2url(struct p_url *t_url, char *k)
11 {
12  char *k1;
13         #ifdef DEBUG_CACHE2URL
14  int l;
15 	fprintf(stderr,"expand: ");
16 	   for (l=0;l<strlen(k);l++)
17 	    if (k[l]==1)  fprintf(stderr,"!");
18 	    else fprintf(stderr,"%c",k[l]);
19 
20            fprintf(stderr,"\n");
21 	#endif
22 
23        //get 2 level domen
24 
25           k1=strchr(k,1);
26 
27 	  if (!k1)
28 	    {
29 	     k1=strchr(k,0);
30 	     memcpy(t_url->twoleveldomen,k,k1-k);
31 	     t_url->twoleveldomen[k1-k]=0;
32 	     t_url->subdomen[0]=0;
33 	     t_url->port[0]=0;
34 	     t_url->dirs[0]=0;
35             #ifdef DEBUG_CACHE2URL
36 	    fprintf(stderr,"  2ld: %s\n",t_url->twoleveldomen);
37 	    fprintf(stderr,"  sub: %s\n",t_url->subdomen);
38 	    fprintf(stderr,"  prt: %s\n",t_url->port);
39 	    fprintf(stderr,"  dir: %s\n",t_url->dirs);
40 	    fprintf(stderr,"RETURN\n");
41 	    #endif
42 	    return(1);
43 	    }
44           memcpy(t_url->twoleveldomen,k,k1-k);
45 	  t_url->twoleveldomen[k1-k]=0;
46           #ifdef DEBUG_CACHE2URL
47 	  fprintf(stderr,"  2ld: %s\n",t_url->twoleveldomen);
48 	  #endif
49 
50 	//get subdomen
51           if (*(k1+1)!=1)
52 	     {
53 	      k=strchr(k1+1,1);
54               memcpy(t_url->subdomen,k1+1,k-k1-1);
55 	      t_url->subdomen[k-k1-1]='.';
56 	      t_url->subdomen[k-k1]=0;
57 	     }
58 	  else
59 	     {
60 	      t_url->subdomen[0]=0;
61 	      k=k1+1;
62 	     }
63           #ifdef DEBUG_CACHE2URL
64 	  fprintf(stderr,"  sub: %s\n",t_url->subdomen);
65 	  #endif
66 
67 	  //get port
68           if (*(k+1)!=1)
69 	     {
70 	      k1=strchr(k+1,1);
71 	      t_url->port[0]=':';
72               memcpy(&t_url->port[1],k+1,k1-k-1);
73 	      t_url->port[k1-k]=0;
74 	     }
75 	  else
76 	     {
77 	      t_url->port[0]=0;
78 	      k1=k+1;
79 	     }
80           #ifdef DEBUG_CACHE2URL
81 	  fprintf(stderr,"  prt: %s\n",t_url->port);
82 	  #endif
83 
84 	  //get dirs
85           if (*(k1+1)!=1)
86 	     {
87 	      k=strchr(k1+1,0);
88               memcpy(t_url->dirs,k1+1,k-k1-1);
89 	      t_url->dirs[k-k1-2]=0;
90 	     }
91 	  else
92 	     {
93 	      t_url->dirs[0]=0;
94 	     }
95 	  #ifdef DEBUG_CACHE2URL
96 	  fprintf(stderr,"  dir: %s\n",t_url->dirs);
97 	  #endif
98  return(0);
99 }
100