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