readme.txt 19 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494
  1. // --------------------------------------------------------------------------------
  2. // PclTar 1.3.1 - readme.txt
  3. // --------------------------------------------------------------------------------
  4. // License GNU/GPL - Vincent Blavet - January 2003
  5. // http://www.phpconcept.net
  6. // --------------------------------------------------------------------------------
  7. (Voir version Française à la fin)
  8. 0 - Sommaire
  9. ============
  10. 1 - Introduction
  11. 2 - Install
  12. 3 - What's new
  13. 4 - Using PclTar
  14. 5 - Manual
  15. 6 - Language
  16. 7 - Known bugs
  17. 8 - License
  18. 9 - Warning
  19. 10 - Author
  20. 1 - Introduction
  21. ================
  22. PclTar is a library that allow you to create a GNU TAR archive,
  23. to add files or directories, to extract all the archive or a part of it.
  24. So far tests show that the files generated by PclTar are readable by
  25. gzip tools and WinZip application.
  26. PclTar is made of the following files, placed in the same 'lib' directory :
  27. - pcltar.lib.php3
  28. - pcltrace.lib.php3
  29. - pclerror.lib.php3
  30. Today the libraries PclTrace and PclError are mandatory to run PclTar.
  31. The extension of the files can be modified to .php (or other) without any
  32. internal modification.
  33. The files can be put into any directory as far as the calling script/application
  34. has a valid path to it (see section using PclTar).
  35. 2 - Install
  36. ===========
  37. PclTar 1.3 is released in three format :
  38. - Zip traditionnal format (pcltar-1-3.zip),
  39. - Compressed GNU TAR format (pcltar-1-3.tgz),
  40. - PhpZip auto-extract PhpZip (pcltar-1-3.piz).
  41. The Zip and compressed GNU TAR file also include the auto-extract PhpZip file, which
  42. might be usefull for a remote auto-install.
  43. a. Zip archive
  44. Unzip the Zip file in a folder.
  45. The files are in the 'lib' directory, but may be moved in any other directory.
  46. b. Compressed GNU TAR archive
  47. Extract the Compressed GNU TAR file in a folder.
  48. The files are in the 'lib' directory, but may be moved in any other directory.
  49. c. Auto-extract PhpZip archive
  50. Download *** IN BINARY MODE *** the auto-extract PhpZip archive on your web site
  51. in the destination directory 'myfolder'.
  52. Launch the extract by calling http://mydomain.com/myfolder/pcltar-1-3.piz.php3.
  53. The files are automatically placed in the 'lib' directory of the 'myfolder'
  54. directory.
  55. 3 - What's new
  56. ==============
  57. In version 1.3.1 :
  58. - Remove deprecated call to functions with references
  59. In version 1.3 :
  60. - Add the function PclTarExtractIndex()
  61. - Correction of a bug with folders. When folder are archived, the size is sometime not
  62. null. PclTar now force the size to be zero when the archived file is a folder. When
  63. un-archiving the size is also forced to 0 when the item is a folder.
  64. - Modify function PclTarDelete() : When you give the name of a directory to be deleted, the
  65. directory entry and the files of the directory are deleted.
  66. - Correct bug in the path add/remove options in functions. When a path is removed,
  67. sometime the 'home' path was not.
  68. - Correct a bug in directory extraction : The directory is created but the status in
  69. the resulting file list is set to write_error.
  70. - Correct a bug : missing update of file cache (clearstatcache())
  71. In version 1.2 :
  72. - Add a new function PclTarMerge(), which allow to merge two archives.
  73. - Add the add_path/remove_path ability to the PclTarCreate() function
  74. - The add list/dir function now support empty directory. Before version 1.2, directories
  75. where not identified as separate entries, there where in the archive, only if there is at
  76. least one file.
  77. - Optimization of PclTarHandleAddList()
  78. In version 1.1 :
  79. - Adding check of header checksum while extracting a file from the archive,
  80. - Enhancement in POSIX header creation. In the first version PclTar use a temporary
  81. file for checksum calculation. It is now directly computed.
  82. - Adding field "status" in file description, remove fields "link", "magic", "version",
  83. "uname", "gname", "devmajor" and "devminor", because they do not carry interesting info.
  84. - While extracting, a check is done if the file exists or not. If an error occurs in the
  85. file extraction, the file is skipped, and the function tries to extract the next one.
  86. In previous release, the extraction was stopped.
  87. - While extracting a file, the mtime is now updated with the value stored in the archive.
  88. Note that the mode (R/W) is not set today (default RW).
  89. - New function PclTarDelete($tarname, $filelist), which deletes the files specified in
  90. $filelist.
  91. - New function PclTarUpdate(), which replace old files with new ones (depending of last
  92. modification date). If the file does not exist, it is added at the end of the archive.
  93. - Values for the file properties array :
  94. filename (with path),
  95. size,
  96. mode (decimal value of the octal value),
  97. uid,
  98. gid,
  99. mtime (last modification date like time() function result),
  100. typeflag ("0" or "" = file, "5" = directory, "1" = link),
  101. status (ok, added, updated, not_updated, already_a_directory,
  102. write_protected, newer_exist, path_creation_fail, write_error)
  103. - Add a "remove path" property in the extract functions. This allow to extract file
  104. in an other directory than the expected directory.
  105. - Add new function PclTarAddList()
  106. - Add parameter $p_mode in PclTarList()
  107. 4 - Using PclTar
  108. ========================
  109. In order to use PclTar 1.3, an application (or a script) must include
  110. the PclTar file pcltar.lib.php3.
  111. Because PclTar 1.3 include two other libraries (PclTrace and PclError), a
  112. way to include these libraries must be done. Several solutions are available :
  113. - Include each library in the application/script (in this order) :
  114. <?
  115. include ("my_lib_dir/pclerror.lib.php3");
  116. include ("my_lib_dir/pcltrace.lib.php3");
  117. include ("my_lib_dir/pcltar.lib.php3");
  118. [...]
  119. ?>
  120. - Give the library path knownledge to PclTar :
  121. <?
  122. $g_pcltar_lib_dir = "my_lib_dir";
  123. include ("my_lib_dir/pcltar.lib.php3");
  124. [...]
  125. ?>
  126. - Modify the $g_pcltar_lib_dir value in pcltar.lib.php3
  127. - Use the global include directory configured in php.ini, and modify the
  128. $g_pcltar_lib_dir value in pcltar.lib.php3 and set it to ''
  129. Note that PclTar file (pcltar.lib.php3) may be included several time without any
  130. problem. However this is not recomended for performance reason.
  131. After the include(s), the functions defined by PclTar can be directly used
  132. (see manual section).
  133. 5 - Manual
  134. ==========
  135. PclTar introduce functions to create, add, list, delete and extract files in a GNU
  136. TAR archive. The GNU TAR archive can be compressed or not.
  137. A more complete documentation of the PclTar function is available at
  138. http://www.phpconcept.net
  139. Each public function is documented in an appropriate header directly in the source
  140. code.
  141. 6 - Langage
  142. ===========
  143. PclTar was developped in PHP3 but is compatible with PHP4. The files
  144. extension can be modified without any action needed inside the files.
  145. PclTar code is fully documented (nearly step by step) in english.
  146. 7 - Known bugs
  147. ==============
  148. Here is a list of known bugs in PclTar 1.0 (not exhaustive list) :
  149. - Only GNU TAR archive with POSIX header are supported
  150. - While extracting a file, the header checksum is not checked.
  151. - While extracting a file, the last modified date is not checked with the one
  152. of the file that will be replaced.
  153. - While extracting a file, the file mode (access right by user, ...) is not
  154. reproduced.
  155. - While archiving a full directory, the directory it self is not archived.
  156. - While extracting a directory name the directory is created only if there is
  157. a file inside. Should be created even if no file is inside.
  158. Known bugs will be updated in http://www.phpconcept.net
  159. 8 - License
  160. ===========
  161. PclTar 1.3 Library is released under GNU/GPL license.
  162. This library is free, so you can use it at no cost.
  163. HOWEVER, if you release a script, an application, a library or any kind of
  164. code including PclTar library (or a part of it), YOU MUST :
  165. - Release your work under GNU/GPL license (free software),
  166. - You must indicate in the documentation (or a readme file), that your work
  167. include PclTar Library, and make a reference to the author and the web site
  168. http://www.phpconcept.net
  169. I will also appreciate that you send me a mail (vincent@blavet.net), just to
  170. be aware that someone is using PclTar (but this is not mandatory ;-) ).
  171. For more information : http://www.gnu.org
  172. 9 - Warning
  173. =================
  174. This library and the associated files are non commercial, non professional work.
  175. It should not have unexpected results. However if any damage is caused by this software
  176. the author can not be responsible.
  177. The use of this software is at the risk of the user.
  178. 10 - Author
  179. ==========
  180. This software was written by Vincent Blavet (vincent@blavet.net) on its leasure time.
  181. ********************************************************************************
  182. * VERSION FRANCAISE *
  183. ********************************************************************************
  184. 0 - Sommaire
  185. ============
  186. 1 - Introduction
  187. 2 - Installation
  188. 3 - Nouveautés
  189. 4 - Démarrer avec PclTar
  190. 5 - Manuel
  191. 6 - Langage
  192. 7 - Problèmes connus
  193. 8 - License
  194. 9 - Avertissement
  195. 10 - Auteur
  196. 1 - Introduction
  197. ================
  198. PclTar est une librairie qui vous permet de créer des archives au format GNU TAR ou GNU
  199. TAR compressé, d'ajouter des fichiers ou des dossiers entiers et d'extraire le contenu
  200. total ou partiel des archives.
  201. A présent les tests ont montré que les archives créées par PclTar sont lisibles par les
  202. outils tar et gzip, ainsi que l'application WinZip.
  203. PclTar est constituée des fichiers suivants, ils sont placés dans le dossier 'lib' :
  204. - pcltar.lib.php3
  205. - pcltrace.lib.php3
  206. - pclerror.lib.php3
  207. Aujourd'hui les librairies PclTrace et PclError sont obligatoires pour faire fonctionner
  208. PclTar.
  209. Les extensions de fichiers (.php3) peuvent être modifiés (en .php par exemple) sans
  210. nécessité d'intervenir à l'intérieur du fichier.
  211. Les fichiers peuvent être placés dans n'importe quel dossier pour peu que l'application
  212. ou le script appelant utilise un chemin d'appel valide.
  213. 2 - Installation
  214. ================
  215. PclTar 1.3 est distribué sous trois formats :
  216. - Format Zip traditionnel (pcltar-1-3.zip),
  217. - Format GNU TAR compressé (pcltar-1-3.tgz),
  218. - Format PhpZip auto-extract (pcltar-1-3.piz).
  219. Les fichiers Zip and GNU TAR compressés contiennent aussi le format PhpZip
  220. auto-extract.
  221. a. Archive Zip
  222. Décompressez l'archive Zip dans un dossier.
  223. Les fichiers sont dans le dossier 'lib' et peuvent être déplacés ailleurs.
  224. b. Archive GNU TAR compressée
  225. Décompressez l'archive GNU TAR dans un dossier.
  226. Les fichiers sont dans le dossier 'lib' et peuvent être déplacés ailleurs.
  227. c. Auto-extract PhpZip archive
  228. Téléchargez *** EN MODE BINAIRE *** l'archive PhpZip sur votre site Web dans
  229. le dossier souhaité 'mondossier'.
  230. Lancer l'extraction en appelant http://mondomaine.com/mondossier/pcltar-1-3.piz.php3
  231. Les fichiers sont dans le dossier 'lib' du dossier 'mondossier'.
  232. 3 - Nouveautés
  233. ==============
  234. En version 1.3.1 :
  235. - Suppression des appels de fonctions par références
  236. En version 1.3 :
  237. - Ajout de la fonction PclTarExtractIndex()
  238. - Correction d'un bug avec l'archivage des dossiers. Parfois la taille des
  239. dossiers archivés était non nul ce qui entrainait une erreur lors de l'extraction.
  240. PclTar force désormais la taille à zéro lorsqu'il s'agit d'un dossier. De même lors
  241. de l'extraction il ignore la taille éventuellement incorrecte.
  242. - Modification de la fonction PclTarDelete() : Lorsque l'on donne le nom d'un dossier
  243. à supprimer, le dossier et les fichiers se trouvant dedans sont supprimés.
  244. Avant la version 1.3 seulement l'entrée concernant le dossier était supprimée.
  245. - Correction d'un bug dans les propriétés d'ajout/suppression de chemin. Lorsque l'on
  246. indiquait un chemin à supprimer, cela se passait bien pour les fichiers et
  247. sous-dossiers, mais le dossier en lui-même n'était pas ignoré.
  248. - Correction d'un bug dans l'extraction d'un dossier : Le dossier est normalement créé,
  249. mais le status de l'opération pour ce dossier était en 'write_erreor'.
  250. - Correction d'un bug sur la validité des dates de dernière modification des
  251. fichiers. Utilisation plus systèmatique de clearstatcache().
  252. En version 1.2 :
  253. - Ajout d'une nouvelle fonction PclTarMerge(), qui permet d'ajouter à une archive le
  254. contenu d'une autre.
  255. - Ajout des propriétés "ajout de path/suppression de path" pour la fonction PclTarCreate().
  256. - Les archives générées par PclTar supportent maintenant les dossiers vide. Avant la
  257. version 1.2, un dossier n'était ajouté que lorsqu'il y avait au moins un fichier dedans.
  258. - Optimisation du code de PclTarHandleAddList()
  259. En version 1.1 :
  260. - Ajout de la vérification du checksum lors de l'extraction d'un fichier.
  261. - Amélioration de la création des entêtes POSIX. En version 1.0 PclTar utilisait un fichier
  262. temporaire pour calculer le checksum. Ce n'est plus le cas à partir de la version 1.2.
  263. - Ajout d'un champ "status" dans le tableau de description des propriétés d'un fichier.
  264. Les champs "link", "magic", "version", "uname", "gname", "devmajor" and "devminor" sont
  265. eux supprimés car ils ne contiennent aucune information interessante.
  266. - Lors de l'extraction une vérification est faite pour savoir si le fichier existe déjà ou non.
  267. Si une erreur arrive lors de l'extraction le fichier est sauté et la fonction cherche à
  268. extraire le fichier suivant. Dans la version précédente l'extraction était arrêtée.
  269. - Lors de l'extraction d'un fichier la date de dernière modification est mise à jour avec
  270. celle mémorisée dans l'archive.
  271. Notez que ce n'est pas le cas pour le mode (R/W) qui reste celui par défaut.
  272. - Nouvelle fonction PclTarDelete($tarname, $filelist), qui supprime de l'archive les fichiers
  273. spécifiés dans $filelist.
  274. - Nouvelle fonction PclTarUpdate(), qui remplace les anciens fichiers par les nouveaux
  275. (en fonction de la date de dernière modification). Si le fichier n'existe pas il est
  276. ajouté en fin d'archive.
  277. - Le tableau contenant les propriétés d'un fichier a les champs suivants :
  278. filename (with path),
  279. size,
  280. mode (decimal value of the octal value),
  281. uid,
  282. gid,
  283. mtime (last modification date like time() function result),
  284. typeflag ("0" or "" = file, "5" = directory, "1" = link),
  285. status (ok, added, updated, not_updated, already_a_directory,
  286. write_protected, newer_exist, path_creation_fail, write_error)
  287. - Ajout d'une propriété "chemin à retirer" dans les fonctions d'extraction. Cela permet
  288. d'extraire un fichier ou un dossier dans un dossier différent de celui qui a été mémorizé.
  289. - Ajout de la focntion PclTarAddList()
  290. - Ajout du parametre $p_mode dans PclTarList()
  291. 3 - Démarrer avec PclTar
  292. ========================
  293. Pour utiliser PclTar, une application ou un script doivent inclure le fichier
  294. pcltar.lib.php3.
  295. PclTar utilisant deux librairies annexes (PclTrace et PclError), une configuration
  296. est nécessaire pour que PclTar retrouve le chemin d'inclusion des deux librairies.
  297. Plusieurs solutions, au choix, sont possibles :
  298. - Inclure chaque librarie dans l'application/script :
  299. <?
  300. include ("my_lib_dir/pclerror.lib.php3");
  301. include ("my_lib_dir/pcltrace.lib.php3");
  302. include ("my_lib_dir/pcltar.lib.php3");
  303. [...]
  304. ?>
  305. - Donner à PclTar la connaissance du chemin d'inclusion :
  306. <?
  307. $g_pcltar_lib_dir = "my_lib_dir";
  308. include ("my_lib_dir/pcltar.lib.php3");
  309. [...]
  310. ?>
  311. - Modifier la variable $g_pcltar_lib_dir dans pcltar.lib.php3
  312. - Utiliser le chemin d'include par défaut (configuré dans php.ini), sans oublier de
  313. modifier la variable $g_pcltar_lib_dir pour la mettre à ''.
  314. Il est à noter que le fichier pcltar.lib.php3 peut être inclu plusieurs fois sans
  315. impact autre qu'une légère perte de performance.
  316. 4 - Manuel
  317. ==========
  318. PclTar définit des fonctions pour créer, ajouter, lister, détruire et extraire des
  319. fichiers depuis une archive GNU TAR. Cette archive peut être compressée ou non.
  320. Une description plus complète de PclTar est disponible sur
  321. http://www.phpconcept.net
  322. Chaque fonction est aussi documentée dans un entête associé, directement dans
  323. le code source.
  324. 5 - Langage
  325. ===========
  326. PclTar a été développé en PHP3 mais est compatible avec PHP4. Les
  327. extensions de fichiers (.php3) peuvent être modifié sans toucher à l'intérieur
  328. des fichiers.
  329. Le code de PclTar est entièrement documenté en anglais.
  330. 6 - Problèmes connus
  331. ====================
  332. Liste des problèmes connus dans PclTar 1.0 (liste non exhaustive) :
  333. - Seuls les archives GNU TAR au format "header POSIX" sont supportées
  334. - Lors de l'extraction d'un fichier le checksupm de l'entête n'est pas vérifié
  335. - Lors de l'extraction d'un fichier la date de dernière modification d'un
  336. fichier n'est pas comparé avec celle du fichier existant.
  337. - Lors de l'extraction d'un fichier les droits d'accès d'un fichier ne sont pas
  338. reconduits
  339. - Lors de l'archivage d'un dossier entier, le nom du dossier lui même n'est pas
  340. archivé comme une entrée indépendante
  341. - Lors de l'extraction de l'entrée décrivant un dossier, le dossier n'est créé que si
  342. au moins un fichier est archivé pour ce dossier.
  343. Les bugs connus et les contournements possibles ou les versions de correction
  344. seront mis à jour sur le site http://www.phpconcept.net
  345. Merci d'y documenter les bugs que vous rencontrez afin qu'ils soient pris en compte
  346. dans les versions futures !
  347. 7 - License
  348. ===========
  349. La librairie PclTar 1.3 est distribuées sous license GNU/GPL.
  350. Vous pouvez donc l'utiliser gratuitement.
  351. CEPENDANT, si vous publiez un script, une application, une librairie ou tout
  352. code incluant PclTar (entier ou partiel), VOUS DEVEZ :
  353. - Publier votre travail sous license GNU/GPL (c'est à dire gratuitement),
  354. - Indiquer quelque part dans la documentation (le fichier readme par exemple) que
  355. vous utilisez PclTar, faire référence à l'auteur et au site Web
  356. http://www.phpconcept.net
  357. J'apprécierai aussi que vous m'envoyez un mail (vincent@blavet.net) afin que
  358. je sache que PclTar est utilisé quelque part (mais ce n'est pas obligatoire ;-) ).
  359. Pour plus d'information voir http://www.gnu.org
  360. 8 - Avertissement
  361. =================
  362. Cette application a été créée de façon non professionnelle.
  363. Son usage est au risque et péril de celui qui l'utilise, en aucun cas l'auteur
  364. de ce code ne pourra être tenu pour responsable des éventuels dégats qu'il pourrait
  365. engendrer.
  366. Il est entendu cependant que l'auteur a réalisé ce code par plaisir et n'y a
  367. caché aucun virus ni malveillance.
  368. 9 - Auteur
  369. ==========
  370. Ce code a été écrit par Vincent Blavet (vincent@blavet.net) sur ses temps de loisir.