TopPCパッチ > パッチをあてる(その2:パッチを作る)
2006年2月 9日

パッチをあてる(その2:パッチを作る)

Posted at February 9,2006 11:58 PM
Category:[パッチ]
Tag:[, ]

パッチをあてる(その1:適用方法)の続きで(随分間があきましたが)、今回はパッチを作る方法をご紹介します。

パッチとはプログラムを修正するための差分、あるいは差分が記述されたファイルを指します。パッチを作るためには変更前のファイルと変更後のファイルを比較して、その差分を抽出します。比較するためには diff コマンドを利用します。

ここではその1の3.1項と同じ、下記のパッチを作ってみることにします。

--- Util.pm.bak Fri Jan 06 14:19:44 2006
+++ Util.pm     Fri Jan 06 14:20:48 2006
@@ -401,7 +401,7 @@
     $str ||= '';
     my @paras = split /\r?\n\r?\n/, $str;
     for my $p (@paras) {
-        if ($p !~ m@^</?(?:h1|h2|h3|h4|h5|h6|table|ol|dl|ul|menu|dir|p|pre|center|form|fieldset|select|blockquote|address|div|hr)@) {
+        if ($p !~ m@^</?(?:h1|h2|h3|h4|h5|h6|menu|dir|p|pre|center|form|fieldset|select|address|div|hr)@) {
             $p =~ s!\r?\n!<br />\n!g;
             $p = "<p>$p</p>";
         }

作業ディレクトリは前回と同様、C:¥work とします。その1で作ったファイル類は全て削除しておいてください。

1.diff コマンドの準備

パッチの作成にあたっては diff コマンドを使用します。Linux ではデフォルトで用意されているようですが、Windows では用意されていません。
ということで、diff コマンドをソフトウェア工房αから入手します。

プログラミング・ツール(移植ソフト)に表示されている、

diff272w.zip
をクリックし、解凍した中にある
diff.exe

をPCの任意のディレクトリに配置します(他にファイルが色々入ってますが今回は使いません)。C:¥WINDOWS 配下または C:¥WINDOWS¥system32 配下に配置できれば、後述するMS-DOSコマンドプロンプトからの起動でパスを指定せずに実行することができます。
配置できない場合はとりあえず C:¥ 配下においてください。

2.ファイルのバックアップ

修正するファイルとなる、lib/MT/Util.pm をコピーして Util.pm.bak というファイル名で保存してください。なお修正前のファイル名が Util.pm.bak、修正後のファイル名が Util.pm となります。これは修正後のファイルを正規のファイルとして使用するためです。いずれも C:¥work 配下に配置してください。

3.ファイルの修正

任意のエディタで work 配下に配置した Util.pm を開き、404 行目の

if ($p !~ m@^</?(?:h1|h2|h3|h4|h5|h6|table|ol|dl|ul|menu|dir|p|pre|center|form|fieldset|select|blockquote|address|div|hr)@) {

if ($p !~ m@^>/?(?:h1|h2|h3|h4|h5|h6|menu|dir|p|pre|center|form|fieldset|select|address|div|hr)@) {

に修正します。

4.diff 実行

次に MS-DOS コマンドプロンプトを開き、

C:¥>cd work

で、work ディレクトリへ移動し、diffコマンド

C:¥work>diff -u Util.pm.bak Util.pm

を実行します。Cドライブ直下に diff.exe を置いている場合は、

C:¥work>C:¥diff -u Util.pm.bak Util.pm

とします。
2つのファイルには、先程修正した差分がありますので、画面に

--- Util.pm.bak Fri Jan 06 14:19:44 2006
+++ Util.pm     Fri Jan 06 14:20:48 2006
@@ -401,7 +401,7 @@
     $str ||= '';
     my @paras = split /\r?\n\r?\n/, $str;
     for my $p (@paras) {
-        if ($p !~ m@^</?(?:h1|h2|h3|h4|h5|h6|table|ol|dl|ul|menu|dir|p|pre|center|form|fieldset|select|blockquote|address|div|hr)@) {
+        if ($p !~ m@^</?(?:h1|h2|h3|h4|h5|h6|menu|dir|p|pre|center|form|fieldset|select|address|div|hr)@) {
             $p =~ s!\r?\n!<br />\n!g;
             $p = "<p>$p</p>";
         }

が表示されます。これがパッチとなります。diff コマンドの後の "-u" を省略すると差分の行だけが表示されます。

これをマウスコピーして任意のエディタで新しいファイルを開き、ペースト&保存しても良いのですが、

C:¥work>diff -u Util.pm.bak Util.pm > patch.txt

を実行すれば work 配下に patch.txt というファイル名で直接保存することができます。これがパッチファイルとなり、その1の3.1項で作ったパッチファイルと同じものになります。

他のファイルでも同様に差分を表示することができますので、色々とお試しください。

Posted by yujiro
関連記事
人気エントリー
トラックバックURL


コメントする

*必須



お知らせ:2008年5月現在、多忙のため、7月頃までコメントを速やかに回答できない状態が続きます。ご質問の内容によっては回答が7月以降になる可能性がありますので、予めご了承ください。

太字 イタリック アンダーライン ハイパーリンク 引用

コメント投稿後にScript Errorや500エラーが表示された場合は、すぐに再送信せず、ブラウザの「戻る」ボタンで一旦エントリーのページに戻り(プレビュー画面で投稿した場合は、投稿内容をマウスコピーしてからエントリーのページに戻り)、ブラウザをリロードして投稿コメントが反映されていることを確認してください。

コメント欄に(X)HTMLタグやMTタグを記述される場合、「<」は「&lt;」、「>」は「&gt;」と入力してください。例えば「<$MTBlogURL$>」は「&lt;$MTBlogURL$&gt;」となります(全て半角文字)

Now loading...
Entries of this Category
QRcode

現在停止中です
携帯電話からこのQRcodeを撮影することで携帯用URLを取得することができます

URI for cellular phones
ギターに入った猫
Styles
Font Size
Default
For defective color vision
Gray Scale
RGB Color
Search this site

このブログをメールで購読する by:FeedBurner

loading ...
BlogPeople
Now loading...
Syndicate this site
FeedBurner(RSS1.0/RSS2.0/Atom)
Counter
これまでのアクセス
クリエイティブ・コモンズ・ライセンス
Powered by
Movable Type 4.1
 
List Me!