#if defined(W32) || defined(UNX)
   .リモートファイルアクセス。

   #if defined(W32)

      .Windows間で共有ファイルをアクセスする場合はUNC表記が利用出来ます。

       例えば \\{サーバー名/IPアドレス}\{共有フォルダー}\...\{ファイル名}
         但しlogin パスワードが必要な場合はあらかじめ explorerでlogin するか
         net use \\ip-addr コマンドでログインしてください。
         ex) net use \\server1\folder1 password /user:domainname\userid
       また、接続はアイドルタイムアウト、最大接続ユーザー数があります。
       "net config server" で確認してください。
       接続が切れるとネーワーク探索が入り時間がかかります。
       省略値15分、"net config server /autodisconnect:"で変更可能
       最大ユーザー数(XP-Home:5,XP-Professional:10)を超えると接続できません。
       サーバー名は "net view"で確認できます。
       共有名は "net view \\サーバー名"でリストされます。

       尚、接続に時間がかかる場合はWebClientサービスを無効にしてください。
       (共有名がドライブIDなど1文字だと起こらない?)
       このサービスが有効の場合これを使ってHTTP(port:80)通信を試みるので
       サーバーFirewallがport:80を無視する場合時間がかかるそうです。
       (コントロールパネル-->管理-->サービス、Webclientを選択して右クリックし
       無効を設定する。)
       サーバー側でport:80の許可を設定をする方法もあります。

       共有ファイルの場合の特殊処理。
         cd コマンド, dir-list 行コマンド "." で現行ドライブ、現行dirを
         共有ファイルに設定することもできます。
           例えば cd \\server\dir とすると
           \:abc は \\server\dir\abc,
           \:\abc は \\server\abc となります。
           現行ドライブが \:の場合("."行コマンドはドライブとパスの両方を設定します)
           xyz は \\server\dir\xyz になります。
         現行ドライブは保存されませんが、
         共有ファイルに対する現行Dir設定は保存され、次のセッションでも有効です。
         現行ドライブが共有ファイルの状態でxe を終了すると、
         xe /R で次のセッションでこの設定を復元できます

         OPT UNDEL が ON の設定の時、
         dirlist上で復元可能削除コマンド("d"または"/"行コマンド)による削除では
         "u"(Undo)行コマンドに備えて同じdir内でrenameで保存されます。
         これらは セッション終了時に実際に削除されます。

    #endif //W32

      .ホスツファイル(省略値は::xehosts(ワークディレクトリーのxehost))に
       登録したリモートIDを使用してリモートファイルをアクセスします。
       たとえばホスツファイルに次の行をCodingし
         a1 192.168.2.15  user001 pswdpswd
       "e a1:file1.txt"で192.168.2.15のホームDirのfile1.txt を編集
       できます。

    #ifdef LNX

        権限がなく共有資源をmount出来ない場合に xehostsにshare=パラメータ指定で登録すれば
        WindowsあるいはSambaサーバーの共有資源にアクセスできます。
        (Linux版はsmbclient,Android版はJCIFSを利用)
          登録例  "w764  192.168.8.22 usrskt pswd  share=sharename"
        Android版では password指定無しのNODeコマンドで別スレッドで接続テストをします
        Sambaの方がftpより格段に速いようです
        まず最初に Samba サーバーと接続できるか次のコマンドで確認
          smbclient -L hostname hostname: ip-address or name on /etc/hosts
        問題がある場合は ::xeftplog を調べてください
          ::xeftplogは "xe -ftpw" で立ち上げると出力されます

    #endif //LNX

      .ホスツファイルをxeで編集するとパスワードは一応暗号化されますが
       より安全のためにはNODeコマンドで毎回パスワードを設定してください。
       NODeコマンドで設定したパスワードは::xehostsには保存されません、セッションでのみ有効です。
        コマンド: NODe host-ID password (例. "nod ftpsvr1 CabZyx")

      .ディレクトリーリストのundoはTSO以外では未サポート。
      .リモートとしてWindowsはLinuxからはSambaクライアント(smbclient)でサポート
       (xehostsファイルで SHARE= を指定する)
       あるいは
         Windows 共有名を次のようにマウントすれば
           mkdir /WinDriveE
           mount -t cifs //192.168.1.12/E /WinDriveE -o username=yourname
         "xe /WinDriveE" でアクセスできます
      .リモートファイルをSUBmitするとローカル実行。
      .リモートファイルをXPRintするとローカルで印刷。
       但しTSOファイルの場合はリモート(MVS)実行。
      .コマンドラインパラメータでFTPサポートを選択する。
            /Fx[t][:hosts]  :x=0:FTP 不使用, x=1:FTP 使用(log無し)
                             x=w:ftplog 出力, x=a:追加モード ftplog
                            :t:一時ファイルを削除しないDebug用オプション
                            :hosts: xe 用のホストファイル名。
            省略値は /F1:xehosts(xehostsはワークディレクトリー)
      .ホスツファイルの形式。
       -コメントは # の後に書く
        但し puTTY の PSFTPのパラメータは次のように指定します
        #@PSFTP=  : psftp がPATH上にない時は PSFTP のコマンドを指定します。
        #@SSH=all : この行以降の SSH=指定の省略値を SSH=Y とする指定です。
        この行をコメントにするには次のようにします。
           ##@PSFTP=~/psftp
           ##@SSH=all
       -リモートID リモートアドレス ユーザーID パスワードの順に
        スペースで区切って書く。
       -リモートID は2<-->8桁。リモートがTSO以外では大文字小文字区別あり
       -リモートアドレスはIPアドレスかNativeのホスツファイル定義の
        ホスト名を書く。URL も使用できる
       -パスワードが不要のときは "" と書いておく。
       -パスワードの後はオプションで次のパラメータを指定する。
        HOME=/xxx/yyy    :ホームDir、~/で参照可能。
        TZ=[-]hhmm       :時刻表示調整値。ex) TZ=-0900
                          ファイル日付はGMTで送られるのでクライアントと
                          ホストのTimeZoneが異なっても問題ないがAIXの
                          場合GMT=JSTが設定されているのでホストがAIXの
                          時はTZ=0000を指定する必要がある。
        DBCS={EUC|SJIS|  :lsコマンド出力が日本語表示のときのCodePage指定
             cp930|cp939| リモートがTSOで日本語の場合cp930かcp939を指定する。
             OTHER}       ICUなどの外部コンバータを使用する。("EBCDIC変換"を参照)
        TSO=portNo[opts] :リモートがTSOのときポート番号を指定
                          TurnkeyMVSでは3270, tn3270の場合は23
                          opts には
                           R:宛先がTurnkeyMVS でない実際のメインフレーム
                           S:TurnkeyMVS の場合でその submit ツールを使用せず
                             TSOのSUBMITコマンドでJOBをSUBMITする。
                          例)  TSO=23R  TSO=3270S

        LS="xx"/NLST     :specify FTP sub cmd correspond to unlix cmd "ls -la".
                          defailt is "dir". use this option when FTP server dose not support dir subcmd.
                          LS=NLST means LS="ls -la".
                          (I heard RFC defines that ls subcmd returns file name only.)
        ICMD="cmds"      :specify FTP subcmds issued just after login.
                          insert "\n" if the string contains multiple commands.
                          When the case FTP server is configured to reject passive mode
                          and FTP client default is passive mode,
                          you can login successfully but transfer cmd such as ls will fail
                          with "no route to host".
                          ICMD=passive toggles passive and active mode.
        SSH={Y|N}        :FTPクライアントにPSFTP を使用する(Y) か 否か(N)
        SHARE=shraename  :共有資源名。リモートがSambaサーバーまたはWindowsの時指定
        P=prtNo          :psftp で SSH ポートを省略値(22)以外を使用する場合指定

例)

    ###################################################################
    #sample hosts file for xe
    #
    #format
    #
    #@PSFTP=g:\src\putty060\psftp.exe   #specify PSFTP command string if psftp.exe is not on %PATH%
    ##@PSFTP=/home3/putty-0.62/unix/psftp #(Linux sample)
    ##@PSFTP=~/psftp                    #This is comment because this line data dose not start by "#@xxx" patern.
    #@SSH=all                           #specify to use PSFTP as default for the following destionation after this lins.
    ##@SSH=all                          #This is a sample of comment out of #@xxx statement
    #
    # RemoteID  RemoteAddress UserID  Password [option] #Comment
    #   option:HomeDir     :ex. HOME=/tmp/myhome
    #                           HOME='herc01.source.asm' (default Dataset of MVS)
    #         :TimeZone    :ex. TZ=-0900
    #         :DBCS        :ex. DBCS=EUC     :Remote codepage=JapaneseEUC
    #                           DBCS=SJIS    :Remote codepage=ShiftJIS(Japanese)
    #                           DBCS=CP930   :Remote is TSO and use Japanese katakana extension
    #                           DBCS=CP939   :Remote is TSO and use Japanese English lower case letter extension
    #                           DBCS=OTHER   :Remote is TSO and use the converter other than CP939/CP930.
    #                                         (specify charset by CHARSET_CFG parm on xe3270.cfg)
    #         :TSO=portno  :ex. TSO=3270       TurnkeyMVS destination port may be 3270
    #                           TSO=3270S      "S" is submit option(use TSO SUBMIT cmd)
    #                                          without "S",use sub tool of TurnkeyMVS
    #                           TSO=23R        R means target is Real MVS(TSO/E through tn3270))
    #                                          (use TSO SUBMIT cmd.)
    #         :LS="xx"/NLST:ex. LS=NLST        specify any "list directory" cmd string(max 12 byte).
    #                                          default is dir,NLST means "ls -la".
    #         :ICMD="cmds" :ex. ICMD="passive" specify cmd to be issued after opened session
    #                                          insert "\n" between commands when multiple.
    #         :SSH={Y|N}   :ex. SSH=Y          use PSFTP for this destination. "N":use FTP.
    #         :SHARE=name  :ex. SHARE=disk1    use smbclient to this destination(SAMBA server/Windows).
    #Sample
    # a1 192.168.2.5  mizumaki machi TZ=0900
    # hm localhost    herc01   ""        TSO=3270 home='herc01.maclib.asm'
    # t6 S390T6       PURPLE   PSWDPSWD  TSO=23R  home='SAK01.TEST.ASM',DBCS=CP939
    # h390  Linux390  user1    PSWD1     SSH=Y
    # w64   SmbSvr      user1    ""      SHARE=d
    # w7p   192.168.2.12 w7user pswd     share=p
    # gcty  ftp.geocities.jp ybbusr pswd SSH=N
    # centos7r localhost root pswd SSH=Y P=2222
    ###################################################################

    (注)ftpを利用するので接続するための適切な環境設定が必要です。
        また、ftpサーバーは接続元のipアドレスでDNS逆引きをしていると、
        DNS参照が遅いと接続に時間がかかります。(xeは毎回sessionをcloseしています)
        DNS参照はftpサーバーの/etc/hostsに接続元を登録し/etc/host.confが
        order hosts,bind
        となっていると避けることができます。(DNSより先にhostsを参照する設定)

        vsftpd について。(FC12の場合)
          /homeをリストしようとすると次のメッセージで失敗することがあります
            226 Transfer done (but failed to open directory)."
          SELinuxによって保護されている可能性があります。 Syslog(/var/log/messages)を確認してください。
             ... avc: denied { read } for ... comm="vsftpd" name="home" ...
          SELinuxの現在値は "getsebool -a"で表示されます。
          "setsebool -P ftp_home_dir 1" で /home が読めるようになります。
          ftp_home_dirがoffの場合でも,xehostでLS=NLSTを指定すると
          /homeのサブDirの属性を表示できます(ls -la が "."(現Dir)を返す場合)
          /etc などホームDirの外に出る場合は cfg ファイルの chroot パラメータを
          設定する必要があるかもしれません


        Tiny FTP v0.52d(By H.Nomura氏)がFTP daemonの場合、次の設定をチェックしてください。
          .設定->システム設定->再接続で"接続間隔チェックを行う"のチェックをはずす
          .設定->ユーザー設定->禁止の"デレクトリーの操作"は全てチェックをはずす。
          .設定->ユーザー設定->名前の"パスワードの使用"はオンにする。
          .設定->ユーザー設定->ファイルの"全てのファイルを許可"にすると
           設定したホームディレクトリーの外にもアクセスできます。
          .ファイル名は "e hostname:/"で設定されたHomeDirをさすようです

        puTTYのPSFTP(SSH2)に対応。(v063でテストしました)
            #@PSFTP=g:\src\putty060\psftp.exe
                PATHが通ってない場合 "#@PSFTP="でコマンド名を指定。
                追加のオプションがあれば指定可能。省略値は ::xeftplog に表示される。
                (::xeftplogは -ftpw オプションで立ち上げると出力される)
            #@SSH=all
                この行以降の接続先の省略値としてPSFTPを使用することの指定
            dest1 192.168.2.5  user pswd  ssh=Y
                各接続先ごとにPSFTP(ssh=Y)か FTP(ssh=N)を選択設定する。
                指定がなければ #@SSH=の指定の有無に従う。
         (注).#@___をコメントアウトするには例えば##@PSFTP=...のようにする。
             .PSFTPを使用する場合は最初一度にコンソール窓からPSFTPコマンドで
              接続しcacheにhost-keyを記録するようにしてください。(psftp -l USER -pw PSWD)
              (SSH key を キャッシュに保存する為のyes/no 応答が必要なのでxe外で一度実行してください)
              -batch オプションを使用していますがWindows版はcacheにhost-key
              がないとハングします。Linux版は接続失敗でPSFTPが制御を戻すので
              SSH失敗のエラーメッセージを表示します。
             .現在のところpsftpではDir-Listでslinkが表示されません。
             .::xehostsの変更は次回から有効です
#endif