勝手にしやがれ Part2.

【投稿時の注意】
パスワード入力:必須。投稿後の削除時は同じパスワードを使います。
投稿者入力:いまのところ任意。入力を省略すると「名無しさん」がデフォルトで表示されます
Eメール入力:いまのところ任意。
リンクの入力:本文中に http の文字列が含まれると投稿出来ません。URL を貼るときは h 抜きで ttp:// とするなど工夫してみて下さい

2 / 9 ページ ←次へ | 前へ→

【143】Re:LOGSORTW ver1.25.2
 文太  - 2008/10/21(火) 13:20 -

引用なし
パスワード
    少なくともEOFが原因ではないようです。Ez-な人ですので。
 EOFって、1Aなんですね。

Ez-            ;EOF コードの付加

C:\>dump t1
00000000 77 69 74 68 20 5C 6E 0D-0A           |with \n..
・ツリー全体表示

【142】Re:LOGSORTW ver1.25.2
 としき WEB  - 2008/10/20(月) 23:42 -

引用なし
パスワード
   > 何だか(日頃の)ご恩を仇でかえすみたいなのですが。

それは全然問題ないのですが。

> 確かに何かバグってるみたいですね。やっぱ読めないから直せないのですが。

こちらの方は大問題です。
というか、私が実験した時はそうはならなかったはず。
いや、そうならなかったような気がする。
そうならなかったんじゃないかなぁ。
何か見間違えたのかなぁ。

とりあえず、あとでもう一度実験してみます。
何を失敗したのかなぁ。
まさか、EOF?
・ツリー全体表示

【141】Re:おお、できた!(xeq!)
 としき WEB  - 2008/10/20(月) 23:40 -

引用なし
パスワード
   >>(例えば「p*」は「pqr.c」にはマッチしない)

この記述は変ですねぇ。
もしかして、DOS version 1のころはそうだったのでしょうか。
私、DOS3.1以降のMS-DOSで、そのような挙動を示すバージョンは
寡聞にして知りません。
・ツリー全体表示

【140】Re:LOGSORTW ver1.25.2
 文太  - 2008/10/20(月) 22:32 -

引用なし
パスワード
    何だか(日頃の)ご恩を仇でかえすみたいなのですが。

--------------------------------------
C:\>command.com /ctype t1
with \n

C:\>command.com /ctype t2
without \n
C:\>Lsed "n" t1
with \n

C:\>Lsed "n" t2
without \n

C:\>addtail <t1
with \n


C:\>addtail <t2
without \n

C:\>
--------------------------------------
 確かに何かバグってるみたいですね。やっぱ読めないから直せないのですが。
 仕様は「ファイルの最終行が改行文字で終わっていない場合に、改行文字を付
加する」です。どうでもいいことですいません。性格、悪いなぁ。(^^;ゞ
m(__)m
・ツリー全体表示

【139】Re:LOGSORTW ver1.25.2
 としき WEB  - 2008/10/20(月) 22:21 -

引用なし
パスワード
   ▼Siさん:

>'\n' = 0x0a
>じゃなかったでしたっけ?

そうかもしれません。
実はあのコード、何も資料を確認せずに記憶だけで書いたんですよ。
一応、LSI-CでコンパイルしてDOSで実行確認は取ったんですが、
確か、DOSとUNIXとMacで改行コードが違うという話があったなぁ、
と思い出しました。一応、ソースを載せる以上、どんな環境でも
動いてほしいけど、でも、わざわざ調べるのも面倒、ということで、
安全側に倒すという意味での妥協の産物ですね。
・ツリー全体表示

【138】Re:LOGSORTW ver1.25.2
 Si  - 2008/10/19(日) 23:34 -

引用なし
パスワード
   ▼としきさん:
>if(c!='\n' && c!=0x0d && c!=0x0a)putchar('\n');

横から失礼します。

'\n' = 0x0a

じゃなかったでしたっけ?
茶々入れですみませんm(__)m
・ツリー全体表示

【137】Re:おお、できた!(xeq!)
 Si  - 2008/10/19(日) 23:29 -

引用なし
パスワード
   ▼文太さん:
>な、と思うのですが、XP、モバギ(dos 6.20 )とも「>dir p*」でマッチして
>しまったのですが、実験がどこか間違っておりますでしょうか。 いえ、wild の
>作者なら、きっと分かるだろうと…。そうかぁ、ワイルドカードの展開って、そ
>う簡単なことじゃないんですね。今頃わかってる…。m(__)m

確かに p* で pqr.c もマッチしてしまいますね。どういうことなのかは・・・
分かりません ^^;

DOS版の UNIX-like tools(Ver 4.12f) は LSI-C で作られているかと思うのですが、確かLSI-C(試食版)は引数でのワイルドカードの扱いがちょっと特殊だったような気がします。これに関連するのかもしれません。真相は分かりませんが。

>もっとも、Vz用の起動バッチ(アイコン)を作っておいても便利は便利かもし
>れませんけれど。めざらさんのところに、親切な案内がありますけれど…。
>
>ttp://homepage3.nifty.com/mezala/vz/env/win/winxp.html

ショートカットから command.com をダイレクトに起動してしまうのですねえ。うーん、こういう発想はなかったです。Windows で Vz使ってるみなさんは(それぞれカスタマイズされているでしょうが)こういう環境が基本なんでしょうね。この辺りに自分のところと「コマンドライン」で一括りに出来ないギャップがあるような気がします。

余談ですが、文太さんが133番のレスで書かれているのを見て自分が Vz から離れてしまった背景をようやく思い出しました。

コマンドプロンプトはソフト開発で利用する機会が多いのですが(なんて言って長い間サボりっぱなしでしたが)、そうです、Vz 環境では 32bitコンパイラの吐き出すメッセージをコンソールで参照出来ないのですね。で、結局テキストエディタも Win32 版のものを常用するようになってしまった訳で。勘違いがなければこんな背景だったかと。
・ツリー全体表示

【136】Re:おお、できた!(xeq!)
 文太  - 2008/10/16(木) 23:17 -

引用なし
パスワード
   xeq dir `which -m -w grep` ★

 ああ、「-m、-w」は which のオプションだったんですね。 構文的に当たり前
ですが、xeq のオプションが多すぎて、くらくらしてしまっていたのものですか
ら。

>     -m: パスの区切りを「/」でなく「\」で表示する(MS-DOS format)。

 なんてのがあるなんて。ウルウル。(やっぱ、あのマクロ、意味なかったか。
いえいえ、こんなオプション付けてくれるDos愛好家は、そうそういないので
す。)

 「-w」にも参りましたね。僕の場合(標準なはずですが−−デフォですよね−
−)、pathに入っていましたが。

 上の★は、xeqが特殊なのかと思ったら、

>  [4]「` `」によるコマンド出力の置換
 すごい! 知りませんでした。ありがとうございました。これは、ほんとすごい
や。m(_B_)m

>     ls -l `which -a sort`
>       sortという名前のコマンド全てをls -lする。
>     what `which jgawk`
>       jgawkコマンドに対しwhatを実行。
 なんてサンプルがありました。

 で、話がずれるのですが、この流れで、当然、wild.man (in unix-like tools)
を読んでみたわけです(難い、むずい)。

>       MS-DOS本来のワイルドカードでの「*」とは働きがかなり異なるので
>       注意せよ。DOS本来のワイルドカード解釈では「*」は、ファイル名
>       の本体および拡張子のそれぞれの中において、「*」以降の文字列照
>       合をしない、という意味を持っており(例えば「p*」は「pqr.c」に
>       はマッチしない)

 「MS-DOS 本来」っていっても色々ヴァージョンありますから、ということか
な、と思うのですが、XP、モバギ(dos 6.20 )とも「>dir p*」でマッチして
しまったのですが、実験がどこか間違っておりますでしょうか。 いえ、wild の
作者なら、きっと分かるだろうと…。そうかぁ、ワイルドカードの展開って、そ
う簡単なことじゃないんですね。今頃わかってる…。m(__)m
・ツリー全体表示

【135】おお、できた!(xeq!)
 文太  - 2008/10/15(水) 22:56 -

引用なし
パスワード
   Siさん

 ありがとうございました。xeq (execute なのね)は濃すぎて、まだまだ解析
途上ですが、おもしろいですね。wild に似てるし、そのあたりの原理的なこと
が分かるようになれるみたいで楽しみです。「Dosのワイルドカードの制限っ
てそういうのなの。UNIX は、そうなってるんだ」という具合です。

C:\>xeq dir `which -m -w grep`

ドライブ C: のボリュームラベルはありません.
ボリュームシリアル番号は 5094-14F9
ディレクトリは C:\BIN

GREP   EXE   90959 94-06-02  18:50
    1 個      90959 バイトのファイルがあります.
          932444160 バイトが使用可能です.

C:\>xeq dir `which -m -w debug`

ドライブ C: のボリュームラベルはありません.
ボリュームシリアル番号は 5094-14F9
ディレクトリは C:\WINDOWS\SYSTEM32

DEBUG  EXE   23834 03-04-03  21:00
    1 個      23834 バイトのファイルがあります.
          932444160 バイトが使用可能です.

 For と pansi.com については、まぁまぁ、ということで。いやあ、which あ
るのに、「何でまた?」とすぐ思ってしまう。また、cmd の壁もあるので…。
 そうです、「ふつう」pansi.com は、XPでは必要とされないのです。笑い。
もっとも、Vz用の起動バッチ(アイコン)を作っておいても便利は便利かもし
れませんけれど。めざらさんのところに、親切な案内がありますけれど…。

ttp://homepage3.nifty.com/mezala/vz/env/win/winxp.html
・ツリー全体表示

【134】Re:srepについて
 Si  - 2008/10/15(水) 1:18 -

引用なし
パスワード
   ▼文太さん:
> 「which もどき」が32ビット・アプリだとたぶん駄目です。16ビットなら
>Vzでコンソール・ファイルの参照ができます。

あ、書き方が悪かったですね。
「which もどき」は単独のアプリではなくて、ひとつのバッチファイルで "which もどき + dir" を実現する、というものです。

実際のバッチファイルの中身は、

@echo off
for %%I in (%1 %1.com %1.exe %1.bat %1.cmd) do if exist %%~$path:I dir %%~$path:I

これだけです。dir のところは command /cdir に置き換えたりしてみて下さい。

ttp://www.atmarkit.co.jp/fwin2k/win2ktips/319which/which.html

↑ここのサイトを参考にしました。

>とpansi.comを仕込むといけますよ。

pansi.com(pansi.sys) は RCP32 についてのめざらさんとのやりとりの中で出てきたので、その時に一応ダウンロードはしてみました。
が、元々、DOS から Windows2000 まで PC-98x1 ユーザーだった自分には ansi.sys さえ何者なのか良く分からないレベルでして、pansi.com(pansi.sys) も結局落としたままになっています(これでめざらさんとのやりとりも中途半端になってしまったのですが)。

自分の使用環境では、普通に(と書くと語弊がありますが)使う分には素のコマンドプロンプトで問題ないのです(と勝手に思ってます)。

で、再び本題に戻ります。

あれこれ思いつくままに試していたのですが、UNIX-like tools(Ver 4.12f)を使ってみたら、

C:\>xeq dir `which -m -w grep`

ドライブ C: のボリュームラベルはありません.
ボリュームシリアル番号は XXXX-XXXX
ディレクトリは C:\BCB6\BIN

GREP   EXE  102400 02-03-08  6:00
    1 個     102400 バイトのファイルがあります.
         1014699520 バイトが使用可能です.

こんなんが出来ました。
Vz 環境では試してません(素のコマンドプロンプトです)。
・ツリー全体表示

【133】Re:srepについて
 文太  - 2008/10/14(火) 15:17 -

引用なし
パスワード
    慌てて追記。

 「which もどき」が32ビット・アプリだとたぶん駄目です。16ビットなら
Vzでコンソール・ファイルの参照ができます。
・ツリー全体表示

【132】Re:srepについて
 文太  - 2008/10/14(火) 15:12 -

引用なし
パスワード
   Siさん

> which debug |sed s/\//\\/g
> こんなのはどうでしょう?文太さんには釈迦に説法ですね ^^;

 釈迦説でもないですが、同じソリューションを某所でも提案されました。
 ただ僕は別な場面でも同じ課題にあたったので、昨晩、マクロを書きました。

> うーん、これでも dir コマンドにつながらない・・・

 繋がりません。「c:/hog/foo.txt」を「c:\hog\foo.txt」に変換してPSに
入れるという手前までのマクロでした。で、dirを書き加えて実行。あるいはPF
に入れてタグジャンプ。

>  実は、 which もどきと dir を合体させたバッチファイルも作ってみたのです
> が、 Vz のコマンドラインからでは出力結果が得られませんでした(dir じゃな
> くて command /c dir で書きましたけど)。

 バッチで勝算がありましたでしょうか?
 えーと、XPでのコンソール・ファイルという意味でしょうか? でしたらVz
起動バッチで(autoexec.vzt <- autoexec.ntがオリジナル)、

vkeyc.com
vwx -z2 -l6144 -x1 -v3
pansi.com            ;★コレ
vz -z
cls

 とpansi.comを仕込むといけますよ。
ttp://hp.vector.co.jp/authors/VA003655/
 ですが。

 外れかな?
・ツリー全体表示

【131】Re:srepについて
 Si  - 2008/10/14(火) 0:31 -

引用なし
パスワード
   ▼文太さん:
>しかありませんかね。やれやれだなぁ。「\」と「/」が憎いなぁ、やっぱり。

which debug |sed s/\//\\/g

こんなのはどうでしょう?文太さんには釈迦に説法ですね ^^;
うーん、これでも dir コマンドにつながらない・・・

実は、which もどきと dir を合体させたバッチファイルも作ってみたのですが、Vz のコマンドラインからでは出力結果が得られませんでした(dir じゃなくて command /c dir で書きましたけど)。
・ツリー全体表示

【130】Re:srepについて
 文太  - 2008/10/12(日) 23:01 -

引用なし
パスワード
   Siさん

> す、すみません。作者のくせに間違った動作説明をしていました。

 やっぱ。すいません、お手数をお掛けしました。最初そんな気がしたのですが、

C:\>which debug |srep dir

 が現実的な課題だったものですから。(発見はXPのdebug.exeは16ビット・
アプリだったということ、どうでもよい)

 すると、上の課題は、素直に

C:\>which debug
c:/windows/system32/debug.exe        ;これをVzでマニュアル取得

C:\>command.com /cdir c:/windows/system32/debug.exe
が駄目なので(やれやれ)

C:\>command.com /cdir c:\windows\system32\debug.exe    ;手で書き換え
                            (マクロ書くか?)
ドライブ C: のボリュームラベルはありません.
ボリュームシリアル番号は 5094-14F9
ディレクトリは C:\WINDOWS\SYSTEM32

DEBUG  EXE   23834 03-04-03  21:00
    1 個      23834 バイトのファイルがあります.
          933289472 バイトが使用可能です.

しかありませんかね。やれやれだなぁ。「\」と「/」が憎いなぁ、やっぱり。
こんなこと滅多にしないのでよいのですが、やってることがものすごく泥臭くて
惨めなものですから。

因みに、>command.com /cdirは、Vzでコンソールファイルを取るためです。
・ツリー全体表示

【129】Re:srepについて
 Si  - 2008/10/12(日) 18:01 -

引用なし
パスワード
   ▼文太さん:
>Siさん
>
>> 使い方は問題なさそうです。期待した動作にならないのは srep 側の問題ですね。
>
> そうですかぁ。(>_<) m(__)m 
> てっきり使い方がいけないのかと。因みに純Dosでもまったく同じように展開
>(?)されているようでした。

す、すみません。作者のくせに間違った動作説明をしていました。

SREP の動作の簡単な説明をしますと、

1.最初のコマンドの(stdout への)出力結果をテンポラリファイルに保存します。
  (テンポラリファイル名は毎回保存しなければ、_SREP0.$$$ です)
2.次に2番目のコマンドにはこのテンポラリファイル(のフルパス名)を渡します。

従って、

C:\>which debug |srep dir

を実行したときに、 dir に引数として渡されるのは、_SREP0.$$$ のフルパス名となります。

例えば、
dir /b /s *.pat | srep vzibmj

これは、

vzibmj C:\WINDOWS\Temp\_SREP0.$$$

と展開されます(テンポラリディレクトリが "C:\WINDOWS\Temp"の場合)。
(dir に /s オプションを付けているのはこれをやらないとフルパス名にならないので)

また、
dir /b /s *.pat | srep /@ vzibmj

とやると、

vzibmj @C:\WINDOWS\Temp\_SREP0.$$$

と展開され、_SREP0.$$$ をレスポンスファイルとみなしてそこに(フルパス名で)書かれたファイルを Vz で開きます。

ちなみに、ここで vzibmj.com を直接指定しているのは vz.bat だと何故かうまくいなかかった為です。

dir /b /s *.pat | srep vz.bat
コマンドまたはファイル名が違います.
*** 動作機種が違います(Illegal hardware).

こうなってしまいました。

ということで、正しい回答は、

「期待した動作にならないのは srep 側の仕様です。」

でございます。

# /b オプションの動作が何だか変なことに気付きました。とりあえずこのオプションは見なかったことにしておいて下さい ^^;
・ツリー全体表示

【128】Re:LOGSORTW ver1.25.2
 文太  - 2008/10/11(土) 13:28 -

引用なし
パスワード
   Siさん(変な展開で、すいません)
としきさん、ありがと。うふ。


C:\>lcc addtail.c
lld @link.i

C:\>command.com /cdir addtail.exe

ADDTAIL EXE   6319 08-10-11  13:15
    1 個      6319 バイトのファイルがあります.
          957803520 バイトが使用可能です.

C:\>type test.txt
aaaaaaaaaaaaa
bbbbbbbbbbbbbbb
C:\>addtail test.txt
^C

C:\>addtail <test.txt
aaaaaaaaaaaaa
bbbbbbbbbbbbbbb
                ;ココだよん\(^_^)/
C:\>type OK.txt
/* LSI-Cで動作確認済み */    ;the first ever compling of C program!!!

C:\>type addtail.c
#include <stdio.h>
int main(){int c;
while((c=getchar())!=EOF)putchar(c);
if(c!='\n' && c!=0x0d && c!=0x0a)putchar('\n')    ;ここがいけない
}            ;のは分かってたのだけど、#include <ctype.h>
            ;でも駄目だった。ありがとうございました。
            ;読めます、だいたい。m(__)m
・ツリー全体表示

【127】Re:LOGSORTW ver1.25.2
 としき WEB  - 2008/10/11(土) 12:53 -

引用なし
パスワード
   ▼文太さん:

> ダウト!

うあ〜、あと1枚だったのに〜!


まじめな話、敗因は、書き込む直前に

#include "mylib.h"

を削除してしまった事だと思います。
だよなぁ。ちょっと自信なし。
ということで、修正版。

#include <stdio.h>
int main(){int c;
while((c=getchar())!=EOF)putchar(c);
if(c!='\n' && c!=0x0d && c!=0x0a)putchar('\n');
}
/* LSI-Cで動作確認済み */

今度は大丈夫、だといいなぁ。
・ツリー全体表示

【126】Re:srepについて
 文太  - 2008/10/10(金) 18:58 -

引用なし
パスワード
   Siさん

> 使い方は問題なさそうです。期待した動作にならないのは srep 側の問題ですね。

 そうですかぁ。(>_<) m(__)m 
 てっきり使い方がいけないのかと。因みに純Dosでもまったく同じように展開
(?)されているようでした。

> LOGSORT の正式版、WILD、srep の 32bit化、何だか一気にいくつも宿題が出てき
> てしまいましたが、しばし時間を下さい。

 どうぞ、どうぞ、ごゆっくり。一つずつ、一つずつ。
・ツリー全体表示

【125】Re:LOGSORTW ver1.25.2
 文太  - 2008/10/10(金) 18:02 -

引用なし
パスワード
   > /* LSI-Cで動作確認済み */

 ダウト!
・ツリー全体表示

【124】Re:LOGSORTW ver1.25.2
 としき WEB  - 2008/10/09(木) 22:09 -

引用なし
パスワード
   ▼文太さん:

> どうでもいいメモです(すいません)。

どうでもいいレスをつけさせていただきます。
つまらんもので引きずって申し訳ない。>Siさん

>方法4
>>jgawk "{print}" file    #素直、素直

方法4’
>jgawk "1" file    #ひねくれ

方法6
#include <stdio.h>
int main(){int c;
while((c=getchar())!=EOF)putchar(c);
if(c!='\n' && c!='\r' && c!='\l')putchar('\n');
}
/* LSI-Cで動作確認済み */

何やってんだか。


> とやるのが吉なわけです。いいねぇ、ワイルド。m(__)m

いや、全く。

・ツリー全体表示

2 / 9 ページ ←次へ | 前へ→
ページ:  ┃  記事番号:
14,033
(SS)C-BOARD v3.8 is Free