Changeset 2092

Show
Ignore:
Timestamp:
01/22/08 05:12:24 (8 months ago)
Author:
anarcat
Message:

improve error handling in extraction code, add is_extractable functionality

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • alternc/trunk/bureau/class/m_bro.php

    r2090 r2092  
    433433    if (!$file || !$dest) { 
    434434      $err->raise("bro",1); 
    435       return false
     435      return 1
    436436    } 
    437437    $file = escapeshellarg($file); 
     
    446446      exec("unzip '$file' -d '$dest'", $void, $ret); 
    447447    } else { 
     448      $err->raise("bro","undefined extractiong error: %s", $ret); 
    448449      return $ret; 
    449450    } 
     
    451452    if ($ret) { 
    452453      $i++; 
    453       $this->ExtractFile($file, $dest); 
     454      $ret = $this->ExtractFile($file, $dest); 
     455      if ($ret) { 
     456        $err->raise("bro","could not find a way to extract file %s, unsupported format?", $file); 
     457      } 
    454458    } 
    455459    return $ret; 
     
    669673  } 
    670674 
     675  /** 
     676   * Return a HTML snippet representing an extraction function only if the mimetype of $name is supported 
     677   */ 
     678  function is_extractable($dir,$name) { 
     679    if ($parts = explode(".", $name)) { 
     680      $ext = array_pop($parts); 
     681      switch ($ext) { 
     682      case "gz": 
     683      case "bz": 
     684      case "bz2": 
     685        $ext = array_pop($parts) . $ext; 
     686        /* FALLTHROUGH */ 
     687      case "tar.gz": 
     688      case "tar.bz": 
     689      case "tar.bz2": 
     690      case "tgz": 
     691      case "tbz": 
     692      case "tbz2": 
     693      case "tar": 
     694      case "Z": 
     695      case "zip": 
     696        return true; 
     697      } 
     698    } 
     699    return false; 
     700  } 
     701 
    671702  function content_send($R,$file) { 
    672703    global $err;