[PHP-users 7942] Permissionのアルゴリズム

Morikawa [encore-ann] php-users@php.gr.jp
Wed, 05 Jun 2002 23:49:24 +0900


もりかわ@似非PGです。

Unix のファイルシステムで、permission を 1,2,4 の組み合わせから
設定しているアルゴリズムについてお聞きしたいと思います。
PHPと直接関係はないんですが、下記のようなスクリプトを作成して
ある数値に含まれている要素を配列で返すようにしてみました。

見れば分かる通り、while で回しているのであまりすっきりとはしません。
また、僕自身がどういうアルゴリズムに基づいているのか分からなくて
(もちろん存在も知らなくて)、PHPの関数にあるのかどうかも調べきれ
ません。
結構いろいろと Unix Permission アルゴリズム などをキーワードに
探してみたんですが、うまく見つかりません。

それで、もし該当アルゴリズムがあるのであればその名前、
関数があるのであればマニュアルの場所など教えていただけ
ないでしょうか。

# "それはともかく、もっと簡単に書けるで〜"ってのもありです。
## PHPでも定数に数値を割り当てているのはこういう絡みあるのかな?

例:
(1,2,5) == decode_option(7)
(1,4) == decode_option(5)
(64, 32, 4) == decode_option(100)
(64, 32, 4, 2, 1) == decode_option(103)


  function decode_option($val) {
    if (!$val) { return false; }
    $list = array();
    $i = 1;
    while ($val > 0 ) {
      if (( $val >= $i ) and ( $val >= $i*2 )) {
        $i = $i * 2;
      } elseif ($val >= $i) {
        push($list, $i);
        $val -= $i;
        $i = 1;
      } else {
        $i = $i / 2 ;
      }
    }
    return $list;
  } // function decode_option



もりかわ
プログラマ募集中:http://www.find-job.net/fj/showjob.cgi?id=12226