Esempio n. 1
0
     $pos1 = strrpos($data['filename'], '/');
     if ($pos1) {
         $data['dir'] = substr($data['filename'], 0, $pos1);
         $data['file'] = substr($data['filename'], $pos1 + 1);
     } else {
         $data['dir'] = '';
         $data['file'] = $data['filename'];
     }
 }
 $data['size'] = octdec(trim($data['size']));
 $data['mtime'] = octdec(trim($data['mtime']));
 $data['typeflag'] = octdec(trim($data['typeflag']));
 if ($data['typeflag'] === '5') {
     $data['size'] = 0;
     if ($write_local) {
         xs_create_dir($save_filename);
     }
 }
 $data['offset'] = $pos;
 $contents = $data['size'] > 0 ? substr($str, $pos, $data['size']) : '';
 $data['tmp'] = '';
 // adding to list
 $is_file = true;
 if (intval($data['typeflag']) == 5) {
     $is_file = false;
     if ($data['filename']) {
         $dirs[] = $data['filename'];
     }
 } else {
     if ($data['filename']) {
         if (!$list_only) {
Esempio n. 2
0
function xs_create_dir($dir)
{
    if (!$dir) {
        return false;
    }
    // remove trailing /
    if (substr($dir, strlen($dir) - 1) === '/') {
        $dir = substr($dir, 0, strlen($dir) - 1);
        if (!$dir) {
            return false;
        }
    }
    if ($dir === '.' || $dir === '..') {
        return false;
    }
    $res = @mkdir($dir, 0777);
    if ($res) {
        return true;
    }
    // try to create previous directory
    $pos = strrpos($dir, '/');
    if (!$pos) {
        return false;
    }
    $dir1 = substr($dir, 0, $pos);
    $dir2 = substr($dir, $pos + 1);
    if ($dir2 === '.' || $dir2 === '..') {
        return false;
    }
    if (!xs_create_dir($dir1)) {
        return false;
    }
    $res = @mkdir($dir2, 0777);
    return $res ? true : false;
}