tizen 2.3.1 release
[external/curl.git] / tests / directories.pm
1 #***************************************************************************
2 #                                  _   _ ____  _
3 #  Project                     ___| | | |  _ \| |
4 #                             / __| | | | |_) | |
5 #                            | (__| |_| |  _ <| |___
6 #                             \___|\___/|_| \_\_____|
7 #
8 # Copyright (C) 1998 - 2011, Daniel Stenberg, <daniel@haxx.se>, et al.
9 #
10 # This software is licensed as described in the file COPYING, which
11 # you should have received as part of this distribution. The terms
12 # are also available at http://curl.haxx.se/docs/copyright.html.
13 #
14 # You may opt to use, copy, modify, merge, publish, distribute and/or sell
15 # copies of the Software, and permit persons to whom the Software is
16 # furnished to do so, under the terms of the COPYING file.
17 #
18 # This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
19 # KIND, either express or implied.
20 #
21 ###########################################################################
22 %file_chmod1 = (
23   'name'      => 'chmod1',
24   'content'   => "This file should have permissions 444\n",
25   'perm'      => 'r--r--r--',
26   'time'      => 'Jan 11 10:00',
27   'dostime'   => '01-11-10  10:00AM',
28 );
29
30 %file_chmod2 = (
31   'name'      => 'chmod2',
32   'content'   => "This file should have permissions 666\n",
33   'perm'      => 'rw-rw-rw-',
34   'time'      => 'Feb  1  8:00',
35   'dostime'   => '02-01-10  08:00AM',
36 );
37
38 %file_chmod3 = (
39   'name'      => 'chmod3',
40   'content'   => "This file should have permissions 777\n",
41   'perm'      => 'rwxrwxrwx',
42   'time'      => 'Feb  1  8:00',
43   'dostime'   => '02-01-10  08:00AM',
44 );
45
46 %file_chmod4 = (
47   'type'      => 'd',
48   'name'      => 'chmod4',
49   'content'   => "This file should have permissions 001\n",
50   'perm'      => '--S--S--t',
51   'time'      => 'May  4  4:31',
52   'dostime'   => '05-04-10  04:31AM'
53 );
54
55 %file_chmod5 = (
56   'type'      => 'd',
57   'name'      => 'chmod5',
58   'content'   => "This file should have permissions 110\n",
59   'perm'      => '--s--s--T',
60   'time'      => 'May  4  4:31',
61   'dostime'   => '05-04-10  04:31AM'
62 );
63
64 %link_link = (
65   'type'      => 'l',
66   'name'      => 'link -> file.txt',
67   'size'      => '8',
68   'perm'      => 'rwxrwxrwx',
69   'time'      => 'Jan  6  4:42'
70 );
71
72 %link_link_absolute = (
73   'type'      => 'l',
74   'name'      => 'link_absolute -> /data/ftp/file.txt',
75   'size'      => '15',
76   'perm'      => 'rwxrwxrwx',
77   'time'      => 'Jan  6  4:45'
78 );
79
80 %dir_dot = (
81   'type'      => "d",
82   'name'      => ".",
83   'hlink'     => "4",
84   'time'      => "Apr 27  5:12",
85   'size'      => "20480",
86   'dostime'   => "04-27-10  05:12AM",
87   'perm'      => "rwxrwxrwx"
88 );
89
90 %dir_ddot = (
91   'type'      => "d",
92   'name'      => "..",
93   'hlink'     => "4",
94   'size'      => "20480",
95   'time'      => "Apr 23  3:12",
96   'dostime'   => "04-23-10  03:12AM",
97   'perm'      => "rwxrwxrwx"
98 );
99
100 %dir_weirddir_txt = (
101   'type'      => "d",
102   'name'      => "weirddir.txt",
103   'hlink'     => "2",
104   'size'      => "4096",
105   'time'      => "Apr 23  3:12",
106   'dostime'   => "04-23-10  03:12AM",
107   'perm'      => "rwxr-xrwx"
108 );
109
110 %dir_UNIX = (
111   'type'      => "d",
112   'name'      => "UNIX",
113   'hlink'     => "11",
114   'size'      => "4096",
115   'time'      => "Nov 01  2008",
116   'dostime'   => "11-01-08  11:11AM",
117   'perm'      => "rwx--x--x"
118 );
119
120 %dir_DOS = (
121   'type'      => "d",
122   'name'      => "DOS",
123   'hlink'     => "11",
124   'size'      => "4096",
125   'time'      => "Nov 01  2008",
126   'dostime'   => "11-01-08  11:11AM",
127   'perm'      => "rwx--x--x"
128 );
129
130 %dir_dot_NeXT = (
131   'type'      => "d",
132   'name'      => ".NeXT",
133   'hlink'     => "4",
134   'size'      => "4096",
135   'time'      => "Jan 23  2:05",
136   'dostime'   => "01-23-05  02:05AM",
137   'perm'      => "rwxrwxrwx"
138 );
139
140 %file_empty_file_dat = (
141   'name'      => "empty_file.dat",
142   'content'   => "",
143   'perm'      => "rw-r--r--",
144   'time'      => "Apr 27 11:01",
145   'dostime'   => "04-27-10  11:01AM"
146 );
147
148 %file_file_txt = (
149   'name'      => "file.txt",
150   'content'   => "This is content of file \"file.txt\"\n",
151   'time'      => "Apr 27 11:01",
152   'dostime'   => "04-27-10  11:01AM",
153   'perm'      => "rw-r--r--"
154 );
155
156 %file_someothertext_txt = (
157   'name'      => "someothertext.txt",
158   'content'   => "Some junk ;-) This file does not really exist.\n",
159   'time'      => "Apr 27 11:01",
160   'dostime'   => "04-27-10  11:01AM",
161   'perm'      => "rw-r--r--"
162 );
163
164 %lists = (
165   '/fully_simulated/' => {
166     'files'   => [ \%dir_dot, \%dir_ddot, \%dir_DOS, \%dir_UNIX ],
167     'eol'     => "\r\n",
168     'type'    => "unix"
169   },
170   '/fully_simulated/UNIX/' => {
171     'files'   => [ \%dir_dot, \%dir_ddot,
172                    \%file_chmod1, \%file_chmod2, \%file_chmod3, \%file_chmod4, \%file_chmod5,
173                    \%file_empty_file_dat, \%file_file_txt,
174                    \%link_link, \%link_link_absolute, \%dir_dot_NeXT,
175                    \%file_someothertext_txt, \%dir_weirddir_txt ],
176     'eol'     => "\r\n",
177     'type'    => 'unix'
178   },
179   '/fully_simulated/DOS/' => {
180     'files'   => [ \%dir_dot, \%dir_ddot,
181                    \%file_chmod1, \%file_chmod2, \%file_chmod3, \%file_chmod4, \%file_chmod5,
182                    \%file_empty_file_dat, \%file_file_txt,
183                    \%dir_dot_NeXT, \%file_someothertext_txt, \%dir_weirddir_txt ],
184     'eol'     => "\r\n",
185     'type'    => 'dos'
186   }
187 );
188
189 sub ftp_createcontent($) {
190   my (%list) = @_;
191
192   $type = $$list{'type'};
193   $eol  = $$list{'eol'};
194   $list_ref = $$list{'files'};
195
196   my @diroutput;
197   my @contentlist;
198   if($type eq "unix") {
199     for(@$list_ref) {
200       my %file = %$_;
201       my $line = "";
202       my $ftype  = $file{'type'}  ? $file{'type'}  : "-";
203       my $fperm  = $file{'perm'}  ? $file{'perm'}  : "rwxr-xr-x";
204       my $fuser  = $file{'user'}  ? sprintf("%15s", $file{'user'})   : "ftp-default";
205       my $fgroup = $file{'group'} ? sprintf("%15s", $file{'group'})  : "ftp-default";
206       my $fsize = "";
207       if($file{'type'} eq "d") {
208         $fsize = $file{'size'} ? sprintf("%7s", $file{'size'}) : sprintf("%7d", 4096);
209       }
210       else {
211         $fsize = sprintf("%7d", length $file{'content'});
212       }
213       my $fhlink = $file{'hlink'} ? sprintf("%4d",  $file{'hlink'})  : "   1";
214       my $ftime  = $file{'time'}  ? sprintf("%10s", $file{'time'})   : "Jan 9  1933";
215       push(@contentlist, "$ftype$fperm $fhlink $fuser $fgroup $fsize $ftime $file{'name'}$eol");
216     }
217
218     return @contentlist;
219   }
220   elsif($type =~ /^dos$/) {
221     for(@$list_ref) {
222       my %file = %$_;
223       my $line = "";
224       my $time = $file{'dostime'} ? $file{'dostime'} : "06-25-97  09:12AM";
225       my $size_or_dir;
226       if($file{'type'} =~ /^d$/) {
227         $size_or_dir = "      <DIR>         ";
228       }
229       else {
230         $size_or_dir = sprintf("%20d", length $file{'content'});
231       }
232       push(@contentlist, "$time $size_or_dir $file{'name'}$eol");
233     }
234     return @contentlist;
235   }
236 }
237
238 sub wildcard_filesize($$) {
239   my ($list_type, $file) = @_;
240   $list = $lists{$list_type};
241   if($list) {
242     my $files = $list->{'files'};
243     for(@$files) {
244       my %f = %$_;
245       if ($f{'name'} eq $file) {
246         if($f{'content'}) {
247           return length $f{'content'};
248         }
249         elsif ($f{'type'} ne "d"){
250           return 0;
251         }
252         else {
253           return -1;
254         }
255       }
256     }
257   }
258   return -1;
259 }
260 sub wildcard_getfile($$) {
261   my ($list_type, $file) = @_;
262   $list = $lists{$list_type};
263   if($list) {
264     my $files = $list->{'files'};
265     for(@$files) {
266       my %f = %$_;
267       if ($f{'name'} eq $file) {
268         if($f{'content'}) {
269           return (length $f{'content'}, $f{'content'});
270         }
271         elsif ($f{'type'} ne "d"){
272           return (0, "");
273         }
274         else {
275           return (-1, 0);
276         }
277       }
278     }
279   }
280   return (-1, 0);
281 }
282
283 sub ftp_contentlist {
284   my $listname = $_[0];
285   $list = $lists{$listname};
286   return ftp_createcontent(\$list);
287 }