Annotation of embedaddon/php/ext/standard/tests/file/file.inc, revision 1.1

1.1     ! misho       1: <?php
        !             2: /* Header file for common file test functions 
        !             3:      Following functions are provided :
        !             4:        create_files() : create files with specified contents 
        !             5:        delete_files() : delete files
        !             6:        create_links() : crate links of different types
        !             7:        delete_links() : delete links 
        !             8:        fill_files()   : fill file with specified contents 
        !             9:        change_file_perms() : Change permission of files 
        !            10:        fill_buffer()  : fills buffer with specified contents
        !            11:        compare_self_stat() : compares the first 13 elements of the 
        !            12:                             stat with the corresponding named key values of
        !            13:                             the same stat.
        !            14:        compare_stats() : Compares two stat values
        !            15: 
        !            16: */ 
        !            17: 
        !            18: define('file_not_found', 2, 1);
        !            19: 
        !            20: /* 
        !            21:  Function: bool create_file(string $filename, string $mode = "w");
        !            22:  Description: creates a new file using fopen() call 
        !            23:    $filename = Name of the file 
        !            24:    $mode = Mode as specified in fopen call, read documentation of fopen() call for more info
        !            25: 
        !            26:  Returns: 
        !            27:    true on success, false otherwise
        !            28: */
        !            29: function create_file($filename, $mode = "w") {
        !            30:   $file_handle = fopen ($filename, $mode);
        !            31:   if ( $file_handle == false )
        !            32:     return false;
        !            33:   fclose($file_handle);
        !            34:   return true;
        !            35: }
        !            36: 
        !            37: /*
        !            38:  Function : bool fill_buffer(string &$buffer, string $fill_type, int $fill_size);
        !            39:  Description: Fills the $buffer with data as specified with requested size.
        !            40:    $buffer = buffer to be filled
        !            41:    $fill_type:
        !            42:        "text" = fills with string of size $file_size
        !            43:        "numeric" = fills with numeric value of size $file_size
        !            44:        "text_with_new_line" = similar to "text" fill type but writes with new line
        !            45:        "alphanumeric" = fills with alphnumeric values
        !            46:  Returns: true on success, false on invalid fill type
        !            47: */
        !            48: function fill_buffer(&$buffer, $fill_type, $fill_size) {
        !            49: 
        !            50:   if ( $fill_type == "text" ) {
        !            51:     $data = "text ";
        !            52:     $size_divider = strlen($data);
        !            53:     $add_value = strlen($data);
        !            54:   } else if ( $fill_type == "text_with_new_line" ) {
        !            55:     $data = "line\nline of text\n";
        !            56:     $size_divider = strlen($data);
        !            57:     $add_value = strlen($data);
        !            58:   } else if ( $fill_type == "alphanumeric" ) {
        !            59:     $data = "ab12 ";
        !            60:     $size_divider = strlen($data);
        !            61:     $add_value = strlen($data);
        !            62:   } else if ( $fill_type == "numeric" ) {
        !            63:     $data = 2;
        !            64:     $size_divider = 1;
        !            65:     $add_value = 0;
        !            66:   } else {
        !            67:     // invalid fill type;
        !            68:     return false;
        !            69:   }
        !            70: 
        !            71:   $tmp_buff = str_repeat($data, ($fill_size/$size_divider) + $add_value );
        !            72: 
        !            73:   if ( strlen($tmp_buff) > $fill_size ) {
        !            74:     $buffer = substr($tmp_buff, 0, $fill_size);
        !            75:   } else {
        !            76:     $buffer = $tmp_buff;
        !            77:   }
        !            78: 
        !            79:   return true;
        !            80: }
        !            81: 
        !            82: /*
        !            83:  Function : bool fill_file(resource $file_handle, string $fill_type, string $file_size);
        !            84:  Description: Fills the file with data as specified with requested size.
        !            85:    $file_handle = file handle, opened with write options,
        !            86:    $fill_type: 
        !            87:        "text" = fills with string of size $file_size
        !            88:        "numeric" = fills with numeric value of size $file_size
        !            89:        "empty" = no fill operation performed, returns true
        !            90:        "text_with_new_line" = similar to "text" fill type but writes with new line
        !            91:        "alphanumeric" = fills with alphnumeric values 
        !            92:  Returns: true on success, false on failure & invalid fill type
        !            93: */
        !            94: 
        !            95: function fill_file($file_handle, $fill_type, $file_size) {
        !            96:    
        !            97:   if ( $fill_type == "empty" ) {
        !            98:     // no fill required, return true
        !            99:     return true;
        !           100:   } if ( $fill_type == "text" ) {
        !           101:     $data = "text ";
        !           102:     $size_divider = strlen($data); 
        !           103:     $add_value = strlen($data);
        !           104:   } else if ( $fill_type == "text_with_new_line" ) {
        !           105:     $data = "line\nline of text\n";
        !           106:     $size_divider = strlen($data);
        !           107:     $add_value = strlen($data);
        !           108:   } else if ( $fill_type == "alphanumeric" ) {
        !           109:     $data = "ab12 ";
        !           110:     $size_divider = strlen($data);
        !           111:     $add_value = strlen($data);
        !           112:   } else if ( $fill_type == "numeric" ) {
        !           113:     $data = 2;
        !           114:     $size_divider = 1;
        !           115:     $add_value = 0;
        !           116:   } else { 
        !           117:     // invalid fill type;
        !           118:     return false;
        !           119:   }
        !           120: 
        !           121:   // write in terms of a chunk of 1 K to avoid memory size overflow
        !           122:   $size = $file_size;
        !           123:   $chunk_size = 1024;
        !           124:   if ( $size > $chunk_size ) {
        !           125:     $loop_count = 1;
        !           126:     do {
        !           127:       $loop_count ++; 
        !           128:       if ( $size <= $chunk_size ) {
        !           129:         $chunk_size = $size;
        !           130:       }
        !           131:       $num_values = str_repeat($data, ($chunk_size/$size_divider) + $add_value );
        !           132:       $bytes_written = fwrite($file_handle, $num_values, $chunk_size);
        !           133:       if ( $bytes_written != $chunk_size ) {
        !           134:             return false;
        !           135:       }
        !           136:       $size -= $chunk_size;
        !           137:     } while ( $size > 0 );
        !           138:   } else {
        !           139:     $num_values = str_repeat($data, ($chunk_size/$size_divider) + $add_value );
        !           140:     $bytes_written = fwrite($file_handle, $num_values, $file_size);
        !           141:     if ( $bytes_written != $file_size ) {
        !           142:       return false;
        !           143:     }
        !           144:   }
        !           145:   
        !           146:   // successful, return true
        !           147:   return true;
        !           148: }
        !           149: 
        !           150: /*
        !           151:  Function: int change_file_perms(string $file_path, int $count = 1, int $perms = 0755, 
        !           152:                                  string $name_prefix = "file", 
        !           153:                                  string $name_suffix = 1, $file_extension = ".tmp");
        !           154:  Description: changes file permission for given file(s).
        !           155:    $file_path = dir path where file exists
        !           156:    $count = no. of files, default is 1
        !           157:    $perms = new permission of the file, similar to $mode args of chmod() call
        !           158:    $name_prefix = common name prefix, default is "file"
        !           159:    $name_suffix = suffix to end the common name given in name_prefix to create
        !           160:       a unique name. default is 1. 
        !           161:    $file_extension = default is .tmp
        !           162:  Returns:
        !           163:    Integer, Count of total files permission changed.
        !           164: */
        !           165: function change_file_perms($file_path,
        !           166:                            $count = 1, 
        !           167:                            $perms = 0755, 
        !           168:                            $name_prefix = "file", 
        !           169:                            $name_suffix = 1, 
        !           170:                            $file_extension = ".tmp" ) 
        !           171: {
        !           172:   $changed = 0;
        !           173: 
        !           174:   if( $count <= 0 ) 
        !           175:     return $changed;
        !           176: 
        !           177:   if ( $name_suffix <= 0)
        !           178:     $name_suffix = 1;
        !           179: 
        !           180:   for($loop_counter = 1; $loop_counter <= $count; $loop_counter++) {
        !           181:     $filename = $file_path."/".$name_prefix.$name_suffix.$file_extension;
        !           182:     if( chmod($filename, $perms) )
        !           183:       $changed++;
        !           184:     $name_suffix++;
        !           185:   } 
        !           186:   return $changed;
        !           187: }
        !           188: 
        !           189: /* 
        !           190:  Function: array create_files( string $file_path,
        !           191:                                int $count = 1,
        !           192:                                string $content_type = "numeric", 
        !           193:                                int $permission = 0755, 
        !           194:                                int $size = 1,
        !           195:                                string $mode = "w", 
        !           196:                                string $name_prefix = "file", 
        !           197:                                int $name_suffix = 1,
        !           198:                                string $flag = "kilobytes"
        !           199:                                string $file_extension = ".tmp"
        !           200:                              );
        !           201:  Description: Creates given number of files with specified mode and 
        !           202:    permissions. File is filled with content of size specified.
        !           203:    $file_path = dir where files will be created
        !           204:    $name_prefix = prefix to be used for names, name is suffix with a 
        !           205:      unqiue numeric value to make the file name unique, default = file
        !           206:    $name_suffix = suffix to be used for the name, default = 1
        !           207:    $count = total no. of files to be created, default = 1
        !           208:    $mode = file open mode as specified in fopen() call. Do not use 
        !           209:      modes used for only reading the file. Default = "w"
        !           210:    $permission = An octal number, This should be similar to $mode 
        !           211:      specified in chmod() call. 
        !           212:    $content_type = Specify type of the content to fill in the file. 
        !           213:      "numeric" = fill file with numeric vlaues
        !           214:      "text" = fill file with regular text
        !           215:      "empty" = empty file
        !           216:      "text_with_new_line" = similar to text fill type, but writes with new line char
        !           217:      "alphanumeric" = fill file with alpha numeric text
        !           218:      If imporper $content type is specified, file is created as empty
        !           219:    $size = size of the fill in terms of kilobyte, i.e size of the file.
        !           220:            if $flag is specified as "byte", then then given size is taken in bytes
        !           221:    $flag = specifiy if size has to be treated as no of total bytes or 
        !           222:            multiple of KB.
        !           223:      "kilobytes" = take size in terms of multiple of KB
        !           224:      "byte" = take size in terms of bytes 
        !           225:    $file_extension = default is .tmp
        !           226: 
        !           227:  Returns:
        !           228:    An array with following key value pair:
        !           229:      created => total file created
        !           230:      filled => total files filled 
        !           231:      perms_changed => total files permission changed
        !           232: */
        !           233: function create_files( $file_path,
        !           234:                        $count = 1,
        !           235:                        $content_type = "numeric",
        !           236:                        $permission = 0755,
        !           237:                        $size = 1,
        !           238:                        $mode = "w",
        !           239:                        $name_prefix = "file",
        !           240:                        $name_suffix = 1,
        !           241:                        $flag = "kilobytes",
        !           242:                        $file_extension = ".tmp"
        !           243:                      )
        !           244: {
        !           245:   $return_value = array('created' => 0, 'filled' => 0, 'perms_changed' => 0);
        !           246: 
        !           247:   //ensure that suffix is a +ve integer
        !           248:   if ($name_suffix <= 0) {
        !           249:     $name_suffix = 1;
        !           250:   }
        !           251: 
        !           252:   // check for proper size
        !           253:   if ( $size == 0 )
        !           254:     return $return_value;
        !           255: 
        !           256:   // prepare the size based on flag 
        !           257:   $file_size = $size;
        !           258:   if ( $flag == "kilobytes" ) {
        !           259:     $file_size = $file_size * 1024;
        !           260:   }
        !           261: 
        !           262:   $tmp_name_suffix = $name_suffix;
        !           263:   // create the files with specified mode and permission
        !           264:   for($file_created_count = 1; $file_created_count <= $count; $file_created_count ++) {
        !           265:     $filename = $file_path."/".$name_prefix.$tmp_name_suffix.$file_extension;
        !           266: 
        !           267:     $status = create_file($filename, $mode);
        !           268: 
        !           269:     $tmp_name_suffix++;
        !           270: 
        !           271:     if ($status == true) {
        !           272:       $return_value['created']++;
        !           273:     }
        !           274:     else {
        !           275:       return $return_value;
        !           276:     }
        !           277:   }
        !           278: 
        !           279:   if ( $content_type == "empty" ) {
        !           280:     $return_value['filled'] = $count;
        !           281:   } else {
        !           282:     // fill the file with specifiec type of data and size
        !           283:     $tmp_name_suffix = $name_suffix;
        !           284:     for($loop_counter = 1; $loop_counter <= $count; $loop_counter ++) {
        !           285:       $filename = $file_path."/".$name_prefix.$tmp_name_suffix.$file_extension;
        !           286:       $file_handle = fopen($filename, $mode);
        !           287:       if($file_handle == false) {
        !           288:         fclose($file_handle);
        !           289:         return $return_value;
        !           290:       } // end of if
        !           291:  
        !           292:       // call fill_file() to fill the file 
        !           293:       if( fill_file($file_handle, $content_type, $file_size) )
        !           294:         $return_value['filled']++;
        !           295:     
        !           296:       fclose($file_handle);
        !           297: 
        !           298:       $tmp_name_suffix++;
        !           299:     } // end of for
        !           300:   }
        !           301: 
        !           302:   // change all file's permissions
        !           303:   $return_value['perms_changed'] = change_file_perms($file_path, $count, $permission, $name_prefix, 
        !           304:                                                      $name_suffix, $file_extension);
        !           305:   
        !           306:   return $return_value;
        !           307: }
        !           308: 
        !           309: 
        !           310: /*
        !           311:  Function: function create_links( $file_path,
        !           312:                       $filename,
        !           313:                        $link_count = 1,
        !           314:                        $link_type = "soft",
        !           315:                        $link_size = 1024,
        !           316:                        $link_name_prefix = "link",
        !           317:                        $link_name_suffix = 1,
        !           318:                        $link_file_content = "text",
        !           319:                        $link_perms = 0755,
        !           320:                        $link_file_extension = ".tmp"
        !           321:                      );
        !           322: 
        !           323:  Description: Creates given number of links with specified mode and
        !           324:    permissions.Link is filled with content of size specified.
        !           325:    $file_path = location of the file and where links need to be created
        !           326:    $link_name_prefix = prefix to be used for names, name is suffix with a
        !           327:      unique numeric value to make the file name unique, default = link
        !           328:    $link_name_suffix = suffix to be used for the name, default = 1
        !           329:    $link_count = total no. of links to be created to given file, default = 1
        !           330:    $link_perms = An octal number, This should be similar to $mode
        !           331:      specified in chmod() call.
        !           332:    $link_file_content = Type of the content to fill in the file.
        !           333:      numeric = fill file with numeric vlaues
        !           334:      text = fill file with regular text
        !           335:      text_with_new_line = same as text but new lines are written
        !           336:      alphanumeric = fill with alphanumeric text
        !           337:      If imporper $content type is specified, file is created as empty
        !           338:    $size = size of the fill in terms of kilobyte, i.e size of the file.
        !           339:    $link_type = type of the link to be created 
        !           340:       "soft" = soft link 
        !           341:       "hard" = hard link
        !           342:    $filename = file used to create a link on
        !           343: 
        !           344:  Returns:
        !           345:    An array with following key value pair:
        !           346:      created => total file created
        !           347:      filled => total files filled, always returned as 1
        !           348:      perms_changed => total files permission changed
        !           349: */
        !           350: function create_links($file_path,
        !           351:                       $filename,
        !           352:                       $link_count = 1,
        !           353:                       $link_type = "soft",
        !           354:                       $link_size = 1024,
        !           355:                       $link_name_prefix = "link",
        !           356:                       $link_name_suffix = 1,
        !           357:                       $link_file_content = "text",
        !           358:                       $link_perms = 0755,
        !           359:                       $link_file_extension = ".tmp"
        !           360:                      )
        !           361: {
        !           362:   $return_value = array('created' => 0, 'filled' => 0, 'perms_changed' => 0);
        !           363:   $tmp_name_suffix = $link_name_suffix;
        !           364:   $src_filename = $file_path."/".$filename;
        !           365:   switch( $link_type ) {
        !           366:     default :
        !           367:     case "soft" :  // create a soft link
        !           368:       for($link_created_count = 1; $link_created_count <= $link_count; $link_created_count++) {
        !           369:         $linkname = $file_path."/".$link_name_prefix.$tmp_name_suffix.$link_file_extension;
        !           370:         $status = symlink( $src_filename, $linkname);
        !           371:         $tmp_name_suffix++;
        !           372:         if ($status) {
        !           373:           $return_value['created']++;
        !           374:         }
        !           375:         else {
        !           376:           $return_value;
        !           377:         }
        !           378:       }
        !           379:       break;
        !           380: 
        !           381:     case "hard" :  // create a hard link
        !           382:       for($link_created_count = 1; $link_created_count <= $link_count; $link_created_count++) {
        !           383:         $linkname = $file_path."/".$link_name_prefix.$tmp_name_suffix.$link_file_extension;
        !           384:         $status = link($src_filename, $linkname);
        !           385:         $tmp_name_suffix++;
        !           386:         if ($status) {
        !           387:           $return_value['created']++;
        !           388:         }
        !           389:         else {
        !           390:           $return_value;
        !           391:         }
        !           392:       }
        !           393:       break;
        !           394:   }
        !           395:   
        !           396:   if ( $link_file_content == "empty" ) {
        !           397:     $return_value['filled'] = 1;
        !           398:     return $return_value;
        !           399:   }
        !           400:   
        !           401:   // fill the file with specific type of data and size
        !           402:   $tmp_name_suffix = $link_name_suffix;
        !           403:   $linkname = $file_path."/".$link_name_prefix.$tmp_name_suffix.$link_file_extension;
        !           404:   $file_handle = fopen($linkname, "w");
        !           405:   if($file_handle == false) {
        !           406:     return $return_value;
        !           407:   } // end of if
        !           408:  
        !           409:   // call fill_file() to fill the file 
        !           410:   if( fill_file($file_handle, $link_file_content, $link_size) )
        !           411:     $return_value['filled']++;
        !           412: 
        !           413:   // close the link
        !           414:   fclose($file_handle);
        !           415: 
        !           416:   // change the permission of the link file, only if hard link.
        !           417:   // this is not applicable to soft links
        !           418:   if( $link_type == "hard" ) { 
        !           419:     $return_value['perms_changed'] = change_file_perms($file_path, 
        !           420:                                                         $link_count, 
        !           421:                                                         $link_perms, 
        !           422:                                                         $link_name_prefix, 
        !           423:                                                         $link_name_suffix,
        !           424:                                                         $link_file_extension );
        !           425:   }
        !           426: 
        !           427:   return $return_value;
        !           428: }
        !           429: 
        !           430: /* 
        !           431:  Function: bool delete_file(string $filename);
        !           432:  Description: delete a given file if exists 
        !           433:  Returns: true on success  
        !           434:           false on failure
        !           435:           file_not_found if file doesn't exist
        !           436: */
        !           437: function delete_file($filename) {
        !           438:   // check if file exists
        !           439:   if ( file_exists($filename) ) {
        !           440:     if ( unlink($filename) )
        !           441:       return true;
        !           442:     else
        !           443:       return false;
        !           444:   }
        !           445:   return file_not_found;
        !           446: }
        !           447: 
        !           448: /*
        !           449:  Function: array delete_files(string $file_path, int $count = 1, string $name_prefix = "file", 
        !           450:                               int name_suffix = 1, $file_extension = ".tmp" );
        !           451:  Description: Deletes given number of files if exists.
        !           452:    $file_path = location of the files
        !           453:    $name_prefix = prefix for the filename, rest of the name is incremental(increment by 1 only)
        !           454:      numeric starting from suffix upto count
        !           455:    $count = number of files to be deleted
        !           456:    $name_suffix = first numeric suffix in the name
        !           457:  Returns: An array with following key/value pair
        !           458:    deleted = Number of files deleted.
        !           459:    notfound = Count of non existing file
        !           460:    failed = Count of failed to delete
        !           461: */
        !           462: function delete_files($file_path,
        !           463:                       $count = 1, 
        !           464:                       $name_prefix = "file", 
        !           465:                       $name_suffix = 1, 
        !           466:                       $file_extension = ".tmp") 
        !           467: {
        !           468:   $return_value = array ('deleted' => 0, 'notfound' => 0, 'failed' => 0);
        !           469: 
        !           470:   if ( $name_suffix < 1 )
        !           471:     $name_suffix = 1; 
        !           472:   for($loop_counter = 1; $loop_counter <= $count; $loop_counter++) {
        !           473:     $filename = $file_path."/".$name_prefix.$name_suffix.$file_extension;
        !           474:     $name_suffix++;
        !           475:     $status = delete_file($filename);
        !           476:     if($status == true) {
        !           477:       $return_value['deleted']++;
        !           478:     } else if($status == file_not_found) {
        !           479:       $return_value['notfound']++;
        !           480:     } else {
        !           481:       $return_value['failed']++;
        !           482:     }
        !           483:     
        !           484:   } // end of for
        !           485:   return $return_value;
        !           486: }
        !           487: 
        !           488: /*
        !           489:  Function: array delete_links( $file_path, 
        !           490:                                $link_file_count, 
        !           491:                                $link_name_prefix, 
        !           492:                                $link_name_suffix, 
        !           493:                                $link_file_extension );
        !           494:  Description: Deletes given number of links if exists. Uses delete_files() function
        !           495:    $file_path = location of link files 
        !           496:    $link_file_count = Number of link files 
        !           497:    $link_name_prefix = prefix for the linkname, rest of the name is incremental(increment by 1 only)
        !           498:      numeric starting from $link_name_suffix upto count
        !           499:    $link_name_suffix = first numeric suffix in the name
        !           500: 
        !           501:  Returns: An array with following key/value pair
        !           502:    deleted = Number of links deleted.
        !           503:    notfound = Count of non existing link
        !           504:    failed = Count of failed to delete
        !           505: */
        !           506: function delete_links($file_path,
        !           507:                       $link_file_count = 1, 
        !           508:                       $link_name_prefix = "link", 
        !           509:                       $link_name_suffix = 1, 
        !           510:                       $link_file_extension = ".tmp") 
        !           511: {
        !           512:    // call the delete files to delete links 
        !           513:    $return_value = delete_files( $file_path, 
        !           514:                                  $link_file_count, 
        !           515:                                  $link_name_prefix, 
        !           516:                                  $link_name_suffix, 
        !           517:                                  $link_file_extension );
        !           518:    return $return_value;
        !           519: }
        !           520: 
        !           521: 
        !           522: 
        !           523: /*
        !           524:  Prototype:
        !           525:   function compare_self_stat( array $stat );
        !           526:  Description:
        !           527:   Compares the each of the first 13 values of the stat array with the 
        !           528:   corresponding next 13 values of the same stat for equality
        !           529:   $stat = stat array
        !           530: 
        !           531:  Retuns: true when all of them match, false otherwise
        !           532: */
        !           533: function compare_self_stat( array $stat )
        !           534: {
        !           535:   //return value
        !           536:   $return_value = true;
        !           537: 
        !           538:   // named keys present in a stat
        !           539:   $string_keys = array("dev", "ino", "mode", "nlink", "uid", "gid", 
        !           540:                        "rdev", "size", "atime", "mtime", "ctime",
        !           541:                        "blksize", "blocks");
        !           542: 
        !           543:   // first numeric key
        !           544:   $key = 0;
        !           545: 
        !           546:   // compare the values in the stat, which are accessed using numeric key with
        !           547:   // values accessed using string keys
        !           548:   foreach($string_keys as $str_key)
        !           549:   {
        !           550:     if($stat[$key] != $stat[$str_key]) {
        !           551:       echo "Error: stat[$key] doesn't match with stat[$str_key]\n";
        !           552:       $flag = false;
        !           553:       $key++;
        !           554:     }
        !           555:     else {
        !           556:       $key++;
        !           557:     }
        !           558:   } // end of foreach
        !           559: 
        !           560:   // if the $return_value is false, i.e all the element do not match then 
        !           561:   // dump the stat array so that its easy to figure out the error
        !           562:   if ($return_value == false ) {
        !           563:     echo "\n Dumping stat array ...\n";
        !           564:     var_dump($stat);
        !           565:   }
        !           566: 
        !           567:   return $return_value;
        !           568: }// end of compare_self_stat
        !           569: 
        !           570: /*
        !           571: Prototype:
        !           572:   function compare_stats( array $stat1, array $stat2, array $fields, 
        !           573:                           [string $op = "==", [ bool $flag = false] ]);
        !           574: Description:
        !           575:   Compares two stat values, stat value should be obtained by stat/lstat
        !           576:   $stat1 = first stat array
        !           577:   $stat2 = second stat array
        !           578:   $op = type of the comparision to be perform between elements of stat1 and stat2
        !           579:     "!=" compare for not equal
        !           580:     "==" compare for equality
        !           581:     ">"  if each element of stat1 is > than stat2
        !           582:     "<"  if each element of stat1 is < than stat2
        !           583:   $fields = contains the key of the elements that needs to be compared. 
        !           584:             type of the comparision is based on $op argument value
        !           585:   $flag = specify true to dump the stat1 and stat2 
        !           586: */
        !           587: 
        !           588: $all_stat_keys = array(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 
        !           589:                        "dev", "ino", "mode", "nlink", "uid", "gid",
        !           590:                        "rdev", "size", "atime", "mtime", "ctime",
        !           591:                        "blksize", "blocks");
        !           592: 
        !           593: function compare_stats($stat1, $stat2, $fields, $op = "==", $flag = false ) {
        !           594:   // dump the stat if requested
        !           595:   if ( $flag == true ) {
        !           596:     var_dump($stat1);
        !           597:     var_dump($stat2);
        !           598:   }
        !           599: 
        !           600:   $result = true;
        !           601: 
        !           602:   // compare values of given key from each stat array 
        !           603:   for($index = 0; $index < count($fields); $index++) 
        !           604:   {
        !           605:     switch( $op )
        !           606:     {
        !           607:        case "==":
        !           608:          if ( $stat1[ $fields[$index] ] != $stat2[ $fields[$index] ] ) {
        !           609:            $result = false;
        !           610:            echo "Error: stat1 do not match with stat2 at key value: $fields[$index]\n";
        !           611:          }
        !           612:          break;
        !           613: 
        !           614:        case "!=":
        !           615:          if ( $stat1[ $fields[$index] ] != $stat2[ $fields[$index] ] ) {
        !           616:            // do nothing as its not equal, else will take care of if equal
        !           617:          } else {
        !           618:            $result = false;
        !           619:            echo "Error: stat1 equals stat2 at key value: $fields[$index]\n";
        !           620:          }
        !           621:          break;
        !           622: 
        !           623:        case ">":
        !           624:          if ( $stat1[ $fields[$index] ] <= $stat2[ $fields[$index] ] ) {
        !           625:            $result = false;
        !           626:            echo "Error: stat1 is not greater than stat2 at key value: $fields[$index]\n";
        !           627:          }
        !           628:          break;
        !           629: 
        !           630:        case "<":
        !           631:          if ( $stat1[ $fields[$index] ] >= $stat2[ $fields[$index] ] ) {
        !           632:            $result = false;
        !           633:            echo "Error: stat1 is not lesser than stat2 at key value: $fields[$index]\n";
        !           634:          }
        !           635:          break;
        !           636:     }
        !           637:   }
        !           638:   // if the result is false(i.e values are not as expected), 
        !           639:   // dump the stat array so that easy to figure out the error
        !           640:   if ( $result == false ) {
        !           641:     echo "\n Dumping stat array 1...\n";
        !           642:     var_dump($stat1);
        !           643:     echo "\n Dumping stat array 2...\n";
        !           644:     var_dump($stat2);
        !           645:   }
        !           646: 
        !           647:   return $result;
        !           648: }
        !           649: 
        !           650: ?>

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