Annotation of embedaddon/curl/tests/directories.pm, revision 1.1.1.1

1.1       misho       1: #***************************************************************************
                      2: #                                  _   _ ____  _
                      3: #  Project                     ___| | | |  _ \| |
                      4: #                             / __| | | | |_) | |
                      5: #                            | (__| |_| |  _ <| |___
                      6: #                             \___|\___/|_| \_\_____|
                      7: #
                      8: # Copyright (C) 1998 - 2020, 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 https://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: }

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>