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