拡張属性制御コマンド gfxattr, gffindxmlattr

<1> 設定マニュアル
拡張属性インストールマニュアルに従ってセットアップするだけでよい。

<2> コマンドマニュアル
  (1)gfxattr
    [name]
      拡張属性の設定・取得・属性名一覧・削除を行う。
      通常の拡張属性とXML拡張属性を操作する。

    [Usage]
      gfxattr [-s|-g|-l|-r] [-x] [-c|-m] [-f <xattrfile>] file [xattrname]

          -s,-g,-l,-r          : いずれかを指定。
                                   -sで拡張属性の設定
                                   -gで拡張属性の取得
                                   -lで拡張属性名一覧の取得
                                   -rで拡張属性の削除
          -x                   : 指定されていた場合はXML拡張属性を処理する。
          -c,-m                : -sと併せていずれかを指定。
                                   -cで拡張属性の新規設定
                                   -mで拡張属性の更新
          -f <xattrfile>       : 設定する属性データのファイル、あるいは、
                                 取得したデータのファイル
          file                 : 処理対象のファイルのGfarmパス
          xattrname            : 処理対象の拡張属性名

    [説明]
      設定
        fileに属性名xattrnameの拡張属性を設定する。
        属性データは、-fで指定されたxattrfileの内容か、それが無指定なら
        標準入力とする。
	設定するには、そのファイルの書き込み権限が必要である。
        -c指定すればxattrnameが既存の時はエラーとなる。
        -m指定すればxattrnameが不在の時はエラーとなる。
        -c, -m のいずれも無指定の場合、xattrnameが不在なら新規設定、
	既存なら上書きとする。

      取得
        fileに属性名xattrnameの拡張属性を取得する。
        属性データは、-fで指定されたxattrfileに書き出すか、それが無指定なら
        標準出力に書き出す、
	取得するには、そのファイルの読み込み権限が必要である。

      属性名一覧取得
        fileに設定されている全ての拡張属性名を取得し、標準出力に表示する。
	取得するには、そのファイルの読み込み権限が必要である。

      削除
        fileに属性名xattrnameの拡張属性を削除する。
        削除するには、そのファイルの書き込み権限が必要である。

    [使用上の注意]
      拡張属性は、Gfarm上の全てのファイル（通常ファイルでもディレクトリでも）
      設定できる。
      ファイルを削除すると、そのファイルに設定されていた拡張属性も全て消滅する。
      通常の拡張属性とXML拡張属性は独立であるので、同一の属性名を利用可能である。
      通常の拡張属性の属性データとして、空のデータ、テキストデータ、バイナリ
      データのいずれも設定可能である。
     XML拡張属性として設定できるのは、空でない正当なXMLだけである。そうでない
      場合、EINVALエラーとなる。
      設定するXMLの先頭に<?xml version="1.0" encoding="UTF-8"?>と
      いうようなXML宣言文はあってもなくても良い。ただし、取得すると
      必ずその行は消える。これはPostgreSQLに仕様によるもので、XML
      拡張属性の仕様とする。

      拡張属性名は、最大256文字までとする。
     Linux OSは、拡張属性の最大データサイズを64KBに制限している。このため、
      本コマンドによりGfarm上にそれ以上のサイズの拡張属性データを設定しても、
     fuse経由で取得できるのは先頭の64KBまでとなる。attr(1)参照。

  (2)gffindxmlattr
    [name]
      指定されたXPath式に一致とする拡張属性を検索する。

    [Usage]
      gffindxmlattr [-d depth] [-F delim] {expr | -f <expr-file-path>} path

          -d depth             : pathがディレクトリの時、検索する深さ。
          -F delim             : 見つかったパス名と拡張属性名の区切り文字。
                                 デフォルトはタブとする。
          expr                 : 検索するXPath式
          -f <expr-file-path>  : 検索するXPath式の書かれたファイルのパス
          path                 : 検索開始するGfarmのファイルパス

    [説明]
        指定されたXPath式に一致とする拡張属性を、pathについて検索し、見つかった
        パス名と拡張属性名を標準出力に表示する。
        pathがディレクトリでなければ、そのファイルのXML拡張属性だけを検索する。
        読み込み権限のないファイルは無視する（あってもエラーとしない）。

        ディレクトリの場合、depthで指定された深さまで再帰的に検索する。
        0ならば自ディレクトリのみ、1ならばサブディレクトリまでなどとなる。
	無指定ならば、無制限に検索する。負の値はエラーとする。
        また、実行(X)権限のないディレクトリについては、サブディレクトリを
        検索しない。このような場合でも、検索エラーにはならない。

        出力結果は、見つかったパス名(コマンドに指定したpathを含む)と拡張属性名を
        区切り文字で区切って表示する。

    [実行例]
        % gffindxmlattr /a /
        /	attr
        /dir1	attr2

    [使用上の注意]
      検索中にrenameや削除が起こった場合、検索結果の正当性の保証はない。
      見つかったパス名や拡張属性名に、区切り文字と同じ文字があった場合、
      区切り文字が複数表示されることになる。その場合は区切り文字として
      適当な文字（列）を-Fオプションで指定すること。
