note 88746 added to function.gzwrite

From: Date: Thu, 05 Feb 2009 16:07:17 +0000
Subject: note 88746 added to function.gzwrite
Groups: php.notes 
Request: Send a blank email to php-notes+get-150257@lists.php.net to get a copy of this message
gz compression is often used with tar archives. Building tar archives is quite easy. Here is a code snipplet which can be used for building tar archives before compressing them to tar.gz. <?php //\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\ // Adds file header to the tar file, it is used before adding file content. // f: file resource (provided by eg. fopen) // phisfn: path to file // archfn: path to file in archive, directory names must be followed by '/' //\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\ function TarAddHeader($f,$phisfn,$archfn) { $info=stat($phisfn); $ouid=sprintf("%6s ", decoct($info[4])); $ogid=sprintf("%6s ", decoct($info[5])); $omode=sprintf("%6s ", decoct(fileperms($phisfn))); $omtime=sprintf("%11s", decoct(filemtime($phisfn))); if (@is_dir($phisfn)) { $type="5"; $osize=sprintf("%11s ", decoct(0)); } else { $type=''; $osize=sprintf("%11s ", decoct(filesize($phisfn))); clearstatcache(); } $dmajor = ''; $dminor = ''; $gname = ''; $linkname = ''; $magic = ''; $prefix = ''; $uname = ''; $version = ''; $chunkbeforeCS=pack("a100a8a8a8a12A12",$archfn, $omode, $ouid, $ogid, $osize, $omtime); $chunkafterCS=pack("a1a100a6a2a32a32a8a8a155a12", $type, $linkname, $magic, $version, $uname, $gname, $dmajor, $dminor ,$prefix,''); $checksum = 0; for ($i=0; $i<148; $i++) $checksum+=ord(substr($chunkbeforeCS,$i,1)); for ($i=148; $i<156; $i++) $checksum+=ord(' '); for ($i=156, $j=0; $i<512; $i++, $j++) $checksum+=ord(substr($chunkafterCS,$j,1)); fwrite($f,$chunkbeforeCS,148); $checksum=sprintf("%6s ",decoct($checksum)); $bdchecksum=pack("a8", $checksum); fwrite($f,$bdchecksum,8); fwrite($f,$chunkafterCS,356); return true; } //\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/ // Writes file content to the tar file must be called after a TarAddHeader // f:file resource provided by fopen // phisfn: path to file //\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/ function TarWriteContents($f,$phisfn) { if (@is_dir($phisfn)) { return; } else { $size=filesize($phisfn); $padding=$size % 512 ? 512-$size%512 : 0; $f2=fopen($phisfn,"rb"); while (!feof($f2)) fwrite($f,fread($f2,1024*1024)); $pstr=sprintf("a%d",$padding); fwrite($f,pack($pstr,'')); } } //\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/ // Adds 1024 byte footer at the end of the tar file // f: file resource //\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/ function TarAddFooter($f) { fwrite($f,pack('a1024','')); } ?> ---- Server IP: 92.43.200.200 Probable Submitter: 85.66.106.153 ---- Manual Page -- http://www.php.net/manual/en/function.gzwrite.php Edit -- https://master.php.net/note/edit/88746 Del: integrated -- https://master.php.net/note/delete/88746/integrated Del: useless -- https://master.php.net/note/delete/88746/useless Del: bad code -- https://master.php.net/note/delete/88746/bad+code Del: spam -- https://master.php.net/note/delete/88746/spam Del: non-english -- https://master.php.net/note/delete/88746/non-english Del: in docs -- https://master.php.net/note/delete/88746/in+docs Del: other reasons-- https://master.php.net/note/delete/88746 Reject -- https://master.php.net/note/reject/88746 Search -- https://master.php.net/manage/user-notes.php

« previous php.notes (#150257) next »