Annotation of embedaddon/curl/tests/directories.pm, revision 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>