## Tcl9.0.3/Tk9.0.3 Documentation > Tcl C API > zipfs

### Tcl/Tk Applications | Tcl Commands | Tk Commands | [incr Tcl] Package Commands | SQLite3 Package Commands | TDBC Package Commands | tdbc::mysql Package Commands | tdbc::odbc Package Commands | tdbc::postgres Package Commands | tdbc::sqlite3 Package Commands | Thread Package Commands | Tcl C API | Tk C API | [incr Tcl] Package C API | TDBC Package C API

  NAME
    TclZipfs_AppHook, TclZipfs_Mount, TclZipfs_MountBuffer, TclZipfs_Unmount — ZIP ファイルを Tcl 仮想ファイル系として扱う handle ZIP files as Tcl virtual filesystems
  SYNOPSIS
    const char *
    TclZipfs_AppHook(argcPtr, argvPtr)
    int
    TclZipfs_Mount(interp, zipname, mountpoint, password)
    int
    TclZipfs_MountBuffer(interp, data, dataLen, mountpoint, copy)
    int
    TclZipfs_Unmount(interp, mountpoint)
  引数 ARGUMENTS
    int *argcPtr (in)
    char ***argvPtr (入力in)
    Tcl_Interp *interp (入力in)
    const char *zipname (入力in)
    const char *mountpoint (入力in)
    const char *password (入力in)
    const void *data (入力in)
    size_t dataLen (入力in)
    int copy (入力in)
  説明 DESCRIPTION
  SEE ALSO
  KEYWORDS

### NAME

TclZipfs_AppHook, TclZipfs_Mount, TclZipfs_MountBuffer, TclZipfs_Unmount — ZIP ファイルを Tcl 仮想ファイル系として扱う handle ZIP files as Tcl virtual filesystems

### SYNOPSIS

const char *
TclZipfs_AppHook(argcPtr, argvPtr)
int
TclZipfs_Mount(interp, zipname, mountpoint, password)
int
TclZipfs_MountBuffer(interp, data, dataLen, mountpoint, copy)
int
TclZipfs_Unmount(interp, mountpoint)

### 引数 ARGUMENTS

int *argcPtr (in)
  main() からの命令行引数の個数を保持する変数への指示子｡ Pointer to a variable holding the number of command line arguments from main().

char ***argvPtr (入力in)
  main() への命令行引数を含む文字列配列への指示子｡ Pointer to an array of strings containing the command line arguments to main().

Tcl_Interp *interp (入力in)
  ZIP ファイル系が接続される解釈実行機能｡解釈実行機能の結果は記述譜からの結果か不都合伝言文を保持する為に修正される｡ Interpreter in which the ZIP file system is mounted. The interpreter's result is modified to hold the result or error message from the script.

const char *zipname (入力in)
  ZIP ファイルの名前｡ ZIP の接続時も接続解除時も NULL であってはならない｡ Name of a ZIP file. Must not be NULL when either mounting or unmounting a ZIP.

const char *mountpoint (入力in)
  接続点の名前､それは適正な Tcl ファイルかディレクトリーの名前でなければならない｡現在の接続点を問合せる為に NULL にもなる｡ Name of a mount point, which must be a legal Tcl file or directory name. May be NULL to query current mount points.

const char *password (入力in)
  (任意追加の)暗証番号｡ファイルを読む為に暗証番号が望まれない場合 NULL を使われたい｡ An (optional) password. Use NULL if no password is wanted to read the file.

const void *data (入力in)
  接続する為のデータ緩衝域｡データ緩衝域は ZIP 書庫の内容を保持せねばならないし､ NULL であってはならない｡ A data buffer to mount. The data buffer must hold the contents of a ZIP archive, and must not be NULL.

size_t dataLen (入力in)
  供給されたデータ緩衝域引数 data のバイト単位の数｡ The number of bytes in the supplied data buffer argument, data.

int copy (入力in)
  もし非-零の場合､データ緩衝域内の ZIP 書庫は接続前に内部的に複写され､データ緩衝域は一度破棄される為にTclZipfs_MountBufferを返すことを許容する｡もし零なら､呼出者は緩衝域が接続の間に読み込が適切であることを保証する｡ If non-zero, the ZIP archive in the data buffer will be internally copied before mounting, allowing the data buffer to be disposed once TclZipfs_MountBuffer returns. If zero, the caller guarantees that the buffer will be valid to read from for the duration of the mount.

### 説明 DESCRIPTION

TclZipfs_AppHook は､次の様にZIP 書庫を利用できるよう考慮して､標準応用譜初期化手続き函数を遂行する為の便益函数である : TclZipfs_AppHook is a utility function to perform standard application initialization procedures, taking into account available ZIP archives as follows:

1. もし現在の応用譜が接続可能の ZIP 書庫を有する場合､その書庫は､読込専用 Tcl 仮想ファイル系(VFS)としてZIPFS_VOLUME/appの下に据付けられる｡ZIPFS_VOLUMEの値はtcl命令zipfs rootを使って取出せる｡ If the current application has a mountable ZIP archive, that archive is mounted under ZIPFS_VOLUME/app as a read-only Tcl virtual file system (VFS). The value of ZIPFS_VOLUME can be retrieved using the Tcl command zipfs root.

2. main.tclと名付けられたファイルがそのファイル系の根本ディレクトリー内に位置している場合(即ち､上述に沿ってzip書庫の後ろのZIPFS_VOLUME/app/main.tclに据付けられた)､それは､手続き函数の開始記述譜として扱われる｡ If a file named main.tcl is located in the root directory of that file system (i.e., at ZIPFS_VOLUME/app/main.tcl after the ZIP archive is mounted as described above) it is treated as the startup script for the process.

3. もし､ファイルZIPFS_VOLUME/app/tcl_library/init.tclが存在すると､初期tcl解釈実行機能内のtcl_library大域変数はZIPFS_VOLUME/app/tcl_libraryに設定される｡ If the file ZIPFS_VOLUME/app/tcl_library/init.tcl is present, the tcl_library global variable in the initial Tcl interpreter is set to ZIPFS_VOLUME/app/tcl_library.

4. ディレクトリーtcl_libraryが主応用譜据付けに見出せないと､系はそれを､ 応用譜動的外部函数群に付着されたVFSとして､若しくは､ 現在の稼働ディレクトリー内か標準tcl搭載場所内の libtcl_major_minor_patchlevel.zipと名付けられたzip書庫として､捜索する｡(譬えば､Tcl 9.0.2配布は､libtcl_9_0_2.zipファイル内が捜されることになる｡)その書庫は､もし置かれていれば､読取り専用として据付けられる｡ If the directory tcl_library was not found in the main application mount, the system will then search for it as either a VFS attached to the application dynamic library, or as a zip archive named libtcl_major_minor_patchlevel.zip either in the present working directory or in the standard Tcl install location. (For example, the Tcl 9.0.2 release would be searched for in a file libtcl_9_0_2.zip.) That archive, if located, is also mounted read-only.

Windows上では､TclZipfs_AppHookは幾らか異なる署名を有す､ 理由は､文字の代りにWindows文字WCHARを使うから｡結果として､応用譜がUNICODE予備処理印定義(譬えば､-DUNICODE 機械語翻訳旗徴経由)を伴って機械語翻訳されることを要求される｡ On Windows, TclZipfs_AppHook has a slightly different signature, since it uses WCHAR instead of char. As a result, it requires the application to be compiled with the UNICODE preprocessor symbol defined (e.g., via the -DUNICODE compiler flag).

TclZipfs_AppHookの結果は機械語翻訳情報を伴った､Tcl完全版である(譬えば､9.0.0+abcdef...abcdef.gcc-1002)｡その函数は､argcPtrとargvPtrによって指示される変数を取除く様､修正するかもしれない; 現在の実装はそうなっていない､但し､呼出側は､将来もこれが正しいと仮定してはならない｡ The result of TclZipfs_AppHook is the full Tcl version with build information (e.g., 9.0.0+abcdef...abcdef.gcc-1002). The function may modify the variables pointed to by argcPtr and argvPtr to remove arguments; the current implementation does not do so, but callers should not assume that this will be true in the future.

TclZipfs_MountはZIP書庫の据付けと､現在据付けられている書庫に関する情報の取出し､に使われる｡ もし､mountpoint と zipnameの両方が指定される(即ち非ヌル)と､ 函数は､mountpoint内に与えられる据付け位置上のZIP書庫zipnameを､据付ける｡ もし､暗証番号passwordがヌルでない場合､書庫を防衛している､NULで終わる暗証番号を指す筈である｡ もし､zipfsファイル系の根本の下でなければ､mountpointはそれに関して標準化される｡譬えば､mt又は/mtの様な据付け位置暗証番号は､ zipfs の根本は “//zipfs:/” であると返されるとして返されている ZIPFS_VOLUMEが与えられて､ //zipfs:/mtと標準化される｡ TclZipfs_Mount is used to mount ZIP archives and to retrieve information about currently mounted archives. If mountpoint and zipname are both specified (i.e. non-NULL), the function mounts the ZIP archive zipname on the mount point given in mountpoint. If password is not NULL, it should point to the NUL terminated password protecting the archive. If not under the zipfs file system root, mountpoint is normalized with respect to it. For example, a mount point passed as either mt or /mt would be normalized to //zipfs:/mt, given that ZIPFS_VOLUME as returned by zipfs root is “//zipfs:/”. An error is raised if the mount point includes a drive or UNC volume. On success, interp's result is set to the normalized mount point path.

もし､mountpointがヌル位置指示子であると､現在据付けられている全てのZIPファイル系は､ 据付け位置とZIPファイル名の並びとしてinterpの結果に保存される｡ If mountpoint is a NULL pointer, information on all currently mounted ZIP file systems is stored in interp's result as a sequence of mount points and ZIP file names.

もし､mountpointは非ヌルであるが､zipfileがヌルであると､ その据付け位置に於ける書庫据付け位置への経路は､解釈実行機能interpの結果として保存される｡函数は標準tcl結果符号番号を返す｡ If mountpoint is not NULL but zipfile is NULL, the path to the archive mounted at that mount point is stored as interp's result. The function returns a standard Tcl result code.

TclZipfs_MountBufferは､ mountpoint内に与えられる据付け位置上のZIP書庫のdataの内容 を据付ける｡ mountpoint と dataの両方が､非ヌルとして規定されねばならない｡ copy引数は緩衝域が内部的に据付け前に複写されるか否かを定める｡ ZIPは暗証番号保護されてないと仮定される｡成功すると､解釈実行機能 interpの結果が通常据付け経路に設定される｡ TclZipfs_MountBuffer mounts the ZIP archive content data on the mount point given in mountpoint. Both mountpoint and data must be specified as non-NULL. The copy argument determines whether the buffer is internally copied before mounting or not. The ZIP archive is assumed to be not password protected. On success, interp's result is set to the normalized mount point path.

Tclzipfs_Unmount はTclzipfs_Mount の効果を取り消す､即ち､zipnameから接続された(mountpoint の位置で) ZIP ファイル系を接続解除する｡不都合は解釈実行機能 interp 内に報告される｡この呼出の結果は標準 Tcl 結果符号である｡ TclZipfs_Unmount undoes the effect of TclZipfs_Mount, i.e., it unmounts the mounted ZIP file system that was mounted from zipname (at mountpoint). Errors are reported in the interpreter interp. The result of this call is a standard Tcl result code.

TclZipfs_AppHook はstub-可能な拡張では使用できない｡ TclZipfs_AppHook can not be used in stub-enabled extensions.

### SEE ALSO

zipfs

### KEYWORDS

compress, filesystem, zip
Copyright © 2015 Jan Nijtmans <jan.nijtmans(at)gmail.com>
Copyright © 2015 Christian Werner <chw(at)ch-werner.de>
Copyright © 2017 Sean Woods <yoda(at)etoyoc.com>