Logo address

/netlib/tip+/old

README

            =======================
                    tip+ 3.0
            =======================

            Coded by: Kenar ( Kenji Arisawa )
            E-mail:
                arisawa@aichi-u.ac.jp
                Nifty: MHA01356
            Tip+ sources:
                ftp://ar.aichi-u.ac.jp/pub/tip+/tip+3.0.tar.gz
                nifty: funix/"data library"/"unix source"/tip+3.0.tar.gz
            Related sources:
                ftp://ar.aichi-u.ac.jp/pub/tip+/tipxfer.tar.gz
                ftp://ar.aichi-u.ac.jp/pub/tip+/page.tar.gz
                ftp://ar.aichi-u.ac.jp/pub/tip+/slip.tar.gz
                ftp://ar.aichi-u.ac.jp/pub/tip+/transit.tar.gz
            Reference sources:
                ftp://ar.aichi-u.ac.jp/pub/tip+/tip.tar.gz
                ftp://ar.aichi-u.ac.jp/pub/tip+/tipx.tar.gz
                ftp://ar.aichi-u.ac.jp/pub/tip+/tipxbp.tar.gz
            See also bug reports in
                ftp://ar.aichi-u.ac.jp/pub/tip+/BUGn  (n=1,2,3,...)

            ■ Tip+ のユーザ登録をされたかたには、BUG情報、改訂情報を
            メールで送ります。
            私、有澤にその旨を電子メールで知らせて下さい。
            ■ Nifty から私の ftp へは現在(96/01) OS の不都合で
            名前( ar.aichi-u.ac.jp )ではアクセスできないそうです。
            IPアドレス( 202.250.160.40 )で利用して下さい。


---------------------------------------------------------
tip+ 3.0 による変更 ( tip+ 2.1 との比較 )   - 1996/01 -
---------------------------------------------------------
tip+ は 3.0 で大幅な改訂を受けました。
改訂のポイント:
(1). tip+のdialerはtip dialer をそのまま引き継いでいました。tipの dialer
は以下のような問題を抱えていました。
1. libacu の中に多数あった dialer はチグハグで、tip本体とのインター
   フェースがばらばらなのです。全てが動作していたとは思えません。
   hayes だけは動いていたとは思いますが…
2. hayes dialer にせよ、ATDT コマンドのみがサポートされていました。
   パルスの環境では動作しなかったわけです。
3. タイムアウトは60秒固定でした。最近のモデムはだんだん交渉に時間がかかる
   ようになってきており、60秒はきつくなりつつあります。
4. BUSY の時も60秒待たされました。
5. モデムコマンド返される情報は一番原始的な数字方式でした。
   そのため、モデムから充分な情報が利用者にもたらされませんでした。
6. C で書かれていたために、簡単に dialer を書き換えることが出来ませんでした。
   特に、最近のモデムの性能を充分に引き出せませんでした。

tip+3.0では dialer を tip+ script で記述することにしました。
これで簡単に自分のモデム用の dialer を書くことが可能です。
この改訂と共に、tip+ script がいくらか拡張されました。
今回の改訂で Cで書かれた多数のdialerのライブラリがバッサリ削られています。

(2). テキストファイルの転送の方式を根本から見直しました。
現在では安定した転送が実現しています。
新しい方式の概要は以下の通りです。

ファイルの送信
   1. 非同期(!linesync)の場合は、文字単位の送信遅延(chardelay)および
   行単位の送信遅延(linedelay)を与えて送信する。単位は msec である。
   (この考えは tip+1.x / tip+2.x でも同じである)
   2. 同期(linesync)の場合は行を受け取った旨のホストからの報告を待って
   次の行を送るが、linedelay で設定された時間を待っても報告が来なければ行を
   送る。即ち、多少の問題があっても行を送るところがこれまでの考えと
   異なる。これによってしばしば発生したハングアップを防いだ。

ファイルの受信
   これまではホストからのファイル転送が完了した事を次のように判断して
   いました。
   1. ~< コマンドでファイルを受信する場合には、転送の終了を利用者が自ら
   判断していました。即ち、
   verbose モードに設定し、読み取った行数の表示を見てファイル転送の終了を
   確認する。CTRL-C による割り込みを発生させ終了させる。
   注 最後に余計な1行つまりホストのプロンプトが入る。
   2. ~t コマンドでファイルを受信する場合には、これまでは転送の終わりを
   意味する文字をホスト側で発生させ、その受信を待って自動的に終了する。
   eofread は転送の終わりを意味する文字の集合を与える。
   
   新しい考えは、「転送が終われば文字の受信が止まる」と言う平凡な事実に
   立脚している。tip+3.0 はファイル受信中の1秒間の無受信状態検出して
   いる。(制御文字による転送の終わりの検出も可能です)
   
   この考えによって、~< コマンドに対しても自動化が可能になった事、正確な
   検出が可能になった事などメリットは多い。

(3). 利用者定義 file transfer protocol
  様々なファイル転送方式に対応できるようにしました。
  そのために、tip 変数
  rput          --- ~p コマンドでリモートで実行されるコマンド
  lput          --- ~p コマンドでローカルで実行されるコマンド
  rtake         --- ~t コマンドでリモートで実行されるコマンド
  ltake         --- ~t コマンドでローカルで実行されるコマンド
  を導入しました。
  ASCII-NET の TransIt がこの例として実装されています。(ソースは
  ftp://ar.aichi-u.ac.jp/pub/tip+/transit.tar.gz
  から別途とりよせて下さい。unixホストとのファイル転送のニーズを持っている
  人の必需品になるでしょう)
  TransIt は telnetx に添付されていたものですが、あまりにも素っ気ないので
  転送中の情報が見える様、手を加えました。(-v option の追加)
  この場合には
  rput="transit r ?"
  lput="transit -v s ?"
  rtake="transit s ?"
  ltake="transit -v r ?"
  となるでしょう。
  「?」は ~p や ~t コマンドを実行した時のファイル名と置き換えられます。
  TransIt は利用者定義のプロトコルを tip+ に組み込むための以下の特徴を
  備えています。
  1. ファイルを送る側、受ける側の双方が標準入出力でデータを交換している
  2. 転送中のメッセージは、ローカル側だけが標準エラーに出している
  この特徴は標準的なもので、例えば
  zmodem の sz や rz なども該当します。

(4). これまでtip+はMakefileの設定でいくつかの異なったtip+バイナリを
  生成しました。
  このことは、tip+ のバイナリ配布の障害になっていたのですが、tip+3.0では
 1つの OS/CPU に1つのバイナリの原則を掲げることにしました。
  実行モード
  -rwx--x--x  1 root     wheel      57344 Dec 22 17:12 /usr/local/bin/tip+*
  -rws--s---  1 uucp     dialer     57344 Dec 22 17:12 /usr/local/bin/tip+*
  によって、
    1. アクセス記録を取らない/取る
    2. 環境変数 REMOTE, PHONES を利用する/しない
    3. tip+ script 実行中の^Cを許す/許さない
  を区別するようにしました。

(5). ニーズの低い page と slip を tip+ の本体と切り離し、サポートの方法を
  変更しました。詳しくは README.RIP を読んで下さい。

(6). 不要になった tip変数を廃止し、unix 以外のホストに柔軟に対応できるよう、
  新たにいくつかの tip変数を導入しました。
  廃止したtip変数:
    prompt
    dtrhup
    verbose
    echocheck
    rawftp
    sa
    da
    sm
    st
    rt
  新しいtip変数:  ( )内は略称
    rput        (なし)
    rtake       (なし)
    lput        (なし)
    ltake       (なし)
    breaksize   (bs)
    tabsize     (ts)
    xcontrol    (xc)
  また tabexpand の略称が tab から tx に変更されました。

(7). マニュアルを整備しました。
  今回はあまりにも変更が大きかったのでとうとう…

今回はここでは細かな変更は書きません。(なにしろ膨大になります)
tip+2.1 でtipの土台を置き換えましたが、今回はそれを基に tip を基本的に
立て替えたと思って下さい。
tip+3.0の詳細は以下のファイルを見て下さい。
TODO.TIP+     --- TIP+3.0 INSTOLLATION MANUAL
DOC.TIP+      --- TIP+3.0 USER'S MANUAL
README.RIP    --- TIP+3.0 RIP option 




---------------------------------------------------------
tip+ 2.1 による変更 ( tip+ 2.0 との比較 )   - 1995/12 -
---------------------------------------------------------
今回の改訂の労力の大部分は tip+ の安全性の確保に捧げられました。
かなり手を入れましたが、自己評価としては 50 点位でしょうか?
以前の版に比べると相当良くなっているはずですが、まだまだ不満があります。
改訂のポイント:
1. スクリプトファイルの
  %begin
  %end
  を
  begin
  end
  に改めました。
  又それと共に、スクリプトファイルの拡張子を .tipp から .tip+ に改めました。
  お手数をかけますが悪しからず。

2. tip+ 変数 loginscript(ls) を sysscript(ac) に変更しました。
  スクリプトファイルの形式が tip と tip+ では異なり、tip と共存できなく
  なるからです。

3. tip 変数 halfduplex を廃止しました。
  この変数は localecho と重複しており、そのため利用者に混乱をもたらす可能性
  があり、プログラムも汚くなるからです。

4. [set] ?
   この場合、変更可能な変数のみを表示するよう改めました。
   全ての変数を表示したい場合には、
   [set] all
   を使って下さい。

5. [cd]
   ディレクトリを変更する時に tip では 単に改行した場合には HOME に移行し
   ます。この仕様は間違って ~c を入力する初心者には誤操作の原因になるので
   廃止し(つまり、何も行われないこととし)、代わりに HOME を表す ~ を
   サポートしました。
   ~ はファイル名の入力を要求される場合にも使えます。

6. tip は ファイル名の入力に対して、'*' や '?' 等の shell メタ記号が使えま
   したが、~を除いて廃止しました。

7. アクセス記録管理ファイルの名前(/usr/adm/aculog)を [set] all で見せるこ
   とにしました。アクセス記録が取られていることを隠す理由がないように思え
   たからです。他方では、vars.c の変数テーブルの簡素化の障害になっていた
   からでもあります。
   また記録の形式はこれまでは tipx の形式だったのを tip の形式に合わせまし
   た。(group が記録されないだけです)

8. tip+2.0 は setuidで実行した場合に script file のアクセスモードを
   -rw------- にできないと言う問題がありましたがこの問題を解決しました。

9. tip および tip+2.0 までの tip+ は REMOTE と PHONES の環境変数が定義
   されているときに、/etc/remote や /etc/phones に追加して REMOTE と
   PHONES を参照します。これを次のように変更しました。
   setuid実行時には REMOTEとPHONES の参照を止めました。log の偽造が可能
   になるからです。
   user mode での実行に関しては REMOTE や PHONES が定義されている時には
   /etc/remote や /etc/phones の参照を止めました。その必要がないと判断
   したからです。
   環境変数 HOST によってもアクセス先が決定できましたが、いずれの場合にも
   これも廃止しました。


10. tip+2.1 では tip変数の読み取りと tip+ script の実行に関して、
   以下の 1 から 5 の任意の組み合わせを選択できます。
   1. /etc/remote または REMOTE (必須)
   2. /etc/phones または PHONES
   3. tip+ の system script ( remote の ss= で指定。)
   4. ~/.tiprc
   5. tip+ の user script ( TIPP 内の HostName.tip+)
   これによって個人環境から、共同利用環境の構築に至るまでの柔軟な利用が
   可能になりました。
   なお、tip+2.1 では /etc/remote からも tip+ の変数を読み取れます。
   他のアプリケーションと変数名が重複して困るようであれば、 var.c を修正
   して下さい。( 今回の改訂で var.c は誰でも手を入れられる様になったはず
   です。) またそのような問題点に関して私に知らせて下さい。
   

11. modem に何も送らずに終了した場合に tip+ は device lock を起こしましたが
   これを防ぎました。(この特性はtipも同じはずですが NeXT標準tipは問題を起こ
   しません)
   
12. bus error と segmentation violation に対して、後処理をして終了するように
   しました。これはプログラムの誤りによって異常終了した場合に、電話の回線を
   切るための保険です。( Fax Modem (Back&White) を使っている場合の対策です)

13. tip,tipx,tipxbp それから tip+2.0 までの tip+ には security hole が
   存在します。即ち、
   -rws--x--x  2 root
   インストールされた場合、
   tip では、うまくやれば誰でも root の特権を行使できます。
   ( NeXT標準 tip でも実際に確認しました。)
   tipx, tipxbp, tip+2.0 までの tip+ の場合には内部では uucp として実行さ
   れており、コードを読む限り root に化けることはありません。しかし uucp
   の権利は行使可能です。
   これを潰しておきました。
   
14. tip+ はもはや内部で uucp に setuid をしません。
   (私には tipx 流の回りくどいやりかたは理解できない。)
   uucp の setuid で実行したい場合には初めからファイルの owner を uucp
   にしておきます。

15. ファイル転送コマンド (~>)
   Nifty のように、echo back をするホストに対して非同期テキスト転送を
   行うと、終了時に送信テキストの最後の部分が画面に大量に表示されま
   したが、このバグを取り除きました。
    
16. tip+ script において、send で指定された文字列をホストに送る時の送信遅延
   が 20msec にコードの中で固定されていましたが、tip変数の linedelay を
   参照するように変更しました。それとともに、linedelayの標準値を 200msec
   に設定しました。

17. tip+ script を実行中に、期待された文字列が届かない場合に、これまでは
   ^C で tip+ を止めるしかなかったのですが、これを ^C で script を抜け出
   して実行を続けるように改めました。
   大変便利なのですが、この改訂はセキュリティ上の問題が絡むので、Makefile
   の中で KEYINTR  が定義された場合にこのように動作するようになっています。

18. rawftp モードでファイルを転送した場合のバグを除去しました。
   rawftp モードは、ファイルのコード変換をしないで転送します。バイナリ
   ファイルの転送は無謀です。転送はテキストファイルだけにして下さい。

tip+2.1 は tip のコードに大鉈を加え、コードの簡潔化を図りました。
今回は tip の土台であり、変数テーブルを交換しました。
コードの信頼性はかなり向上したはずです。(が、そうではないかも知れません。)
CPU依存性は除去しました。もしもまだ残っているようであれば、報告して下さい。

ファイル NOTE.TIP+ に tip のコードの基本的な問題点が解説してあります。
興味のある人は読んで見て下さい。

さて、tip+ は実質上、何人かの人による共同作品です。
tip+ の souce code を読んだ人が coding の責任者を誤解しないよう、
今回は工夫しておきました。
(私は code の中にコメントを入れているのですがそれでも誤解があるようです。)
ファイルの先頭に
Copyright (c) 1983 The Regents of the University of California
と書いてあるファイルは tip のファイルです。誰の作品かは知りません。
Copyright (c) 199x  Kenji Arisawa.
と書いてあるのは私が責任を持っているファイルです。
wht%n4hgf@emory.mathcs.emory.edu
と書いてあるのは Warren Tucker さんの tipx による追加です。
大きな変更があり、共同作品的な色彩が強いファイルには寄与をした全ての人の
名前が書かれています。
    Doug Kingston 
    Warren Tucker 
    さんは (c) を書くべきだったのでしょうが、書かれていません。
    login.c には主要な作者が Doug Kingston であることを書いておきました。
小さな変更に過ぎない場合には、変更者の名前は(c)としては入っていません。


-----------------------------------------------------------
tip+ 2.0 による改善 ( tip+ 1.03 との比較 )   - 1995/12 -
-----------------------------------------------------------
1. tip変数にxferを追加し
   bp プロトコルによるファイル転送を簡略化しました。
   詳しくは < ファイル転送プロトコル > を見て下さい。
2. 入力キーのマッピングを可能にしました。
   NeXT の BSキーが DEL コードを発生するため nifty と通信する時には文字削除に
   ^H を使わざるを得なかった問題をこれによって解決しました。
   詳しくは <キーマッピィング> を見て下さい
3. 通信スピードの表示が正しく表示されるよう、tip+ および xfer関係のコードを
   最近の高速モデムに対応するよう改善しました。
4. tip+ 1.03 ではコンパイル時に大量の警告メッセージが出ました。
   古いコードをそのままにして置いたからです。古いコードに手を入れ、
   警告メッセージが出ないようにしました。


-------------------------
tip+ 1.03    - 1995/08 -
-------------------------
1. login.c の sort routine に潜んでいたバグをとりました。
   以前に除去したはずなのですが、また復活していたのですね。
   私のコード管理が悪かったのでしょう。
[注] この版は、Niftyには存在しません。


------------------------------------------------------------
tip+ 1.02 による改善 ( tip+ 1.01 との比較 )   - 1993/11 -
------------------------------------------------------------
1. cut&paste によるファイル送信への対応
   即ち、tip変数
    cdelay
    ldelay
   がキーボードからの送信に対しても働く様にした。
2. ファイルの同期転送時のバグの除去
    1. オリジナルコードのCPU依存性を除去。
    2. time out の方法の変更。
   これで linesync が使えるようになった。
3. JIS コード受信時のバグ除去
   2バイトコードに混ざっている制御コードへの対処


--------------------------------------------------
tip+ 1.01  ( tip+ 1.00 との比較 )   - 1993/09 -
--------------------------------------------------
もうバグとりのパッチを出してしまって申し訳ありません。
私とした事が、sort routine の間違えるはずのない所でバグを作ってしまって・・


---------------------------------
tip+ 1.00 の序文   - 1993/09 -
---------------------------------
tip+ は tip を基に、主に以下の改善を加えた。
1. ログインスクリプトの強化(受信文字列による場合分けなど)
2. 日本語化(EUC,SJIS,JIS)(NeXTにおいては半角片仮名のサポート)
3. X/Y/Zmodem, bplus ファイル転送プロトコルの追加とテキスト転送の強化

このうち3については tipx 及び tipxbp からコードを借用した。
以下はこれらの配布文書から読み取れる、tip+ に至る主な履歴である。

tip
    Copyright (c) 1983 The Regents of the University of California.
    All rights reserved.
    -----
        All advertising materials mentioning features or use of this software
    must display the following acknowledgement:
    This product includes software developed by the University of
    California, Berkeley and its contributors.
    
    1996/01 追加
    W.Richard Stevens"Advanced Programming in the UNIX Environment" (1994)
    によると、tip の作者はBill Shannon だそうです。

tip2 (tip 5.3)
    last updated 1 April 89 (no it's not a joke)
    Added SLIP support (See man page and README.SLIP)
    Added Pager support (See man pager and page.c)
    Added auto login code (See README.SLIP and example files)
        Doug Kingston   
        Morgan Stanley & Co. (19th Floor)
        1251 Avenue of the Americas
        NY, NY, 10020
        (212) 703-7541

tipx
    tipx is based on the 4.3 tip available from uunet's ftp
    communications subdirectory.
    Two changes were added, transparent mode (called rawthru in
    the code) and X/Y/ZMODEM file transfer.
        Warren Tucker 
        150 West Lake Drive
        Mountain Park, GA  30075
        (404) 587-5766

tipxbp
    吉村氏によるNIFTYへのアップロード
    B+ プロトコルの追加
    Shin Yoshimura 
    SDI00403 90/11/12  273070  590 B tipxbp.tar.Z


実際の作業はtipxから出発した。
最初の名称はtipx+であった。しかし以下の理由によりこの名称を用いなかった。
    1. よく似た名称(tipx plus)のtip版が最近niftyにアップロードの予定が
       伝えられており、紛らわしくなる。
    2. tipxのコードを大幅に削除し、仕様をも変更してしまった。
tipの仕様は変更しないように努めた。

私は NeXT を使っており、NeXTでのみ動作が確認されている。
NeXTに固有なコードはヘッダファイルを除いて入っていない。


Contents

      8192 BUG-2.0.tar
     16384 BUG-2.1.tar
     16384 BUG-3.0.tar
      1011 FILES
     22901 README
      1769 README.TIP+3.0.FreeBSD
      3023 README.TIP+3.0.SunOS
      8969 TIP+3.0.FreeBSD.diff
     30256 TIP+3.0.SunOS-patch.tar.gz
    317561 tip+1.03.tar.gz
    147785 tip+2.0.tar.gz
    444319 tip+2.0a.tar.gz
    164589 tip+2.1.tar.gz
    117861 tip+3.0.tar.gz