66 Commits

Author SHA1 Message Date
Yutaka Sawada
aa9715b4f8 Remove OpenCL device test 2025-10-25 13:30:44 +09:00
Yutaka Sawada
12250bb7a3 Release note of version 1.3.3.5 2025-10-10 11:26:34 +09:00
Yutaka Sawada
a44c7e1bd6 Add version 1.3.3.5 files 2025-10-10 11:21:44 +09:00
Yutaka Sawada
5e79e740bd Precise packet repetition value 2025-06-25 19:42:34 +09:00
Yutaka Sawada
15615e9b4d Change character encoding 2025-05-02 21:51:10 +09:00
Yutaka Sawada
0bc6db578b Update version number 2025-05-02 21:49:37 +09:00
Yutaka Sawada
12667ef6fa Update version number 2025-05-02 21:44:41 +09:00
Yutaka Sawada
f4ae7d8d01 Update CRC-32 of .EXE files 2025-05-02 10:59:49 +09:00
Yutaka Sawada
283e86d754 Change option usage 2025-03-16 11:28:47 +09:00
Yutaka Sawada
df7757b110 Change option usage 2025-03-16 11:27:10 +09:00
Yutaka Sawada
e32168b44b Change option usage 2025-03-16 11:25:24 +09:00
Yutaka Sawada
6bbe98b1dd only support System DPI Awareness 2025-02-27 10:59:50 +09:00
Yutaka Sawada
82a9c4d42e Remove same image 2025-01-21 19:02:28 +09:00
Yutaka Sawada
4a230286b3 Remove same image 2025-01-21 19:01:49 +09:00
Yutaka Sawada
8fdf1b8b7a Add donation page 2025-01-21 10:35:32 +09:00
Yutaka Sawada
1905edf000 Update donation page 2025-01-20 10:26:58 +09:00
Yutaka Sawada
9ae3422246 Update donation page 2025-01-20 10:25:51 +09:00
Yutaka Sawada
c386404dd5 Change some words 2024-12-18 10:37:48 +09:00
Yutaka Sawada
eaf5c9ffd2 Change some words 2024-12-18 10:37:26 +09:00
Yutaka Sawada
d04e123ca6 Change some words 2024-12-18 10:37:08 +09:00
Yutaka Sawada
00dc442fce Change some words 2024-12-18 10:36:28 +09:00
Yutaka Sawada
164e34061d Add caution against syntax 2024-12-17 17:36:31 +09:00
Yutaka Sawada
256d6e6bca Add caution against syntax 2024-12-17 17:36:00 +09:00
Yutaka Sawada
4a1c0826f8 Add caution against syntax 2024-12-17 17:35:42 +09:00
Yutaka Sawada
d3cd266b3e Add caution against syntax 2024-12-17 17:35:20 +09:00
Yutaka Sawada
4986d7ceef Release note of version 1.3.3.4 2024-11-30 14:05:11 +09:00
Yutaka Sawada
21142c2193 Windows Vista is removed from supported OS. 2024-11-30 13:13:15 +09:00
Yutaka Sawada
4f0d44fc33 Add files via upload 2024-11-30 13:10:42 +09:00
Yutaka Sawada
bdf34533f6 Add files via upload 2024-11-30 13:10:12 +09:00
Yutaka Sawada
403807899e Add files via upload 2024-11-30 13:09:46 +09:00
Yutaka Sawada
e01e977a66 Add files via upload 2024-11-30 13:09:19 +09:00
Yutaka Sawada
80969d19f9 Excluded Windows Vista 2024-11-30 13:08:09 +09:00
Yutaka Sawada
9d9b7a0681 Excluded Windows Vista 2024-11-30 13:06:17 +09:00
Yutaka Sawada
7fcedddeeb Excluded Windows Vista 2024-11-30 12:58:22 +09:00
Yutaka Sawada
4a9419b1ee Excluded Windows Vista 2024-11-30 12:56:43 +09:00
Yutaka Sawada
4545803963 Comment out a debug output 2024-11-30 11:08:13 +09:00
Yutaka Sawada
a9fa31c99b Update some help 2024-11-01 19:53:03 +09:00
Yutaka Sawada
de6529aada Improve GUI 2024-11-01 19:50:21 +09:00
Yutaka Sawada
d733ada21a Additional options for par2j 2024-08-04 21:47:01 +09:00
Yutaka Sawada
9a7b86f550 Add usage of MultiPar.ini 2024-08-04 21:44:22 +09:00
Yutaka Sawada
3ac6c9336a Change factors for CPU cache optimization 2024-08-04 21:41:24 +09:00
Yutaka Sawada
ad90e2db8d My page on vector.co.jp will disapper. 2024-07-17 19:43:38 +09:00
Yutaka Sawada
c87bc4acff Change URL of author page 2024-07-17 19:41:35 +09:00
Yutaka Sawada
be2d6faa97 Change URL of author page 2024-07-17 19:39:24 +09:00
Yutaka Sawada
df56ab72ea Add files via upload 2024-07-17 19:37:33 +09:00
Yutaka Sawada
cdf7f28d7a Change URL of author page 2024-07-17 19:37:02 +09:00
Yutaka Sawada
8ea1d08db8 Change URL of author page 2024-07-17 19:36:40 +09:00
Yutaka Sawada
900622082a Change URL of author page 2024-07-17 19:36:18 +09:00
Yutaka Sawada
0fabed9766 Change URL of author page 2024-07-17 19:35:58 +09:00
Yutaka Sawada
cd5ab741cb Change URL of author page 2024-07-17 19:35:37 +09:00
Yutaka Sawada
0cc9ddd815 Change URL of author page 2024-07-17 19:35:15 +09:00
Yutaka Sawada
29068e2496 Change URL of author page 2024-07-17 19:34:52 +09:00
Yutaka Sawada
770bfbf528 Change URL of author page 2024-07-17 19:34:27 +09:00
Yutaka Sawada
65db882952 Change URL of author page 2024-07-17 19:34:01 +09:00
Yutaka Sawada
20f19c80a8 Change URL of author page 2024-07-17 19:33:35 +09:00
Yutaka Sawada
03d5f755b3 Change URL of author page 2024-07-17 19:33:00 +09:00
Yutaka Sawada
dbbb6070e0 remove some URLs 2024-07-17 19:15:55 +09:00
Yutaka Sawada
1672c7fb12 remove some URLs 2024-07-17 19:15:27 +09:00
Yutaka Sawada
9feae04c99 remove some URLs 2024-07-17 19:15:01 +09:00
Yutaka Sawada
3fbec6a217 remove some URLs 2024-07-17 19:14:38 +09:00
Yutaka Sawada
c400c6a430 Add Korean translation 2024-07-02 12:42:33 +09:00
Yutaka Sawada
6039aad298 Add Korean translation 2024-07-02 09:47:29 +09:00
Yutaka Sawada
1cb67e8f68 Add Korean UI 2024-07-01 11:44:52 +09:00
Yutaka Sawada
d624e2e8d4 Add Korean resource script 2024-07-01 11:43:35 +09:00
Yutaka Sawada
cad1b37140 Add folder 2024-07-01 11:42:47 +09:00
Yutaka Sawada
d860bc0904 Add files via upload 2024-07-01 11:41:50 +09:00
105 changed files with 837 additions and 375 deletions

View File

@@ -1,55 +1,52 @@
# MultiPar # MultiPar
### v1.3.3.3 is public ### v1.3.3.5 is public
  I fixed a few rare bugs in this version.   This is a minor update version.
While most users were not affected by those problems, If there is no serious problem in this version,
those who saw the matter would better use new version. next version will be the last of v1.3.3 tree.
If there is a problem still, I will fix as possible as I can.
I updated some help documents about Batch script.
I mentioned the location of help files in ReadMe text.
  New version supports a PC with max 8 OpenCL devices.   It's difficult to support multi-monitor of different DPI.
Thanks [Yi Gu for reporting bug in a rare environment](https://github.com/Yutaka-Sawada/MultiPar/issues/110). Thanks [kwinz for reporting this problem](https://github.com/Yutaka-Sawada/MultiPar/issues/146).
I didn't think a user put so many OpenCL devices on a PC. Though I could not solve blurry window on multi-monitor case, users can see what it is.
It will detect a Graphics board correctly.
  I improved source file splitting feature at creating PAR2 files.   I added an optional feature to set max size of recovery files directly.
Thanks [AreteOne for reporting bug and suggestion of improvment](https://github.com/Yutaka-Sawada/MultiPar/issues/117). For details, refer `Command_GUI.txt` and `Command_par2j.txt` in `help` folder of MultiPar.
When file extension is a number, it didn't handle properly.
If someone saw strange behavior at file splitting ago, it should have been solved in this version.
  I fixed a bug in verifying external files.   My web-pages on `vector.co.jp` disappered at 2024 December 20.
It might not find the last slice in a source file, when the file data is redundant. Thanks Vector to support MultiPar for long time.
Thanks [dle-fr for reporting bug and testing many times](https://github.com/Yutaka-Sawada/MultiPar/issues/130). I use [this GitHub page](https://github.com/Yutaka-Sawada/MultiPar) for MultiPar announcement.
This solution may improve verification of damaged files, too.
When source files are mostly random data like commpressed archive, there was no problem.
[ Changes from 1.3.3.2 to 1.3.3.3 ] [ Changes from 1.3.3.4 to 1.3.3.5 ]
Installer update Installer update
- Inno Setup was updated from v6.2.2 to v6.3.1. - Inno Setup was updated from v6.3.1 to v6.5.4.
GUI update
- Change
- While it supports high DPI, it looks blurry on multi-monitor of different DPI.
- It's possible to set maximum packet repetition from 1 time to 6 times.
PAR2 client update PAR2 client update
- Bug fix - Change
- Fixed a bug in GPU acceleration, when there are many OpenCL devices. - It's possible to set max size of recovery files directly.
- Failure of splitting source files with numerical extension was fixed.
- Faulty prediction of the last block in a file with repeated data was fixed.
[ Hash value ] [ Hash value ]
MultiPar1333.zip   MultiPar1335.zip
MD5: 01A201CA340C33053E6D7D2604D54019 MD5: 22F3840CDCA56CDBFA39E872D337B460
SHA1: F7C30A7BDEB4152820C9CFF8D0E3DA719F69D7C6 SHA1: A332E230137F6BDF594CD0EB7B6A5130D1CFE71C
  MultiPar1335_setup.exe
MD5: 2D178ED0E66C6AD0AE5C3507A6643EF5
SHA1: BA04FD62391351F0698B1BCAD384DD95DEA1E8C3
MultiPar1333_setup.exe
MD5: 33F9E441F5C1B2C00040E9BAFA7CC1A9
SHA1: 6CEBED8CECC9AAC5E8070CD5E8D1EDF7BBBC523A
  To install under "Program Files" or "Program Files (x86)" directory,   To install under "Program Files" or "Program Files (x86)" directory,
you must select "Install for all users" at the first dialog. you must select "Install for all users" at the first dialog.
  Old versions and source code packages are available at   Old versions and source code packages are available at
[GitHub](https://github.com/Yutaka-Sawada/MultiPar/releases) or [GitHub](https://github.com/Yutaka-Sawada/MultiPar/releases) or
[OneDrive](https://1drv.ms/f/c/8eb5bd32c534a1d1/QtGhNMUyvbUggI5pAAAAAAAAKjWf9HxrAn-GDQ). [OneDrive](https://1drv.ms/f/c/8eb5bd32c534a1d1/QtGhNMUyvbUggI5pAAAAAAAAKjWf9HxrAn-GDQ).

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -25,7 +25,7 @@ Be careful to use those special features.
[ System requirement ] [ System requirement ]
MultiPar requires a PC with Windows Vista or later (Windows 7, 8, 10, 11). MultiPar requires a PC with Windows 7 or later (Windows 8, 10, 11).
[ Usage manual or Help documents ] [ Usage manual or Help documents ]
@@ -146,9 +146,6 @@ so you need to move "MultiPar.ini" into the folder, too.
They are written by Yutaka Sawada. They are written by Yutaka Sawada.
Though console applications are open source (PAR clients are GPL), Though console applications are open source (PAR clients are GPL),
GUI application is closed source. GUI application is closed source.
Some article are available at my web site.
(URL: "https://hp.vector.co.jp/authors/VA021385/")
If you want source code, contact with me by e-mail.
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
@@ -174,10 +171,8 @@ mail server may delete it automatically, and I won't see it.
[ Link ] [ Link ]
I use Vector 's author page to introduce MultiPar. You may download the latest version of MultiPar on GitHub.
(URL: "https://hp.vector.co.jp/authors/VA021385/") (URL: "https://github.com/Yutaka-Sawada/MultiPar")
Because there is another official download page, There is a Japanese download page on Vector.
(URL: "https://www.vector.co.jp/soft/dl/winnt/util/se460801.html") (URL: "https://www.vector.co.jp/soft/dl/winnt/util/se460801.html")
using direct link to files on the page isn't preferable.
When you write a link on somewhere, please don't include filename.

View File

@@ -54,7 +54,7 @@ QuickPar など他の PAR クライアントはコメント機能に対応して
[ 動作環境 ] [ 動作環境 ]
 Windows Vista かそれ以降 (Windows 7, 8, 10, 11) のパソコンが必要です。  Windows 7 かそれ以降 (Windows 8, 10, 11) のパソコンが必要です。
[ 使い方や解説文章 ] [ 使い方や解説文章 ]
@@ -219,9 +219,9 @@ GitHubのissueページに書き込んでもいいです。
[ リンク ] [ リンク ]
 ベクターの作者ページでは外国人向けに MultiPar を紹介しています。  MultiPar の最新版は GitHub からダウンロードできます。
(URL: "https://hp.vector.co.jp/authors/VA021385/") (URL: "https://github.com/Yutaka-Sawada/MultiPar")
ベクターの正式なダウンロード・ページは別にあります。 ベクターの日本語ダウンロード・ページあります。
(URL: "https://www.vector.co.jp/soft/dl/winnt/util/se460801.html") (URL: "https://www.vector.co.jp/soft/dl/winnt/util/se460801.html")
日本人向けにリンクを載せる際は、ベクターの作品紹介ページにしてください。 日本人向けにリンクを載せる際は、ベクターの作品紹介ページにしてください。
(URL: "https://www.vector.co.jp/soft/winnt/util/se460801.html") (URL: "https://www.vector.co.jp/soft/winnt/util/se460801.html")

View File

@@ -1,7 +1,46 @@
Release note of v1.3.3 tree Release note of v1.3.3 tree
par2j's "lc" option was changed to support more threads. par2j's "lc" option was changed to support more threads.
Windows Vista will be removed from supported OS. Windows Vista was removed from supported OS.
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
[ Changes from 1.3.3.5 to 1.3.3.6 ] (2025/10/25)
GUI update
Change
GPU option is enabled always, even when GPU device doesn't exist.
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
[ Changes from 1.3.3.4 to 1.3.3.5 ] (2025/10/10)
Installer update
Inno Setup was updated from v6.3.1 to v6.5.4.
GUI update
Change
While it supports high DPI, it looks blurry on multi-monitor of different DPI.
It's possible to set maximum packet repetition from 1 time to 6 times.
PAR2 client update
Change
It's possible to set max size of recovery files directly.
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
[ Changes from 1.3.3.3 to 1.3.3.4 ] (2024/11/30)
Installer update
Korean language is available at installation.
GUI update
New
Korean language UI is added.
It's possible to add options for par2j on MultiPar.ini file.
Change
Link of Vector's author page is removed. Use GitHub's MultiPar page.
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */

View File

@@ -1,6 +1,8 @@
v1.3.3 の更新情報 (2024/06/15) v1.3.3 の更新情報 (2025/10/10)
 Windows Vista を動作対象の OS から外す予定です  Windows Vista を動作対象の OS から外しました
 Vector のページが無くなるので、GitHub のページを使ってください。
https://github.com/Yutaka-Sawada/MultiPar
[ 1.3.2 から 1.3.3 への変更点 ] [ 1.3.2 から 1.3.3 への変更点 ]

View File

@@ -13,13 +13,37 @@
<p>&nbsp <p>&nbsp
While MultiPar is available as freeware, I spent a lot of time and effort to develop. While MultiPar is available as freeware, I spent a lot of time and effort to develop.
Your donation will encourage me to continue my efforts to improve and support MultiPar. Your donation will encourage me to continue my efforts to improve and support MultiPar.
I made PayPal account and quick link for donation.<br> I made PayPal account and quick link for donation.
<ol> </p>
<li>Click <a href="https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=NPNAKA32N4GD6" target="_blank" title="PayPal - The safer, easier way to pay online!">this link</a> to go PayPal's web-page.
<li>On left panel, you can change Quantity, and click Update to multiply the Amount. <p>
<li>On right panel, you select your PayPal account or Credit card. If you want to send message to me, use below web-form.
<li>You may write Message to developer at the bottom of right panel. Select how much amount, write message, and click Doante button.
</ol> <center>
<form action="https://www.paypal.com/cgi-bin/webscr" method="post" target="_top">
<input type="hidden" name="cmd" value="_s-xclick">
<input type="hidden" name="hosted_button_id" value="2PP6DCPP5ZGNJ">
<table border=0 cellspacing=0 cellpadding=0>
<tr><td><input type="hidden" name="on0" value="How much">How much:<br>
<select name="os0">
<option value="Cheer">Cheer $10.00 USD</option>
<option value="Encouragement">Encouragement $20.00 USD</option>
<option value="Premium">Premium $30.00 USD</option>
<option value="Subsidy">Subsidy $40.00 USD</option>
<option value="Surprise">Surprise $50.00 USD</option>
</select></td><td>&nbsp&nbsp</td>
<td><input type="hidden" name="on1" value="Short message">Short message:<br>
<input type="text" name="os1" maxlength="200" size="48"></td><td>&nbsp&nbsp</td>
<td><input type="image" src="paypal.gif" border="0" name="submit" alt="PayPal - The safer, easier way to pay online!"></td></tr>
</table>
<input type="hidden" name="currency_code" value="USD">
</form>
</center>
</p>
<p>
If you don't write message, click <a href="https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=NPNAKA32N4GD6" target="_blank" title="PayPal - The safer, easier way to pay online!">this link</a> to go PayPal's web-page.
You may change Quantity to multiply the total amount.
</p> </p>
<p> <p>

View File

@@ -51,7 +51,7 @@ There are command-line manuals in "<tt>help</tt>" folder.
</table> </table>
<hr> <hr>
<small>last update 2024/04/13 for version 1.3.3.3</small> <small>last update 2025/01/20 for version 1.3.3.5</small>
</body> </body>
</html> </html>

BIN
alpha/help/0409/paypal.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.9 KiB

View File

@@ -178,12 +178,15 @@ Furthermore, you must set proper <tt>save_path</tt> in the script.
</table> </table>
</p> </p>
<p>&nbsp <p>&nbsp
In this sample, it tries verification only. In this sample, it tries verification at first.
If you want to repair a damaged set automatically, use <tt>repair</tt> command instead of <tt>verify</tt> of par2j. If you want to repair a damaged set automatically, check "Repair" item on the GUI panel.
When you want to confirm result by MultiPar, select a PAR2 set and push "Open with MultiPar" button. When you want to confirm result by MultiPar, select a PAR2 set and push "Open with MultiPar" button.
You may repair on the MultiPar GUI. You may repair on the MultiPar GUI manually.
</p> </p>
<p>&nbsp <p>&nbsp
After you start verification queue, you may stop next verification by pushing "Stop" button.
After the queue was stopped, you may re-start queue by pushing "Start" button again.
Or, you may select another folder by pushing "Folder" button.
While verification, it shows details on Command Prompt window. While verification, it shows details on Command Prompt window.
You can control the progress by pushing a key on the Command Prompt. You can control the progress by pushing a key on the Command Prompt.
You may pause the process by pushing P-key. You may pause the process by pushing P-key.
@@ -194,7 +197,8 @@ Even when you stop the verification task, it may save result partially.
<p>&nbsp <p>&nbsp
When you push "Folder" button, it searches PAR2 sets in the selected folder. When you push "Folder" button, it searches PAR2 sets in the selected folder.
By default, It doesn't search files recursively, because it may be slow. By default, It doesn't search files recursively, because it may be slow.
If you want to search all sub-directories, you need to edit the script. If you want to search all sub-directories, select "Recursive" item on the GUI panel.
While you don't start verification yet, you may select another folder by pushing "Stop" button.
You may change behavior of starting verification automatically or not by editing the script. You may change behavior of starting verification automatically or not by editing the script.
</p> </p>

View File

@@ -31,7 +31,7 @@ Be careful to use those special features.
<h3>System requirement</h3> <h3>System requirement</h3>
<p>&nbsp <p>&nbsp
MultiPar requires a PC with Windows Vista or later (Windows 7, 8, 10, 11). MultiPar requires a PC with Windows 7 or later (Windows 8, 10, 11).
</p> </p>
<h3>Usage manual or Help documents</h3> <h3>Usage manual or Help documents</h3>

View File

@@ -13,9 +13,6 @@ MultiPar consists of PAR clients and GUI to control them.
They are written by Yutaka Sawada. They are written by Yutaka Sawada.
Though console applications are open source (PAR clients are GPL), Though console applications are open source (PAR clients are GPL),
GUI application is closed source. GUI application is closed source.
Some article are available at
<a href="https://hp.vector.co.jp/authors/VA021385/" target="_blank" title="Announcement page on Vector">my web site</a>.
There are source code packages on <a href="https://github.com/Yutaka-Sawada/MultiPar" target="_blank" title="GitHub page">GitHub</a>.
</p> </p>
<hr> <hr>
@@ -42,10 +39,8 @@ mail server may delete it automatically, and I won't see it.
<h3>Link</h3> <h3>Link</h3>
<p>&nbsp <p>&nbsp
I use <i>vector.co.jp</i>'s <a href="https://hp.vector.co.jp/authors/VA021385/" target="_blank" title="Announcement page on Vector">author page</a> to introduce MultiPar. You may download the latest version of <a href="https://github.com/Yutaka-Sawada/MultiPar" target="_blank">MultiPar on GitHub</a>.
Because there is another <a href="https://www.vector.co.jp/soft/dl/winnt/util/se460801.html" target="_blank" title="Download page on Vector">official download page</a>, There is <a href="https://www.vector.co.jp/soft/dl/winnt/util/se460801.html" target="_blank">a Japanese download page on Vector</a>.
using direct link to files on the page isn't preferable.
When you write a link on somewhere, please don't include filename.
</p> </p>
</body> </body>

View File

@@ -0,0 +1,48 @@
<html lang="ja">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS">
<link rel="stylesheet" href="style.css">
<title><EFBFBD><EFBFBD><EFBFBD>t<EFBFBD>̂<EFBFBD><EFBFBD></title>
</head>
<body>
<font size=5><EFBFBD><EFBFBD><EFBFBD>t<EFBFBD>̂<EFBFBD><EFBFBD></font>
<hr>
<h3>PayPal <20>ł̊<C582><CC8A>t<EFBFBD><74><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E882A2><EFBFBD>܂<EFBFBD></h3>
<p>&nbsp
MultiPar <20>͖<EFBFBD><CD96><EFBFBD><EFBFBD>ŗ<EFBFBD><C597>p<EFBFBD>ł<EFBFBD><C582>܂<EFBFBD><DC82><EFBFBD><EFBFBD>A<EFBFBD>J<EFBFBD><4A><EFBFBD>ɂ͎<C982><CD8E>ԂƎ<D482><C68E>Ԃ<EFBFBD><D482><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ă܂<C482><DC82>B
<EFBFBD><EFBFBD><EFBFBD>t<EFBFBD><EFBFBD><EFBFBD>Ē<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƁA<EFBFBD>J<EFBFBD><EFBFBD><EFBFBD>𑱂<EFBFBD><EFBFBD><EFBFBD><EFBFBD>C<EFBFBD>͂<EFBFBD><EFBFBD>o<EFBFBD>܂<EFBFBD><EFBFBD>B
PayPal <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>p<EFBFBD>ӂ<EFBFBD><D382><EFBFBD><EFBFBD>̂ŁA<C581><41><EFBFBD>Њ<EFBFBD><D08A>t<EFBFBD><74><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E882A2><EFBFBD>܂<EFBFBD><DC82>B
</p>
<p>
<EFBFBD><EFBFBD><EFBFBD>z<EFBFBD><EFBFBD><EFBFBD>I<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>āA<EFBFBD><EFBFBD><EFBFBD>b<EFBFBD>Z<EFBFBD>[<5B>W<EFBFBD><57><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>āADoante <20>{<7B>^<5E><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ă<EFBFBD><C482><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>B
<center>
<form action="https://www.paypal.com/cgi-bin/webscr" method="post" target="_top">
<input type="hidden" name="cmd" value="_s-xclick">
<input type="hidden" name="hosted_button_id" value="2PP6DCPP5ZGNJ">
<table border=0 cellspacing=0 cellpadding=0>
<tr><td><input type="hidden" name="on0" value="How much"><EFBFBD><EFBFBD><EFBFBD>z:<br>
<select name="os0">
<option value="Cheer">Cheer $10.00 USD</option>
<option value="Encouragement">Encouragement $20.00 USD</option>
<option value="Premium">Premium $30.00 USD</option>
<option value="Subsidy">Subsidy $40.00 USD</option>
<option value="Surprise">Surprise $50.00 USD</option>
</select></td><td>&nbsp&nbsp</td>
<td><input type="hidden" name="on1" value="Short message"><EFBFBD><EFBFBD><EFBFBD>҂ւ̃<EFBFBD><EFBFBD>b<EFBFBD>Z<EFBFBD>[<5B>W:<br>
<input type="text" name="os1" maxlength="200" size="48"></td><td>&nbsp&nbsp</td>
<td><input type="image" src="../0409/paypal.gif" border="0" name="submit" alt="PayPal - The safer, easier way to pay online!"></td></tr>
</table>
<input type="hidden" name="currency_code" value="USD">
</form>
</center>
</p>
<p>
<EFBFBD>V<EFBFBD>@<40>\<5C>̎<EFBFBD><CC8E><EFBFBD><EFBFBD><EFBFBD><EFBFBD>A<EFBFBD>o<EFBFBD>O<EFBFBD>񍐁A<F18D9081><41><EFBFBD>P<EFBFBD>̏<EFBFBD><CC8F><EFBFBD><EFBFBD>ȂǁA<C781><41><EFBFBD>̌`<60>ł̍v<CC8D><76><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E882AA><EFBFBD><EFBFBD><EFBFBD>ł<EFBFBD><C582>B
</p>
</body>
</html>

View File

@@ -37,6 +37,7 @@
<a href="howto3.htm"><EFBFBD><EFBFBD><EFBFBD>J<EFBFBD>o<EFBFBD><EFBFBD><EFBFBD>E<EFBFBD>t<EFBFBD>@<40>C<EFBFBD><43><EFBFBD>̐݌v</a><br> <a href="howto3.htm"><EFBFBD><EFBFBD><EFBFBD>J<EFBFBD>o<EFBFBD><EFBFBD><EFBFBD>E<EFBFBD>t<EFBFBD>@<40>C<EFBFBD><43><EFBFBD>̐݌v</a><br>
<a href="howto4.htm"><EFBFBD>t<EFBFBD>@<40>C<EFBFBD><43><EFBFBD>̌<EFBFBD><CC8C><EFBFBD><EFBFBD>ƏC<C68F><43></a><br> <a href="howto4.htm"><EFBFBD>t<EFBFBD>@<40>C<EFBFBD><43><EFBFBD>̌<EFBFBD><CC8C><EFBFBD><EFBFBD>ƏC<C68F><43></a><br>
<a href="problem.htm"><EFBFBD><EFBFBD><EFBFBD>m<EFBFBD>̖<EFBFBD><EFBFBD><EFBFBD><EFBFBD>_</a><br> <a href="problem.htm"><EFBFBD><EFBFBD><EFBFBD>m<EFBFBD>̖<EFBFBD><EFBFBD><EFBFBD><EFBFBD>_</a><br>
<a href="donate.htm"><EFBFBD><EFBFBD><EFBFBD>t<EFBFBD>̂<EFBFBD><EFBFBD></a>
</td></tr> </td></tr>
<tr><td colspan=3><font size=1>&nbsp</font></td></tr> <tr><td colspan=3><font size=1>&nbsp</font></td></tr>
<tr valign="top"><td> <tr valign="top"><td>
@@ -51,7 +52,7 @@
</table> </table>
<hr> <hr>
<small><EFBFBD>ŏI<EFBFBD>X<EFBFBD>V 2024/04/13 (<28>o<EFBFBD>[<5B>W<EFBFBD><57><EFBFBD><EFBFBD> 1.3.3.3)</small> <small><EFBFBD>ŏI<EFBFBD>X<EFBFBD>V 2025/01/21 (<28>o<EFBFBD>[<5B>W<EFBFBD><57><EFBFBD><EFBFBD> 1.3.3.5)</small>
</body> </body>
</html> </html>

BIN
alpha/help/0411/paypal.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.9 KiB

View File

@@ -25,7 +25,7 @@ QuickPar
<h3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>‹<EFBFBD></h3> <h3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>‹<EFBFBD></h3>
<p>&nbsp <p>&nbsp
Windows Vista <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȍ~ (Windows 7, 8, 10, 11) <20>̃p<CC83>\<5C>R<EFBFBD><52><EFBFBD><EFBFBD><EFBFBD>K<EFBFBD>v<EFBFBD>ł<EFBFBD><C582>B Windows 7 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȍ~ (Windows 8, 10, 11) <20>̃p<CC83>\<5C>R<EFBFBD><52><EFBFBD><EFBFBD><EFBFBD>K<EFBFBD>v<EFBFBD>ł<EFBFBD><C582>B
</p> </p>
<h3><EFBFBD>g<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD></h3> <h3><EFBFBD>g<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD></h3>

View File

@@ -14,7 +14,7 @@ PAR
<EFBFBD><EFBFBD><EFBFBD>̑<EFBFBD><EFBFBD>̃R<EFBFBD><EFBFBD><EFBFBD>\<5C>[<5B><><EFBFBD>E<EFBFBD>A<EFBFBD>v<EFBFBD><76><EFBFBD>P<EFBFBD>[<5B>V<EFBFBD><56><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD>̑<EFBFBD><EFBFBD>̃R<EFBFBD><EFBFBD><EFBFBD>\<5C>[<5B><><EFBFBD>E<EFBFBD>A<EFBFBD>v<EFBFBD><76><EFBFBD>P<EFBFBD>[<5B>V<EFBFBD><56><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
GUI <20>A<EFBFBD>v<EFBFBD><76><EFBFBD>P<EFBFBD>[<5B>V<EFBFBD><56><EFBFBD><EFBFBD> (<tt>MultiPar.exe</tt>) <20>͕<EFBFBD><CD95>ʂ̃t<CC83><74><EFBFBD>[<5B>\<5C>t<EFBFBD>g<EFBFBD>ł<EFBFBD><C582>B GUI <20>A<EFBFBD>v<EFBFBD><76><EFBFBD>P<EFBFBD>[<5B>V<EFBFBD><56><EFBFBD><EFBFBD> (<tt>MultiPar.exe</tt>) <20>͕<EFBFBD><CD95>ʂ̃t<CC83><74><EFBFBD>[<5B>\<5C>t<EFBFBD>g<EFBFBD>ł<EFBFBD><C582>B
MultiPar <20><><EFBFBD><EFBFBD><EFBFBD>̂܂܎g<DC8E><67><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ȃ<EFBFBD><C882>A<EFBFBD><41><EFBFBD><EFBFBD><EA82BC><EFBFBD>̃<EFBFBD><CC83>C<EFBFBD>Z<EFBFBD><5A><EFBFBD>X<EFBFBD>̈Ⴂ<CC88><E182A2><EFBFBD>C<EFBFBD>ɂ<EFBFBD><C982>Ȃ<EFBFBD><C882>Ă<EFBFBD><C482><EFBFBD><EFBFBD>ł<EFBFBD><C582>B MultiPar <20><><EFBFBD><EFBFBD><EFBFBD>̂܂܎g<DC8E><67><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ȃ<EFBFBD><C882>A<EFBFBD><41><EFBFBD><EFBFBD><EA82BC><EFBFBD>̃<EFBFBD><CC83>C<EFBFBD>Z<EFBFBD><5A><EFBFBD>X<EFBFBD>̈Ⴂ<CC88><E182A2><EFBFBD>C<EFBFBD>ɂ<EFBFBD><C982>Ȃ<EFBFBD><C882>Ă<EFBFBD><C482><EFBFBD><EFBFBD>ł<EFBFBD><C582>B
<EFBFBD>\<5C>[<5B>X<EFBFBD>E<EFBFBD>R<EFBFBD>[<5B>h<EFBFBD><68><a href="https://github.com/Yutaka-Sawada/MultiPar" target="_blank" title="GitHub page">GitHub</a><EFBFBD>ɒu<EFBFBD><EFBFBD><EFBFBD>Ă܂<EFBFBD><EFBFBD>B <EFBFBD>\<5C>[<5B>X<EFBFBD>E<EFBFBD>R<EFBFBD>[<5B>h<EFBFBD><68> <a href="https://github.com/Yutaka-Sawada/MultiPar" target="_blank" title="GitHub page">GitHub</a> <EFBFBD>ɒu<EFBFBD><EFBFBD><EFBFBD>Ă܂<EFBFBD><EFBFBD>B
</p> </p>
<hr> <hr>
@@ -33,9 +33,9 @@ MultiPar
<h3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>N</h3> <h3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>N</h3>
<p>&nbsp <p>&nbsp
<EFBFBD>x<EFBFBD>N<EFBFBD>^<5E>[<5B><><a href="https://hp.vector.co.jp/authors/VA021385/" target="_blank" title="<22>x<EFBFBD>N<EFBFBD>^<5E>[<5B>ɂ<EFBFBD><C982><EFBFBD><EFBFBD>L<EFBFBD><4C><EFBFBD>y<EFBFBD>[<5B>W"><EFBFBD><EFBFBD><EFBFBD>҃y<EFBFBD>[<5B>W</a><EFBFBD>ł͊O<EFBFBD><EFBFBD><EFBFBD>l<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> MultiPar <20><><EFBFBD>Љ<D089>Ă<EFBFBD><EFBFBD>܂<EFBFBD><EFBFBD>B MultiPar <20>̍ŐV<C590>ł<EFBFBD> <a href="https://github.com/Yutaka-Sawada/MultiPar" target="_blank">GitHub <20><><EFBFBD><EFBFBD></a><EFBFBD>_<EFBFBD>E<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>[<5B>h<EFBFBD>ł<EFBFBD><EFBFBD>܂<EFBFBD><EFBFBD>B
<EFBFBD>x<EFBFBD>N<EFBFBD>^<5E>[<5B><><a href="https://www.vector.co.jp/soft/dl/winnt/util/se460801.html" target="_blank" title="<22>x<EFBFBD>N<EFBFBD>^<5E>[<5B>ɂ<EFBFBD><C982><EFBFBD><EFBFBD>_<EFBFBD>E<EFBFBD><45><EFBFBD><EFBFBD><EFBFBD>[<5B>h<EFBFBD>E<EFBFBD>y<EFBFBD>[<5B>W"><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȃ_<EFBFBD>E<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>[<5B>h<EFBFBD>E<EFBFBD>y<EFBFBD>[<5B>W</a><EFBFBD>͕ʂɂ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>܂<EFBFBD><EFBFBD>B <EFBFBD>x<EFBFBD>N<EFBFBD>^<5E>[<5B><><a href="https://www.vector.co.jp/soft/dl/winnt/util/se460801.html" target="_blank"><EFBFBD><EFBFBD><EFBFBD>{<7B><EFBFBD><EFBFBD>_<EFBFBD>E<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>[<5B>h<EFBFBD>E<EFBFBD>y<EFBFBD>[<5B>W</a><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>܂<EFBFBD><EFBFBD>B
<EFBFBD><EFBFBD><EFBFBD>{<7B>l<EFBFBD><6C><EFBFBD><EFBFBD><EFBFBD>Ƀ<EFBFBD><C983><EFBFBD><EFBFBD>N<EFBFBD><4E><EFBFBD>ڂ<EFBFBD><DA82><EFBFBD><EFBFBD>ۂ́A<CD81>x<EFBFBD>N<EFBFBD>^<5E>[<5B><><a href="https://www.vector.co.jp/soft/winnt/util/se460801.html" target="_blank" title="<22>x<EFBFBD>N<EFBFBD>^<5E>[<5B>ɂ<EFBFBD><C982><EFBFBD><EFBFBD><EFBFBD><EFBFBD>i<EFBFBD>Љ<EFBFBD><D089>y<EFBFBD>[<5B>W"><EFBFBD><EFBFBD><EFBFBD>i<EFBFBD>Љ<EFBFBD><EFBFBD>y<EFBFBD>[<5B>W</a><EFBFBD>ɂ<EFBFBD><EFBFBD>Ă<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>B <EFBFBD><EFBFBD><EFBFBD>{<7B>l<EFBFBD><6C><EFBFBD><EFBFBD><EFBFBD>Ƀ<EFBFBD><C983><EFBFBD><EFBFBD>N<EFBFBD><4E><EFBFBD>ڂ<EFBFBD><DA82><EFBFBD><EFBFBD>ۂ́A<CD81>x<EFBFBD>N<EFBFBD>^<5E>[<5B><><a href="https://www.vector.co.jp/soft/winnt/util/se460801.html" target="_blank"><EFBFBD><EFBFBD><EFBFBD>i<EFBFBD>Љ<EFBFBD><EFBFBD>y<EFBFBD>[<5B>W</a><EFBFBD>ɂ<EFBFBD><EFBFBD>Ă<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>B
</p> </p>
</body> </body>

View File

@@ -11,13 +11,37 @@
<h3>PayPal捐赠</h3> <h3>PayPal捐赠</h3>
<p>&nbsp <p>&nbsp
尽管MultiPar可以免费使用但我花了很多时间和精力来开发。您的捐款将鼓励我继续努力改进和支持MultiPar。我创建了PayPal帐户和捐款的快速链接。<br> 尽管MultiPar可以免费使用但我花了很多时间和精力来开发。您的捐款将鼓励我继续努力改进和支持MultiPar。我创建了PayPal帐户和捐款的快速链接。
<ol> </p>
<li>点击<a href="https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=NPNAKA32N4GD6" target="_blank" title="PayPal - The safer, easier way to pay online!">此链接</a>转到PayPal的网页。
<li>在左侧面板上,您可以更改数量,然后单击更新以乘以金额。 <p>
<li>在右侧面板中您可以选择PayPal帐户或信用卡。 If you want to send message to me, use below web-form.
<li>您可以在右侧面板底部向开发人员写消息。 Select how much amount, write message, and click Doante button.
</ol> <center>
<form action="https://www.paypal.com/cgi-bin/webscr" method="post" target="_top">
<input type="hidden" name="cmd" value="_s-xclick">
<input type="hidden" name="hosted_button_id" value="2PP6DCPP5ZGNJ">
<table border=0 cellspacing=0 cellpadding=0>
<tr><td><input type="hidden" name="on0" value="How much">How much:<br>
<select name="os0">
<option value="Cheer">Cheer $10.00 USD</option>
<option value="Encouragement">Encouragement $20.00 USD</option>
<option value="Premium">Premium $30.00 USD</option>
<option value="Subsidy">Subsidy $40.00 USD</option>
<option value="Surprise">Surprise $50.00 USD</option>
</select></td><td>&nbsp&nbsp</td>
<td><input type="hidden" name="on1" value="Short message">Short message:<br>
<input type="text" name="os1" maxlength="200" size="48"></td><td>&nbsp&nbsp</td>
<td><input type="image" src="../0409/paypal.gif" border="0" name="submit" alt="PayPal - The safer, easier way to pay online!"></td></tr>
</table>
<input type="hidden" name="currency_code" value="USD">
</form>
</center>
</p>
<p>
If you don't write message, 点击<a href="https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=NPNAKA32N4GD6" target="_blank" title="PayPal - The safer, easier way to pay online!">此链接</a>转到PayPal的网页。
You may change Quantity to multiply the total amount.
</p> </p>
<p> <p>

View File

@@ -50,7 +50,7 @@
</table> </table>
<hr> <hr>
<small>最新更新于2023年11月11适用于1.3.3.1版本,简体中文化 Deng Shiqing</small> <small>最新更新于2025年01月20适用于1.3.3.5版本,简体中文化 Deng Shiqing</small>
</body> </body>
</html> </html>

BIN
alpha/help/0804/paypal.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.9 KiB

View File

@@ -22,7 +22,7 @@ MultiPar支持PAR1.0和PAR2.0规范。请访问“<a href="http://parchive.sourc
<h3>系统要求</h3> <h3>系统要求</h3>
<p>&nbsp <p>&nbsp
MultiPar需要电脑安装Windows Vista或更高的版本Windows 7, 8, 10 MultiPar需要电脑安装Windows 7或更高的版本Windows 8, 10, 11)。
</p> </p>
</body> </body>

View File

@@ -7,7 +7,7 @@
<body> <body>
<h3>许可证</h3> <h3>许可证</h3>
<p>&nbsp <p>&nbsp
MultiPar由PAR客户端和用于控制它们的图形用户界面GUI组成由Yutaka Sawada编写。尽管控制台应用程序是开源的PAR客户端采用GPL协议但GUI程序是闭源的。有些文章可以在<a href="https://hp.vector.co.jp/authors/VA021385/" target="_blank" title="Announcement page on Vector">我的网站</a>上找到。 MultiPar由PAR客户端和用于控制它们的图形用户界面GUI组成由Yutaka Sawada编写。尽管控制台应用程序是开源的PAR客户端采用GPL协议但GUI程序是闭源的。
There are source code packages on <a href="https://github.com/Yutaka-Sawada/MultiPar" target="_blank" title="GitHub page">GitHub</a>. There are source code packages on <a href="https://github.com/Yutaka-Sawada/MultiPar" target="_blank" title="GitHub page">GitHub</a>.
</p> </p>
@@ -26,7 +26,7 @@ I use <a href="https://github.com/Yutaka-Sawada/MultiPar/issues" target="_blank"
<h3>链接</h3> <h3>链接</h3>
<p>&nbsp <p>&nbsp
我在<a href="https://hp.vector.co.jp/authors/VA021385/" target="_blank" title="Announcement page on Vector">个人主页</a><i>vector.co.jp</i>有介绍MultiPar。使用这个页面上的文件直链可能不太合适这还有一个<a href="https://www.vector.co.jp/soft/dl/winnt/util/se460801.html" target="_blank" title="Download page on Vector">官方下载页面</a>。当您在某处输入一个链接时,请不要包含文件名。 You may download the latest version of <a href="https://github.com/Yutaka-Sawada/MultiPar" target="_blank">MultiPar on GitHub</a>.
</p> </p>
</body> </body>

View File

@@ -1,4 +1,4 @@
[ MultiPar GUI - version 1.3.3.3 or later ] [ MultiPar GUI - version 1.3.3.4 or later ]
Usage: MultiPar.exe [command] [/base path] [/list path] [files] Usage: MultiPar.exe [command] [/base path] [/list path] [files]
@@ -117,6 +117,14 @@ Because the name and size are splitted by ":",
you cannot include ":" in the name. you cannot include ":" in the name.
The max size is 999999999999 bytes. (931 GB) The max size is 999999999999 bytes. (931 GB)
If you want to add more options for par2j (par2j.exe or par2j64.exe),
write this line "par2jOption=/something" under "[Option]" section.
You may add multiple options like; "par2jOption=/m1 /lc32"
The total length must be less than 30 characters.
When you set an option at MultiPar's Option windows,
you should not set the same option on .INI file manually.
If you write wrong or strange text, par2j will fail.
Example of lines on "MultiPar.ini"; Example of lines on "MultiPar.ini";
@@ -126,5 +134,6 @@ RedundancyMax=10
Sort=8 Sort=8
RecoveryFileLimit=1 RecoveryFileLimit=1
MediaList4=7.9GB DVD:8480000000 MediaList4=7.9GB DVD:8480000000
par2jOption=/lc32
[Path] [Path]
MRUMax=5 MRUMax=5

View File

@@ -103,6 +103,16 @@ It means that it is impossible to mix "/" and "-" in options of same command lin
If PAR file's filename (or relative path) is started by "-", If PAR file's filename (or relative path) is started by "-",
you need to use "/" for prefix of options to distinguish PAR file. you need to use "/" for prefix of options to distinguish PAR file.
When a option has arbitary number or text,
don't put space between the option and following part.
For example, setting "/rr1" is valid, but "/rr 1" is wrong.
Setting "/dPath" is valid, but "/d Path" is wrong.
To distinguish options from filenames, order of command-line arguments is important.
Put all options before <par file>.
Put <par file> before all [input files].
/f, /fu : /f, /fu :
Set this, if you use file-list for file name or file path. Set this, if you use file-list for file name or file path.
The file-list is a text file, which contains filenames in each line. The file-list is a text file, which contains filenames in each line.
@@ -169,8 +179,10 @@ If you include space in comment, use "" to specify where is end.
use this setting to set the path as base-directory. use this setting to set the path as base-directory.
This is either absolute path or relative path from current directory. This is either absolute path or relative path from current directory.
If you include space in path, use "" to specify where is end. If you include space in path, use "" to specify where is end.
Note, setting "/dC:" is same as setting current directory of C-drive. As you may omit the last "/" in path of a folder,
If you want to set direct root of C-drive, you must set "/dC:/". both "/dC:/data/" and "/dC:/data" are valid.
Note, setting "/dD:" is same as setting current directory of D-drive.
If you want to set direct root of D-drive, you must set "/dD:/".
for example, /dC:/data/ , /d"C:/Program Files/" , /d../data/ for example, /dC:/data/ , /d"C:/Program Files/" , /d../data/

View File

@@ -1,4 +1,4 @@
[ par2j.exe - version 1.3.3.2 or later ] [ par2j.exe - version 1.3.3.5 or later ]
Type "par2j.exe" to see version, test integrity, and show usage below. Type "par2j.exe" to see version, test integrity, and show usage below.
@@ -148,6 +148,16 @@ It means that it is impossible to mix "/" and "-" in options of same command lin
If PAR file's filename (or relative path) is started by "-", If PAR file's filename (or relative path) is started by "-",
you need to use "/" for prefix of options to distinguish PAR file. you need to use "/" for prefix of options to distinguish PAR file.
When a option has arbitary number or text,
don't put space between the option and following part.
For example, setting "/rr10" is valid, but "/rr 10" is wrong.
Setting "/dPath" is valid, but "/d Path" is wrong.
To distinguish options from filenames, order of command-line arguments is important.
Put all options before <par file>.
Put <par file> before all [input files] or [external files].
/f, /fu : /f, /fu :
Set this, if you use file-list for file name or file path. Set this, if you use file-list for file name or file path.
When this option is set, [input files] or [external files] is path of file-list. When this option is set, [input files] or [external files] is path of file-list.
@@ -302,7 +312,7 @@ Because it may be difficult to predict recovery file size,
use trial command to see how is the size. use trial command to see how is the size.
When it's "/lr" or "/lr0", block count of the largest input file is used. When it's "/lr" or "/lr0", block count of the largest input file is used.
(If the max file is 1000 KB and block size is 10 KB, /lr is same as /lr100.) (If the max file is 1000 KB and block size is 10 KB, /lr is same as /lr100.)
When split size "/ls" is set with "/lr0", When both "/lr0" and "/ls(split size)" are set,
block count of the splited file size is used instead of the largest input file. block count of the splited file size is used instead of the largest input file.
for example, /lr , /lr10 , /lr2000 for example, /lr , /lr10 , /lr2000
@@ -354,6 +364,13 @@ This is possible, only when there is one input file of .ZIP or .7z format.
When recovery files are created in a different directory, When recovery files are created in a different directory,
the protected archive file is made in the directory. the protected archive file is made in the directory.
/ls2 has a special feature to set limit size of recovery files directly.
When both "/ls2" and "/lr(limit size)" are set,
setting number of /lr is recognizned as file size instead of number of blocks.
In this usage, setting limit size must be less than 2 GB.
If you want max 100 MB each file size, set like these; /ls2 /lr102400000
Because the calculation ignores packets, you may set a bit smaller size.
for example, /ls10000 , /ls1048576, /ls1 for example, /ls10000 , /ls1048576, /ls1
/lc : /lc :
@@ -386,6 +403,25 @@ The format is "/lc#" (# is from 1 to 32 as the number of using threads).
for example, /lc1 to use single Core, /lc508 to use half Cores and GPU for example, /lc1 to use single Core, /lc508 to use half Cores and GPU
/lcb :
This is for Cache Blocking. (CPU cache optimization)
By default, this value is set-associative size of CPU L2 cache.
Maximum value is 32767. It will be multipled by 64 KB.
To disable cache optimization, set "/lcb0".
/lcs :
This is for large buffer size at calculating multiple files' hashes.
By default, this value is set-associative size of CPU L3 cache.
Maximum value is 65535. It will be multipled by 64 KB.
When you set "/lcs0", large buffer size will become 2 MB by default.
/lcm :
This is for max number of chunks to calculate at once. (CPU shared cache optimization)
By default, this value may be rate of L3 cache size / L2 cache size.
The value may be changed by some factors in experimental results.
Maximum value is 32768. Lower values than 8 will be same as 32768.
To disable cache optimization, set "/lcm0".
/m : /m :
Set this, if you want to set memory usage. Set this, if you want to set memory usage.
If too many memory is allocated, system will use swap file. If too many memory is allocated, system will use swap file.
@@ -455,8 +491,10 @@ If you include space in comment, use "" to specify where is end.
use this setting to set the path as base-directory. use this setting to set the path as base-directory.
This is either absolute path or relative path from current directory. This is either absolute path or relative path from current directory.
If you include space in path, use "" to specify where is end. If you include space in path, use "" to specify where is end.
Note, setting "/dC:" is same as setting current directory of C-drive. As you may omit the last "/" in path of a folder,
If you want to set direct root of C-drive, you must set "/dC:/". both "/dC:/data/" and "/dC:/data" are valid.
Note, setting "/dD:" is same as setting current directory of D-drive.
If you want to set direct root of D-drive, you must set "/dD:/".
for example, /dC:/data/ , /d"C:/Program Files/" , /d../data/ for example, /dC:/data/ , /d"C:/Program Files/" , /d../data/

View File

@@ -94,6 +94,16 @@ It means that it is impossible to mix "/" and "-" in options of same command lin
If checksum file's filename (or relative path) is started by "-", If checksum file's filename (or relative path) is started by "-",
you need to use "/" for prefix of options to distinguish checksum file. you need to use "/" for prefix of options to distinguish checksum file.
When a option has arbitary number or text,
don't put space between the option and following part.
For example, setting "/vs1" is valid, but "/vs 1" is wrong.
Setting "/dPath" is valid, but "/d Path" is wrong.
To distinguish options from filenames, order of command-line arguments is important.
Put all options before <checksum file>.
Put <checksum file> before all [input files]
/fo : /fo :
Set this, if you want to ignore folders at wildcard matching search. Set this, if you want to ignore folders at wildcard matching search.
This setting disable recursive search into folder also. This setting disable recursive search into folder also.
@@ -129,8 +139,10 @@ from the PAR client's directory, use this setting to set path.
use this setting to set the path as base-directory. use this setting to set the path as base-directory.
This is either absolute path or relative path from current directory. This is either absolute path or relative path from current directory.
If you include space in path, use "" to specify where is end. If you include space in path, use "" to specify where is end.
Note, setting "/dC:" is same as setting current directory of C-drive. As you may omit the last "/" in path of a folder,
If you want to set direct root of C-drive, you must set "/dC:/". both "/dC:/data/" and "/dC:/data" are valid.
Note, setting "/dD:" is same as setting current directory of D-drive.
If you want to set direct root of D-drive, you must set "/dD:/".
for example, /dC:/data/ , /d"C:/Program Files/" , /d../data/ for example, /dC:/data/ , /d"C:/Program Files/" , /d../data/

View File

@@ -18,7 +18,7 @@ Parchive 1.0 client by Yutaka Sawada
You cannot specify Non-Recovery-Set files. (Empty files are set.) You cannot specify Non-Recovery-Set files. (Empty files are set.)
Number of recovery files are limited to 99. Number of recovery files are limited to 99.
This requires a PC of Windows Vista or later (Windows 7, 8, 10, 11). This requires a PC of Windows 7 or later (Windows 8, 10, 11).
This is developed with Visual Studio 2022 on Windows 10. This is developed with Visual Studio 2022 on Windows 10.

View File

@@ -31,7 +31,7 @@ Parchive 2.0 client by Yutaka Sawada
Verifying file use same memory as the file or double of block size. Verifying file use same memory as the file or double of block size.
Recovering block use more memory as the number of block is many. Recovering block use more memory as the number of block is many.
This requires a PC of Windows Vista or later (Windows 7, 8, 10, 11). This requires a PC of Windows 7 or later (Windows 8, 10, 11).
This is developed with Visual Studio 2022 on Windows 10. This is developed with Visual Studio 2022 on Windows 10.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -43,25 +43,31 @@ def search_par_set(one_path):
continue continue
listbox_list1.insert(tk.END, base_name) listbox_list1.insert(tk.END, base_name)
# Add found PAR sets in sub-directories # Add found PAR sets in sub-directories
# This searches 1 level child only, because recursive search may be slow. s_recursive = s_combo.get()
for par_path in glob.glob(glob.escape(one_path) + "/*/*.par2"): if s_recursive != "No child":
# If you want to search recursively, use below line instead of above line. if s_recursive == "Recursive":
#for par_path in glob.glob(glob.escape(one_path) + "/**/*.par2", recursive=True): # This will search all sub-directories recursively.
# Get relative path and convert to UNIX style directory mark search_path = glob.escape(one_path) + "/**/*.par2"
rel_path = os.path.relpath(par_path, one_path) recursive_flag = True
rel_path = rel_path.replace('\\', '/') else:
# Remove extension ".par2" # This searches 1 level child only, because recursive search may be slow.
one_name = os.path.splitext(rel_path)[0] search_path = glob.escape(one_path) + "/*/*.par2"
# Compare filename in case insensitive recursive_flag = False
base_name = one_name.lower() for par_path in glob.glob(search_path, recursive=recursive_flag):
# Remove ".vol#-#", ".vol#+#", or ".vol_#" at the last # Get relative path and convert to UNIX style directory mark
base_name = re.sub(r'[.]vol\d*[-+_]\d+$', "", base_name) rel_path = os.path.relpath(par_path, one_path)
# Ignore same base, if the name exists in the list already. rel_path = rel_path.replace('\\', '/')
if "'" + base_name + "'" in s_list1.get(): # Remove extension ".par2"
continue one_name = os.path.splitext(rel_path)[0]
listbox_list1.insert(tk.END, base_name) # Compare filename in case insensitive
base_name = one_name.lower()
# Remove ".vol#-#", ".vol#+#", or ".vol_#" at the last
base_name = re.sub(r'[.]vol\d*[-+_]\d+$', "", base_name)
# Ignore same base, if the name exists in the list already.
if "'" + base_name + "'" in s_list1.get():
continue
listbox_list1.insert(tk.END, base_name)
item_count = listbox_list1.size() item_count = listbox_list1.size()
one_name = os.path.basename(one_path) one_name = os.path.basename(one_path)
@@ -70,13 +76,14 @@ def search_par_set(one_path):
label_status.config(text= "There are no PAR sets in \"" + one_path + "\".") label_status.config(text= "There are no PAR sets in \"" + one_path + "\".")
else: else:
button_folder.config(state=tk.DISABLED) button_folder.config(state=tk.DISABLED)
button_stop.config(state=tk.NORMAL)
button_open2.config(state=tk.DISABLED) button_open2.config(state=tk.DISABLED)
button_open3.config(state=tk.DISABLED) button_open3.config(state=tk.DISABLED)
combo_recursive.config(state=tk.DISABLED)
# If you want to start manually, use these lines instead of below lines. # If you want to start manually, use these lines instead of below lines.
#label_status.config(text= str(item_count) + " sets were found in \"" + one_path + "\".") label_status.config(text= str(item_count) + " sets were found in \"" + one_path + "\".")
button_start.config(state=tk.NORMAL) button_start.config(state=tk.NORMAL)
# If you want to start verification automatically, use these lines instead of above lines. # If you want to start verification automatically, use this line instead of above lines.
#button_stop.config(state=tk.NORMAL)
#root.after(100, queue_run) #root.after(100, queue_run)
@@ -105,6 +112,8 @@ def queue_run():
button_start.config(state=tk.NORMAL) button_start.config(state=tk.NORMAL)
button_open2.config(state=tk.NORMAL) button_open2.config(state=tk.NORMAL)
button_open3.config(state=tk.NORMAL) button_open3.config(state=tk.NORMAL)
combo_recursive.config(state=tk.NORMAL)
check_repair.config(state=tk.NORMAL)
label_status.config(text= "Stopped queue") label_status.config(text= "Stopped queue")
return return
@@ -120,9 +129,14 @@ def queue_run():
label_status.config(text= "Verifying " + base_name) label_status.config(text= "Verifying " + base_name)
# Set command-line # Set command-line
# Cover path by " for possible space # Cover path by " for possible space
cmd = "\"" + client_path + "\" v /fo /vs2 /vd\"" + save_path + "\" \"" + one_path + "\"" cmd = "\"" + client_path + "\" "
# If you want to repair a damaged set automatically, use "r" command instead of "v". if i_check.get() == 0:
cmd += "v"
else:
# If you want to repair a damaged set automatically, use "r" command instead of "v".
cmd += "r"
cmd += " /fo /vs2 /vd\"" + save_path + "\" \"" + one_path + "\""
#print(cmd) #print(cmd)
# Run PAR2 client # Run PAR2 client
@@ -163,6 +177,8 @@ def queue_result():
button_stop.config(state=tk.DISABLED) button_stop.config(state=tk.DISABLED)
button_open2.config(state=tk.NORMAL) button_open2.config(state=tk.NORMAL)
button_open3.config(state=tk.NORMAL) button_open3.config(state=tk.NORMAL)
combo_recursive.config(state=tk.NORMAL)
check_repair.config(state=tk.NORMAL)
label_status.config(text= "Failed queue") label_status.config(text= "Failed queue")
return return
@@ -173,6 +189,8 @@ def queue_result():
button_stop.config(state=tk.DISABLED) button_stop.config(state=tk.DISABLED)
button_open2.config(state=tk.NORMAL) button_open2.config(state=tk.NORMAL)
button_open3.config(state=tk.NORMAL) button_open3.config(state=tk.NORMAL)
combo_recursive.config(state=tk.NORMAL)
check_repair.config(state=tk.NORMAL)
label_status.config(text= "Canceled queue") label_status.config(text= "Canceled queue")
return return
@@ -194,6 +212,8 @@ def queue_result():
button_stop.config(state=tk.DISABLED) button_stop.config(state=tk.DISABLED)
button_open2.config(state=tk.NORMAL) button_open2.config(state=tk.NORMAL)
button_open3.config(state=tk.NORMAL) button_open3.config(state=tk.NORMAL)
combo_recursive.config(state=tk.NORMAL)
check_repair.config(state=tk.NORMAL)
label_status.config(text= "Verified all PAR sets") label_status.config(text= "Verified all PAR sets")
elif "disabled" in button_stop.state(): elif "disabled" in button_stop.state():
@@ -201,8 +221,10 @@ def queue_result():
button_start.config(state=tk.NORMAL) button_start.config(state=tk.NORMAL)
button_open2.config(state=tk.NORMAL) button_open2.config(state=tk.NORMAL)
button_open3.config(state=tk.NORMAL) button_open3.config(state=tk.NORMAL)
combo_recursive.config(state=tk.NORMAL)
check_repair.config(state=tk.NORMAL)
label_status.config(text= "Interrupted queue") label_status.config(text= "Interrupted queue")
else: else:
root.after(100, queue_run) root.after(100, queue_run)
@@ -216,6 +238,8 @@ def button_start_clicked():
button_stop.config(state=tk.NORMAL) button_stop.config(state=tk.NORMAL)
button_open2.config(state=tk.DISABLED) button_open2.config(state=tk.DISABLED)
button_open3.config(state=tk.DISABLED) button_open3.config(state=tk.DISABLED)
combo_recursive.config(state=tk.DISABLED)
check_repair.config(state=tk.DISABLED)
if sub_proc == None: if sub_proc == None:
queue_run() queue_run()
@@ -225,8 +249,19 @@ def button_start_clicked():
# Stop running queue # Stop running queue
def button_stop_clicked(): def button_stop_clicked():
global sub_proc
button_stop.config(state=tk.DISABLED) button_stop.config(state=tk.DISABLED)
if sub_proc != None: if sub_proc is None:
# When verification was not started yet, it's possible to select another folder.
button_folder.config(state=tk.NORMAL)
button_start.config(state=tk.DISABLED)
combo_recursive.config(state=tk.NORMAL)
listbox_list1.delete(0, tk.END)
label_head1.config(text='? sets in a folder')
label_status.config(text='Select a folder to search PAR files.')
else:
# When it's verifying, it will stop next verification.
label_status.config(text= "Waiting finish of current task") label_status.config(text= "Waiting finish of current task")
@@ -293,7 +328,7 @@ frame_middle.columnconfigure(2, weight=1)
frame_list1 = ttk.Frame(frame_middle, padding=(6,2,6,6), relief='groove') frame_list1 = ttk.Frame(frame_middle, padding=(6,2,6,6), relief='groove')
frame_list1.grid(row=0, column=0, padx=4, sticky=(tk.E,tk.W,tk.S,tk.N)) frame_list1.grid(row=0, column=0, padx=4, sticky=(tk.E,tk.W,tk.S,tk.N))
frame_list1.columnconfigure(0, weight=1) frame_list1.columnconfigure(0, weight=1)
frame_list1.rowconfigure(2, weight=1) frame_list1.rowconfigure(3, weight=1)
frame_top1 = ttk.Frame(frame_list1, padding=(0,4,0,3)) frame_top1 = ttk.Frame(frame_list1, padding=(0,4,0,3))
frame_top1.grid(row=0, column=0, columnspan=2, sticky=(tk.E,tk.W)) frame_top1.grid(row=0, column=0, columnspan=2, sticky=(tk.E,tk.W))
@@ -307,19 +342,31 @@ button_start.pack(side=tk.LEFT, padx=2)
button_stop = ttk.Button(frame_top1, text="Stop", width=6, command=button_stop_clicked, state=tk.DISABLED) button_stop = ttk.Button(frame_top1, text="Stop", width=6, command=button_stop_clicked, state=tk.DISABLED)
button_stop.pack(side=tk.LEFT, padx=2) button_stop.pack(side=tk.LEFT, padx=2)
frame_top11 = ttk.Frame(frame_list1, padding=(0,3,0,3))
frame_top11.grid(row=1, column=0, columnspan=2, sticky=(tk.E,tk.W))
s_combo = tk.StringVar()
combo_recursive = ttk.Combobox(frame_top11, values=["No child", "Children", "Recursive"], textvariable=s_combo, state="readonly", width=9)
combo_recursive.current(0)
combo_recursive.pack(side=tk.LEFT, padx=4)
i_check = tk.IntVar(value=0)
check_repair = ttk.Checkbutton(frame_top11, text="Repair", variable=i_check)
check_repair.pack(side=tk.LEFT, padx=10)
label_head1 = ttk.Label(frame_list1, text='? sets in a folder') label_head1 = ttk.Label(frame_list1, text='? sets in a folder')
label_head1.grid(row=1, column=0, columnspan=2) label_head1.grid(row=2, column=0, columnspan=2)
s_list1 = tk.StringVar() s_list1 = tk.StringVar()
listbox_list1 = tk.Listbox(frame_list1, listvariable=s_list1, activestyle='none') listbox_list1 = tk.Listbox(frame_list1, listvariable=s_list1, activestyle='none')
listbox_list1.grid(row=2, column=0, sticky=(tk.E,tk.W,tk.S,tk.N)) listbox_list1.grid(row=3, column=0, sticky=(tk.E,tk.W,tk.S,tk.N))
scrollbar_list1 = ttk.Scrollbar(frame_list1, orient=tk.VERTICAL, command=listbox_list1.yview) scrollbar_list1 = ttk.Scrollbar(frame_list1, orient=tk.VERTICAL, command=listbox_list1.yview)
scrollbar_list1.grid(row=2, column=1, sticky=(tk.N, tk.S)) scrollbar_list1.grid(row=3, column=1, sticky=(tk.N, tk.S))
listbox_list1["yscrollcommand"] = scrollbar_list1.set listbox_list1["yscrollcommand"] = scrollbar_list1.set
xscrollbar_list1 = ttk.Scrollbar(frame_list1, orient=tk.HORIZONTAL, command=listbox_list1.xview) xscrollbar_list1 = ttk.Scrollbar(frame_list1, orient=tk.HORIZONTAL, command=listbox_list1.xview)
xscrollbar_list1.grid(row=3, column=0, sticky=(tk.E, tk.W)) xscrollbar_list1.grid(row=4, column=0, sticky=(tk.E, tk.W))
listbox_list1["xscrollcommand"] = xscrollbar_list1.set listbox_list1["xscrollcommand"] = xscrollbar_list1.set
# List of bad files # List of bad files

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

BIN
alpha/ui/0412.dll Normal file

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -0,0 +1,62 @@
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="Release|Win32">
<Configuration>Release</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
</ItemGroup>
<PropertyGroup Label="Globals">
<VCProjectVersion>17.0</VCProjectVersion>
<Keyword>Win32Proj</Keyword>
<ProjectGuid>{e8d64ddc-9687-4d16-b2a6-224cab82f8b3}</ProjectGuid>
<RootNamespace>My0412</RootNamespace>
<WindowsTargetPlatformVersion>10.0</WindowsTargetPlatformVersion>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
<ConfigurationType>DynamicLibrary</ConfigurationType>
<PlatformToolset>v143</PlatformToolset>
<CharacterSet>Unicode</CharacterSet>
<WholeProgramOptimization>false</WholeProgramOptimization>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings">
</ImportGroup>
<ImportGroup Label="Shared">
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<PropertyGroup Label="UserMacros" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<GenerateManifest>false</GenerateManifest>
</PropertyGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<ClCompile>
<IntrinsicFunctions>true</IntrinsicFunctions>
<WarningLevel>Level3</WarningLevel>
<FunctionLevelLinking>true</FunctionLevelLinking>
<SDLCheck>true</SDLCheck>
<PreprocessorDefinitions>WIN32;NDEBUG;MY0412_EXPORTS;_WINDOWS;_USRDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<ConformanceMode>true</ConformanceMode>
</ClCompile>
<Link>
<GenerateDebugInformation>false</GenerateDebugInformation>
<SubSystem>Windows</SubSystem>
<OptimizeReferences>true</OptimizeReferences>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<NoEntryPoint>true</NoEntryPoint>
<SetChecksum>true</SetChecksum>
</Link>
</ItemDefinitionGroup>
<ItemGroup>
<ClInclude Include="resource.h" />
</ItemGroup>
<ItemGroup>
<ResourceCompile Include="Res0412.rc" />
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets">
</ImportGroup>
</Project>

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -23,52 +23,101 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "3009", "3009\3009.vcxproj",
EndProject EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "0c0a", "0c0a\0c0a.vcxproj", "{7BC2D258-305F-4BAE-8249-66A4711CB761}" Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "0c0a", "0c0a\0c0a.vcxproj", "{7BC2D258-305F-4BAE-8249-66A4711CB761}"
EndProject EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "0412", "0412\0412.vcxproj", "{E8D64DDC-9687-4D16-B2A6-224CAB82F8B3}"
EndProject
Global Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Win32 = Debug|Win32 Debug|Win32 = Debug|Win32
Debug|x64 = Debug|x64
Release|Win32 = Release|Win32 Release|Win32 = Release|Win32
Release|x64 = Release|x64
EndGlobalSection EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution GlobalSection(ProjectConfigurationPlatforms) = postSolution
{058F9846-C6FE-4BA6-A8B3-F941711876E5}.Debug|Win32.ActiveCfg = Release|Win32 {058F9846-C6FE-4BA6-A8B3-F941711876E5}.Debug|Win32.ActiveCfg = Release|Win32
{058F9846-C6FE-4BA6-A8B3-F941711876E5}.Debug|Win32.Build.0 = Release|Win32 {058F9846-C6FE-4BA6-A8B3-F941711876E5}.Debug|Win32.Build.0 = Release|Win32
{058F9846-C6FE-4BA6-A8B3-F941711876E5}.Debug|x64.ActiveCfg = Release|Win32
{058F9846-C6FE-4BA6-A8B3-F941711876E5}.Debug|x64.Build.0 = Release|Win32
{058F9846-C6FE-4BA6-A8B3-F941711876E5}.Release|Win32.ActiveCfg = Release|Win32 {058F9846-C6FE-4BA6-A8B3-F941711876E5}.Release|Win32.ActiveCfg = Release|Win32
{058F9846-C6FE-4BA6-A8B3-F941711876E5}.Release|Win32.Build.0 = Release|Win32 {058F9846-C6FE-4BA6-A8B3-F941711876E5}.Release|Win32.Build.0 = Release|Win32
{058F9846-C6FE-4BA6-A8B3-F941711876E5}.Release|x64.ActiveCfg = Release|Win32
{058F9846-C6FE-4BA6-A8B3-F941711876E5}.Release|x64.Build.0 = Release|Win32
{A6B4CE94-B0F5-46C2-8D65-2ACBA4444B80}.Debug|Win32.ActiveCfg = Release|Win32 {A6B4CE94-B0F5-46C2-8D65-2ACBA4444B80}.Debug|Win32.ActiveCfg = Release|Win32
{A6B4CE94-B0F5-46C2-8D65-2ACBA4444B80}.Debug|Win32.Build.0 = Release|Win32 {A6B4CE94-B0F5-46C2-8D65-2ACBA4444B80}.Debug|Win32.Build.0 = Release|Win32
{A6B4CE94-B0F5-46C2-8D65-2ACBA4444B80}.Debug|x64.ActiveCfg = Release|Win32
{A6B4CE94-B0F5-46C2-8D65-2ACBA4444B80}.Debug|x64.Build.0 = Release|Win32
{A6B4CE94-B0F5-46C2-8D65-2ACBA4444B80}.Release|Win32.ActiveCfg = Release|Win32 {A6B4CE94-B0F5-46C2-8D65-2ACBA4444B80}.Release|Win32.ActiveCfg = Release|Win32
{A6B4CE94-B0F5-46C2-8D65-2ACBA4444B80}.Release|Win32.Build.0 = Release|Win32 {A6B4CE94-B0F5-46C2-8D65-2ACBA4444B80}.Release|Win32.Build.0 = Release|Win32
{A6B4CE94-B0F5-46C2-8D65-2ACBA4444B80}.Release|x64.ActiveCfg = Release|Win32
{A6B4CE94-B0F5-46C2-8D65-2ACBA4444B80}.Release|x64.Build.0 = Release|Win32
{8BE95D56-2B92-40CD-A8D9-506BA9AFD213}.Debug|Win32.ActiveCfg = Release|Win32 {8BE95D56-2B92-40CD-A8D9-506BA9AFD213}.Debug|Win32.ActiveCfg = Release|Win32
{8BE95D56-2B92-40CD-A8D9-506BA9AFD213}.Debug|Win32.Build.0 = Release|Win32 {8BE95D56-2B92-40CD-A8D9-506BA9AFD213}.Debug|Win32.Build.0 = Release|Win32
{8BE95D56-2B92-40CD-A8D9-506BA9AFD213}.Debug|x64.ActiveCfg = Release|Win32
{8BE95D56-2B92-40CD-A8D9-506BA9AFD213}.Debug|x64.Build.0 = Release|Win32
{8BE95D56-2B92-40CD-A8D9-506BA9AFD213}.Release|Win32.ActiveCfg = Release|Win32 {8BE95D56-2B92-40CD-A8D9-506BA9AFD213}.Release|Win32.ActiveCfg = Release|Win32
{8BE95D56-2B92-40CD-A8D9-506BA9AFD213}.Release|Win32.Build.0 = Release|Win32 {8BE95D56-2B92-40CD-A8D9-506BA9AFD213}.Release|Win32.Build.0 = Release|Win32
{8BE95D56-2B92-40CD-A8D9-506BA9AFD213}.Release|x64.ActiveCfg = Release|Win32
{8BE95D56-2B92-40CD-A8D9-506BA9AFD213}.Release|x64.Build.0 = Release|Win32
{386E588F-363C-4763-830F-4738F947B5D9}.Debug|Win32.ActiveCfg = Release|Win32 {386E588F-363C-4763-830F-4738F947B5D9}.Debug|Win32.ActiveCfg = Release|Win32
{386E588F-363C-4763-830F-4738F947B5D9}.Debug|Win32.Build.0 = Release|Win32 {386E588F-363C-4763-830F-4738F947B5D9}.Debug|Win32.Build.0 = Release|Win32
{386E588F-363C-4763-830F-4738F947B5D9}.Debug|x64.ActiveCfg = Release|Win32
{386E588F-363C-4763-830F-4738F947B5D9}.Debug|x64.Build.0 = Release|Win32
{386E588F-363C-4763-830F-4738F947B5D9}.Release|Win32.ActiveCfg = Release|Win32 {386E588F-363C-4763-830F-4738F947B5D9}.Release|Win32.ActiveCfg = Release|Win32
{386E588F-363C-4763-830F-4738F947B5D9}.Release|Win32.Build.0 = Release|Win32 {386E588F-363C-4763-830F-4738F947B5D9}.Release|Win32.Build.0 = Release|Win32
{386E588F-363C-4763-830F-4738F947B5D9}.Release|x64.ActiveCfg = Release|Win32
{386E588F-363C-4763-830F-4738F947B5D9}.Release|x64.Build.0 = Release|Win32
{9BFFB67E-6EAB-452B-AB40-10C13A894895}.Debug|Win32.ActiveCfg = Release|Win32 {9BFFB67E-6EAB-452B-AB40-10C13A894895}.Debug|Win32.ActiveCfg = Release|Win32
{9BFFB67E-6EAB-452B-AB40-10C13A894895}.Debug|Win32.Build.0 = Release|Win32 {9BFFB67E-6EAB-452B-AB40-10C13A894895}.Debug|Win32.Build.0 = Release|Win32
{9BFFB67E-6EAB-452B-AB40-10C13A894895}.Debug|x64.ActiveCfg = Release|Win32
{9BFFB67E-6EAB-452B-AB40-10C13A894895}.Debug|x64.Build.0 = Release|Win32
{9BFFB67E-6EAB-452B-AB40-10C13A894895}.Release|Win32.ActiveCfg = Release|Win32 {9BFFB67E-6EAB-452B-AB40-10C13A894895}.Release|Win32.ActiveCfg = Release|Win32
{9BFFB67E-6EAB-452B-AB40-10C13A894895}.Release|Win32.Build.0 = Release|Win32 {9BFFB67E-6EAB-452B-AB40-10C13A894895}.Release|Win32.Build.0 = Release|Win32
{9BFFB67E-6EAB-452B-AB40-10C13A894895}.Release|x64.ActiveCfg = Release|Win32
{9BFFB67E-6EAB-452B-AB40-10C13A894895}.Release|x64.Build.0 = Release|Win32
{41E89B6A-B137-4756-8C7A-E4A4309627DB}.Debug|Win32.ActiveCfg = Release|Win32 {41E89B6A-B137-4756-8C7A-E4A4309627DB}.Debug|Win32.ActiveCfg = Release|Win32
{41E89B6A-B137-4756-8C7A-E4A4309627DB}.Debug|Win32.Build.0 = Release|Win32 {41E89B6A-B137-4756-8C7A-E4A4309627DB}.Debug|Win32.Build.0 = Release|Win32
{41E89B6A-B137-4756-8C7A-E4A4309627DB}.Debug|x64.ActiveCfg = Release|Win32
{41E89B6A-B137-4756-8C7A-E4A4309627DB}.Debug|x64.Build.0 = Release|Win32
{41E89B6A-B137-4756-8C7A-E4A4309627DB}.Release|Win32.ActiveCfg = Release|Win32 {41E89B6A-B137-4756-8C7A-E4A4309627DB}.Release|Win32.ActiveCfg = Release|Win32
{41E89B6A-B137-4756-8C7A-E4A4309627DB}.Release|Win32.Build.0 = Release|Win32 {41E89B6A-B137-4756-8C7A-E4A4309627DB}.Release|Win32.Build.0 = Release|Win32
{41E89B6A-B137-4756-8C7A-E4A4309627DB}.Release|x64.ActiveCfg = Release|Win32
{41E89B6A-B137-4756-8C7A-E4A4309627DB}.Release|x64.Build.0 = Release|Win32
{F5774034-4459-41E4-A34C-5694159088C7}.Debug|Win32.ActiveCfg = Release|Win32 {F5774034-4459-41E4-A34C-5694159088C7}.Debug|Win32.ActiveCfg = Release|Win32
{F5774034-4459-41E4-A34C-5694159088C7}.Debug|Win32.Build.0 = Release|Win32 {F5774034-4459-41E4-A34C-5694159088C7}.Debug|Win32.Build.0 = Release|Win32
{F5774034-4459-41E4-A34C-5694159088C7}.Debug|x64.ActiveCfg = Release|Win32
{F5774034-4459-41E4-A34C-5694159088C7}.Debug|x64.Build.0 = Release|Win32
{F5774034-4459-41E4-A34C-5694159088C7}.Release|Win32.ActiveCfg = Release|Win32 {F5774034-4459-41E4-A34C-5694159088C7}.Release|Win32.ActiveCfg = Release|Win32
{F5774034-4459-41E4-A34C-5694159088C7}.Release|Win32.Build.0 = Release|Win32 {F5774034-4459-41E4-A34C-5694159088C7}.Release|Win32.Build.0 = Release|Win32
{F5774034-4459-41E4-A34C-5694159088C7}.Release|x64.ActiveCfg = Release|Win32
{F5774034-4459-41E4-A34C-5694159088C7}.Release|x64.Build.0 = Release|Win32
{25EB68DE-0594-4D2F-B31F-50375524D04A}.Debug|Win32.ActiveCfg = Release|Win32 {25EB68DE-0594-4D2F-B31F-50375524D04A}.Debug|Win32.ActiveCfg = Release|Win32
{25EB68DE-0594-4D2F-B31F-50375524D04A}.Debug|Win32.Build.0 = Release|Win32 {25EB68DE-0594-4D2F-B31F-50375524D04A}.Debug|Win32.Build.0 = Release|Win32
{25EB68DE-0594-4D2F-B31F-50375524D04A}.Debug|x64.ActiveCfg = Release|Win32
{25EB68DE-0594-4D2F-B31F-50375524D04A}.Debug|x64.Build.0 = Release|Win32
{25EB68DE-0594-4D2F-B31F-50375524D04A}.Release|Win32.ActiveCfg = Release|Win32 {25EB68DE-0594-4D2F-B31F-50375524D04A}.Release|Win32.ActiveCfg = Release|Win32
{25EB68DE-0594-4D2F-B31F-50375524D04A}.Release|Win32.Build.0 = Release|Win32 {25EB68DE-0594-4D2F-B31F-50375524D04A}.Release|Win32.Build.0 = Release|Win32
{25EB68DE-0594-4D2F-B31F-50375524D04A}.Release|x64.ActiveCfg = Release|Win32
{25EB68DE-0594-4D2F-B31F-50375524D04A}.Release|x64.Build.0 = Release|Win32
{B316EAF0-4D5E-446C-8520-D720ECD1F3AC}.Debug|Win32.ActiveCfg = Release|Win32 {B316EAF0-4D5E-446C-8520-D720ECD1F3AC}.Debug|Win32.ActiveCfg = Release|Win32
{B316EAF0-4D5E-446C-8520-D720ECD1F3AC}.Debug|Win32.Build.0 = Release|Win32 {B316EAF0-4D5E-446C-8520-D720ECD1F3AC}.Debug|Win32.Build.0 = Release|Win32
{B316EAF0-4D5E-446C-8520-D720ECD1F3AC}.Debug|x64.ActiveCfg = Release|Win32
{B316EAF0-4D5E-446C-8520-D720ECD1F3AC}.Debug|x64.Build.0 = Release|Win32
{B316EAF0-4D5E-446C-8520-D720ECD1F3AC}.Release|Win32.ActiveCfg = Release|Win32 {B316EAF0-4D5E-446C-8520-D720ECD1F3AC}.Release|Win32.ActiveCfg = Release|Win32
{B316EAF0-4D5E-446C-8520-D720ECD1F3AC}.Release|Win32.Build.0 = Release|Win32 {B316EAF0-4D5E-446C-8520-D720ECD1F3AC}.Release|Win32.Build.0 = Release|Win32
{B316EAF0-4D5E-446C-8520-D720ECD1F3AC}.Release|x64.ActiveCfg = Release|Win32
{B316EAF0-4D5E-446C-8520-D720ECD1F3AC}.Release|x64.Build.0 = Release|Win32
{7BC2D258-305F-4BAE-8249-66A4711CB761}.Debug|Win32.ActiveCfg = Release|Win32 {7BC2D258-305F-4BAE-8249-66A4711CB761}.Debug|Win32.ActiveCfg = Release|Win32
{7BC2D258-305F-4BAE-8249-66A4711CB761}.Debug|Win32.Build.0 = Release|Win32 {7BC2D258-305F-4BAE-8249-66A4711CB761}.Debug|Win32.Build.0 = Release|Win32
{7BC2D258-305F-4BAE-8249-66A4711CB761}.Debug|x64.ActiveCfg = Release|Win32
{7BC2D258-305F-4BAE-8249-66A4711CB761}.Debug|x64.Build.0 = Release|Win32
{7BC2D258-305F-4BAE-8249-66A4711CB761}.Release|Win32.ActiveCfg = Release|Win32 {7BC2D258-305F-4BAE-8249-66A4711CB761}.Release|Win32.ActiveCfg = Release|Win32
{7BC2D258-305F-4BAE-8249-66A4711CB761}.Release|Win32.Build.0 = Release|Win32 {7BC2D258-305F-4BAE-8249-66A4711CB761}.Release|Win32.Build.0 = Release|Win32
{7BC2D258-305F-4BAE-8249-66A4711CB761}.Release|x64.ActiveCfg = Release|Win32
{7BC2D258-305F-4BAE-8249-66A4711CB761}.Release|x64.Build.0 = Release|Win32
{E8D64DDC-9687-4D16-B2A6-224CAB82F8B3}.Debug|Win32.ActiveCfg = Release|Win32
{E8D64DDC-9687-4D16-B2A6-224CAB82F8B3}.Debug|x64.ActiveCfg = Release|Win32
{E8D64DDC-9687-4D16-B2A6-224CAB82F8B3}.Release|Win32.ActiveCfg = Release|Win32
{E8D64DDC-9687-4D16-B2A6-224CAB82F8B3}.Release|Win32.Build.0 = Release|Win32
{E8D64DDC-9687-4D16-B2A6-224CAB82F8B3}.Release|x64.ActiveCfg = Release|Win32
EndGlobalSection EndGlobalSection
GlobalSection(SolutionProperties) = preSolution GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE HideSolutionNode = FALSE

View File

@@ -64,7 +64,7 @@ append something to the section name like "[0x0409ignore]".
If you erase these strings or lines, default strings are used. If you erase these strings or lines, default strings are used.
"CreateHelp" and "VerifyHelp" in old version were removed, "CreateHelp" and "VerifyHelp" in old version were removed,
because they are ignored on recent Windows OS like (Vista, 7, 8). because they are ignored on recent Windows OS like (Windows 7, 8, 10).
Strings may contain one "&" for keyboard short-cut. Strings may contain one "&" for keyboard short-cut.
Each strings should be reasonably short (under 40 characters). Each strings should be reasonably short (under 40 characters).

Binary file not shown.

View File

@@ -1,4 +1,4 @@
// Copyright : 2023-03-24 Yutaka Sawada // Copyright : 2024-11-30 Yutaka Sawada
// License : The MIT license // License : The MIT license
// ShellExt.cpp : DLL アプリケーション用のエントリ ポイントを定義します。 // ShellExt.cpp : DLL アプリケーション用のエントリ ポイントを定義します。
@@ -11,7 +11,7 @@
#define UNICODE #define UNICODE
#endif #endif
#ifndef _WIN32_WINNT #ifndef _WIN32_WINNT
#define _WIN32_WINNT 0x0600 // Windows Vista or later #define _WIN32_WINNT 0x0601 // Windows 7 or later
#endif #endif
#include <windows.h> #include <windows.h>

Binary file not shown.

View File

@@ -103,6 +103,16 @@ It means that it is impossible to mix "/" and "-" in options of same command lin
If PAR file's filename (or relative path) is started by "-", If PAR file's filename (or relative path) is started by "-",
you need to use "/" for prefix of options to distinguish PAR file. you need to use "/" for prefix of options to distinguish PAR file.
When a option has arbitary number or text,
don't put space between the option and following part.
For example, setting "/rr1" is valid, but "/rr 1" is wrong.
Setting "/dPath" is valid, but "/d Path" is wrong.
To distinguish options from filenames, order of command-line arguments is important.
Put all options before <par file>.
Put <par file> before all [input files].
/f, /fu : /f, /fu :
Set this, if you use file-list for file name or file path. Set this, if you use file-list for file name or file path.
The file-list is a text file, which contains filenames in each line. The file-list is a text file, which contains filenames in each line.
@@ -169,8 +179,10 @@ If you include space in comment, use "" to specify where is end.
use this setting to set the path as base-directory. use this setting to set the path as base-directory.
This is either absolute path or relative path from current directory. This is either absolute path or relative path from current directory.
If you include space in path, use "" to specify where is end. If you include space in path, use "" to specify where is end.
Note, setting "/dC:" is same as setting current directory of C-drive. As you may omit the last "/" in path of a folder,
If you want to set direct root of C-drive, you must set "/dC:/". both "/dC:/data/" and "/dC:/data" are valid.
Note, setting "/dD:" is same as setting current directory of D-drive.
If you want to set direct root of D-drive, you must set "/dD:/".
for example, /dC:/data/ , /d"C:/Program Files/" , /d../data/ for example, /dC:/data/ , /d"C:/Program Files/" , /d../data/

View File

@@ -18,7 +18,7 @@ Parchive 1.0 client by Yutaka Sawada
You cannot specify Non-Recovery-Set files. (Empty files are set.) You cannot specify Non-Recovery-Set files. (Empty files are set.)
Number of recovery files are limited to 99. Number of recovery files are limited to 99.
This requires a PC of Windows Vista or later (Windows 7, 8, 10, 11). This requires a PC of Windows 7 or later (Windows 8, 10, 11).
This is developed with Visual Studio 2022 on Windows 10. This is developed with Visual Studio 2022 on Windows 10.

View File

@@ -61,7 +61,7 @@ WinRAR
<EFBFBD>\<5C>[<5B>X<EFBFBD>E<EFBFBD>u<EFBFBD><75><EFBFBD>b<EFBFBD>N<EFBFBD>ƃp<C683><70><EFBFBD>e<EFBFBD>B<EFBFBD>E<EFBFBD>u<EFBFBD><75><EFBFBD>b<EFBFBD>N<EFBFBD>̍<EFBFBD><CC8D>v<EFBFBD><76> 256<35>‚܂łł<C582><C582>B <EFBFBD>\<5C>[<5B>X<EFBFBD>E<EFBFBD>u<EFBFBD><75><EFBFBD>b<EFBFBD>N<EFBFBD>ƃp<C683><70><EFBFBD>e<EFBFBD>B<EFBFBD>E<EFBFBD>u<EFBFBD><75><EFBFBD>b<EFBFBD>N<EFBFBD>̍<EFBFBD><CC8D>v<EFBFBD><76> 256<35>‚܂łł<C582><C582>B
<EFBFBD><EFBFBD><EFBFBD>J<EFBFBD>o<EFBFBD><EFBFBD><EFBFBD>E<EFBFBD>t<EFBFBD>@<40>C<EFBFBD><43><EFBFBD>͍ő<CD8D><C591><EFBFBD> 99<39>‚܂łł<C582><C582>B <EFBFBD><EFBFBD><EFBFBD>J<EFBFBD>o<EFBFBD><EFBFBD><EFBFBD>E<EFBFBD>t<EFBFBD>@<40>C<EFBFBD><43><EFBFBD>͍ő<CD8D><C591><EFBFBD> 99<39>‚܂łł<C582><C582>B
<EFBFBD>@<40><><EFBFBD><EFBFBD><EFBFBD>‹<EFBFBD><C28B><EFBFBD> Windows Vista <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȍ~ (Windows 7, 8, 10, 11) <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>p<EFBFBD>\<5C>R<EFBFBD><52><EFBFBD>ł<EFBFBD><C582>B <EFBFBD>@<40><><EFBFBD><EFBFBD><EFBFBD>‹<EFBFBD><C28B><EFBFBD> Windows 7 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȍ~ (Windows 8, 10, 11) <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>p<EFBFBD>\<5C>R<EFBFBD><52><EFBFBD>ł<EFBFBD><C582>B
Win32 API <20><> VC <20><><EFBFBD><EFBFBD><EFBFBD>^<5E>C<EFBFBD><43><EFBFBD><EFBFBD><EFBFBD>g<EFBFBD><67><EFBFBD>Ă<EFBFBD><C482>̂ŁA Win32 API <20><> VC <20><><EFBFBD><EFBFBD><EFBFBD>^<5E>C<EFBFBD><43><EFBFBD><EFBFBD><EFBFBD>g<EFBFBD><67><EFBFBD>Ă<EFBFBD><C482>̂ŁA
<EFBFBD>\<5C>[<5B>X<EFBFBD>E<EFBFBD>R<EFBFBD>[<5B>h<EFBFBD><68><EFBFBD>R<EFBFBD><52><EFBFBD>p<EFBFBD>C<EFBFBD><43><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɂ<EFBFBD> Visual Studio 2022 <20>ȍ~<7E><><EFBFBD>K<EFBFBD>v<EFBFBD>ł<EFBFBD><C582>B <EFBFBD>\<5C>[<5B>X<EFBFBD>E<EFBFBD>R<EFBFBD>[<5B>h<EFBFBD><68><EFBFBD>R<EFBFBD><52><EFBFBD>p<EFBFBD>C<EFBFBD><43><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɂ<EFBFBD> Visual Studio 2022 <20>ȍ~<7E><><EFBFBD>K<EFBFBD>v<EFBFBD>ł<EFBFBD><C582>B

View File

@@ -1,5 +1,5 @@
// common.c // common.c
// Copyright : 2023-03-13 Yutaka Sawada // Copyright : 2024-11-30 Yutaka Sawada
// License : GPL // License : GPL
#ifndef _UNICODE #ifndef _UNICODE
@@ -9,7 +9,7 @@
#define UNICODE #define UNICODE
#endif #endif
#ifndef _WIN32_WINNT #ifndef _WIN32_WINNT
#define _WIN32_WINNT 0x0600 // Windows Vista or later #define _WIN32_WINNT 0x0601 // Windows 7 or later
#endif #endif
#include <conio.h> #include <conio.h>

View File

@@ -1,5 +1,5 @@
// ini.c // ini.c
// Copyright : 2022-01-15 Yutaka Sawada // Copyright : 2024-11-30 Yutaka Sawada
// License : GPL // License : GPL
#ifndef _UNICODE #ifndef _UNICODE
@@ -9,7 +9,7 @@
#define UNICODE #define UNICODE
#endif #endif
#ifndef _WIN32_WINNT #ifndef _WIN32_WINNT
#define _WIN32_WINNT 0x0600 // Windows Vista or later #define _WIN32_WINNT 0x0601 // Windows 7 or later
#endif #endif
#include <malloc.h> #include <malloc.h>

View File

@@ -1,5 +1,5 @@
// par1.c // par1.c
// Copyright : 2022-02-16 Yutaka Sawada // Copyright : 2024-11-30 Yutaka Sawada
// License : GPL // License : GPL
#ifndef _UNICODE #ifndef _UNICODE
@@ -9,7 +9,7 @@
#define UNICODE #define UNICODE
#endif #endif
#ifndef _WIN32_WINNT #ifndef _WIN32_WINNT
#define _WIN32_WINNT 0x0600 // Windows Vista or later #define _WIN32_WINNT 0x0601 // Windows 7 or later
#endif #endif
#include <stdio.h> #include <stdio.h>

View File

@@ -1,5 +1,5 @@
// par1_cmd.c // par1_cmd.c
// Copyright : 2023-03-14 Yutaka Sawada // Copyright : 2024-11-30 Yutaka Sawada
// License : GPL // License : GPL
#ifndef _UNICODE #ifndef _UNICODE
@@ -9,7 +9,7 @@
#define UNICODE #define UNICODE
#endif #endif
#ifndef _WIN32_WINNT #ifndef _WIN32_WINNT
#define _WIN32_WINNT 0x0600 // Windows Vista or later #define _WIN32_WINNT 0x0601 // Windows 7 or later
#endif #endif
#include <stdio.h> #include <stdio.h>

Binary file not shown.

View File

@@ -1,2 +1,2 @@
#define FILE_VERSION "1.3.2.8" // ファイルのバージョン番号 #define FILE_VERSION "1.3.3.5" // ファイルのバージョン番号
#define PRODUCT_VERSION 0x132 // クライアントのバージョン番号 #define PRODUCT_VERSION 0x133 // クライアントのバージョン番号

View File

@@ -1,4 +1,4 @@
[ par2j.exe - version 1.3.3.2 or later ] [ par2j.exe - version 1.3.3.5 or later ]
Type "par2j.exe" to see version, test integrity, and show usage below. Type "par2j.exe" to see version, test integrity, and show usage below.
@@ -148,6 +148,16 @@ It means that it is impossible to mix "/" and "-" in options of same command lin
If PAR file's filename (or relative path) is started by "-", If PAR file's filename (or relative path) is started by "-",
you need to use "/" for prefix of options to distinguish PAR file. you need to use "/" for prefix of options to distinguish PAR file.
When a option has arbitary number or text,
don't put space between the option and following part.
For example, setting "/rr10" is valid, but "/rr 10" is wrong.
Setting "/dPath" is valid, but "/d Path" is wrong.
To distinguish options from filenames, order of command-line arguments is important.
Put all options before <par file>.
Put <par file> before all [input files] or [external files].
/f, /fu : /f, /fu :
Set this, if you use file-list for file name or file path. Set this, if you use file-list for file name or file path.
When this option is set, [input files] or [external files] is path of file-list. When this option is set, [input files] or [external files] is path of file-list.
@@ -302,7 +312,7 @@ Because it may be difficult to predict recovery file size,
use trial command to see how is the size. use trial command to see how is the size.
When it's "/lr" or "/lr0", block count of the largest input file is used. When it's "/lr" or "/lr0", block count of the largest input file is used.
(If the max file is 1000 KB and block size is 10 KB, /lr is same as /lr100.) (If the max file is 1000 KB and block size is 10 KB, /lr is same as /lr100.)
When split size "/ls" is set with "/lr0", When both "/lr0" and "/ls(split size)" are set,
block count of the splited file size is used instead of the largest input file. block count of the splited file size is used instead of the largest input file.
for example, /lr , /lr10 , /lr2000 for example, /lr , /lr10 , /lr2000
@@ -354,6 +364,13 @@ This is possible, only when there is one input file of .ZIP or .7z format.
When recovery files are created in a different directory, When recovery files are created in a different directory,
the protected archive file is made in the directory. the protected archive file is made in the directory.
/ls2 has a special feature to set limit size of recovery files directly.
When both "/ls2" and "/lr(limit size)" are set,
setting number of /lr is recognizned as file size instead of number of blocks.
In this usage, setting limit size must be less than 2 GB.
If you want max 100 MB each file size, set like these; /ls2 /lr102400000
Because the calculation ignores packets, you may set a bit smaller size.
for example, /ls10000 , /ls1048576, /ls1 for example, /ls10000 , /ls1048576, /ls1
/lc : /lc :
@@ -386,6 +403,25 @@ The format is "/lc#" (# is from 1 to 32 as the number of using threads).
for example, /lc1 to use single Core, /lc508 to use half Cores and GPU for example, /lc1 to use single Core, /lc508 to use half Cores and GPU
/lcb :
This is for Cache Blocking. (CPU cache optimization)
By default, this value is set-associative size of CPU L2 cache.
Maximum value is 32767. It will be multipled by 64 KB.
To disable cache optimization, set "/lcb0".
/lcs :
This is for large buffer size at calculating multiple files' hashes.
By default, this value is set-associative size of CPU L3 cache.
Maximum value is 65535. It will be multipled by 64 KB.
When you set "/lcs0", large buffer size will become 2 MB by default.
/lcm :
This is for max number of chunks to calculate at once. (CPU shared cache optimization)
By default, this value may be rate of L3 cache size / L2 cache size.
The value may be changed by some factors in experimental results.
Maximum value is 32768. Lower values than 8 will be same as 32768.
To disable cache optimization, set "/lcm0".
/m : /m :
Set this, if you want to set memory usage. Set this, if you want to set memory usage.
If too many memory is allocated, system will use swap file. If too many memory is allocated, system will use swap file.
@@ -455,8 +491,10 @@ If you include space in comment, use "" to specify where is end.
use this setting to set the path as base-directory. use this setting to set the path as base-directory.
This is either absolute path or relative path from current directory. This is either absolute path or relative path from current directory.
If you include space in path, use "" to specify where is end. If you include space in path, use "" to specify where is end.
Note, setting "/dC:" is same as setting current directory of C-drive. As you may omit the last "/" in path of a folder,
If you want to set direct root of C-drive, you must set "/dC:/". both "/dC:/data/" and "/dC:/data" are valid.
Note, setting "/dD:" is same as setting current directory of D-drive.
If you want to set direct root of D-drive, you must set "/dD:/".
for example, /dC:/data/ , /d"C:/Program Files/" , /d../data/ for example, /dC:/data/ , /d"C:/Program Files/" , /d../data/

View File

@@ -31,7 +31,7 @@ Parchive 2.0 client by Yutaka Sawada
Verifying file use same memory as the file or double of block size. Verifying file use same memory as the file or double of block size.
Recovering block use more memory as the number of block is many. Recovering block use more memory as the number of block is many.
This requires a PC of Windows Vista or later (Windows 7, 8, 10, 11). This requires a PC of Windows 7 or later (Windows 8, 10, 11).
This is developed with Visual Studio 2022 on Windows 10. This is developed with Visual Studio 2022 on Windows 10.

View File

@@ -1,140 +1,140 @@

PAR 2.0 の修復用データを作ってファイルの破損や消失に備えます
PAR 2.0 <20>̏C<CC8F><43><EFBFBD>p<EFBFBD>f<EFBFBD>[<5B>^<5E><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ăt<C483>@<40>C<EFBFBD><43><EFBFBD>̔j<CC94><6A><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɔ<EFBFBD><C994><EFBFBD><EFBFBD>܂<EFBFBD> 澤田 豊 による Parchive 2.0 クライアント
<EFBFBD>V<EFBFBD>c <20>L <20>ɂ<EFBFBD><C982><EFBFBD> Parchive 2.0 <20>N<EFBFBD><4E><EFBFBD>C<EFBFBD>A<EFBFBD><41><EFBFBD>g
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
[ <EFBFBD>ȒP<EFBFBD>ȉ<EFBFBD><EFBFBD><EFBFBD> ] [ 簡単な解説 ]
<EFBFBD>@<40><><EFBFBD><EFBFBD><EFBFBD>̃\<5C>[<5B>X<EFBFBD>E<EFBFBD>t<EFBFBD>@<40>C<EFBFBD><43><EFBFBD><EFBFBD><EFBFBD><EFBFBD>J<EFBFBD>o<EFBFBD><6F><EFBFBD>E<EFBFBD>t<EFBFBD>@<40>C<EFBFBD><43><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EC90AC><EFBFBD>āA  複数のソース・ファイルからリカバリ・ファイルを作成して、
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̃t<EFBFBD>@<40>C<EFBFBD><43><EFBFBD>̈ꕔ<CC88><EA9594><EFBFBD>j<EFBFBD><6A><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ă<EFBFBD><C482>A それらのファイルの一部が破損したり消失しても、
<EFBFBD>c<EFBFBD><EFBFBD><EFBFBD><EFBFBD>\<5C>[<5B>X<EFBFBD>E<EFBFBD>t<EFBFBD>@<40>C<EFBFBD><43><EFBFBD>ƃ<EFBFBD><C683>J<EFBFBD>o<EFBFBD><6F><EFBFBD>E<EFBFBD>t<EFBFBD>@<40>C<EFBFBD><43><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>A 残されたソース・ファイルとリカバリ・ファイルから、
<EFBFBD>t<EFBFBD>@<40>C<EFBFBD><43><EFBFBD><EFBFBD><EFBFBD>C<EFBFBD><43><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ׂ̃\<5C>t<EFBFBD>g<EFBFBD>ł<EFBFBD><C582>B ファイルを修復する為のソフトです。
PAR 1.0 <EFBFBD><EFBFBD><EFBFBD>t<EFBFBD>@<40>C<EFBFBD><43><EFBFBD>P<EFBFBD>ʂŏC<C58F><43><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̂ɔ<CC82><C994>ׂāA PAR 1.0 がファイル単位で修復するのに比べて、
PAR 2.0 <EFBFBD>̓t<EFBFBD>@<40>C<EFBFBD><43><EFBFBD>𕡐<EFBFBD><F095A190>u<EFBFBD><75><EFBFBD>b<EFBFBD>N<EFBFBD>ɕ<EFBFBD><C995><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ă<EFBFBD><C482>̃u<CC83><75><EFBFBD>b<EFBFBD>N<EFBFBD>P<EFBFBD>ʂŏC<C58F><43><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̂ŁA PAR 2.0 はファイルを複数ブロックに分割してそのブロック単位で修復するので、
<EFBFBD>t<EFBFBD>@<40>C<EFBFBD><43><EFBFBD>̈ꕔ<CC88><EA9594><EFBFBD>j<EFBFBD><6A><EFBFBD><EFBFBD><EFBFBD>Ă<EFBFBD><C482>j<EFBFBD><6A><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȊO<C88A>̃u<CC83><75><EFBFBD>b<EFBFBD>N<EFBFBD>͖<EFBFBD><CD96><EFBFBD><EFBFBD>Ŏ<EFBFBD><C58E><EFBFBD><EFBFBD>o<EFBFBD><6F><EFBFBD><EFBFBD><EFBFBD>Ƃ<EFBFBD><C682>ł<EFBFBD><C582>܂<EFBFBD><DC82>B ファイルの一部が破損しても破損部分以外のブロックは無傷で取り出すことができます。
<EFBFBD><EFBFBD><EFBFBD>̂<EFBFBD><EFBFBD>߁A<EFBFBD><EFBFBD><EFBFBD><EFBFBD>G<EFBFBD>ȃG<EFBFBD><EFBFBD><EFBFBD>[<5B>ɂ<EFBFBD><C982><EFBFBD><EFBFBD>Ȃ<EFBFBD><C882><EFBFBD><E792B7><EFBFBD>őΏ<C591><CE8F><EFBFBD><EFBFBD><EFBFBD>Ƃ<EFBFBD><C682>ł<EFBFBD><C582>܂<EFBFBD><DC82>B そのため、より複雑なエラーにも少ない冗長性で対処することができます。
<EFBFBD>@<40><><EFBFBD>J<EFBFBD>o<EFBFBD><6F><EFBFBD>E<EFBFBD>t<EFBFBD>@<40>C<EFBFBD><43><EFBFBD><EFBFBD><EFBFBD>X<C281>ɓƗ<C993><C697><EFBFBD><EFBFBD><EFBFBD><EFBFBD>p<EFBFBD>P<EFBFBD>b<EFBFBD>g<EFBFBD>ō\<5C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>\<5C><><EFBFBD>Ȃ̂ŁA  リカバリ・ファイルも個々に独立したパケットで構成される構造なので、
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>I<EFBFBD>Ȕj<EFBFBD><EFBFBD><EFBFBD>ɋ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>āA<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>L<EFBFBD><EFBFBD><EFBFBD>Ɏg<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƃ<EFBFBD><EFBFBD>ł<EFBFBD><EFBFBD>܂<EFBFBD><EFBFBD>B 部分的な破損に強くて、より有効に使うことができます。
<EFBFBD>u<EFBFBD><EFBFBD><EFBFBD>b<EFBFBD>N<EFBFBD>E<EFBFBD>T<EFBFBD>C<EFBFBD>Y<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>قNjǒn<EFBFBD>I<EFBFBD>ȃG<EFBFBD><EFBFBD><EFBFBD>[<5B><><EFBFBD><EFBFBD><EFBFBD>ɉe<C989><65><EFBFBD><EFBFBD><EFBFBD>ɂ<EFBFBD><C982><EFBFBD><EFBFBD>Ȃ<EFBFBD><C882>A ブロック・サイズが小さいほど局地的なエラーが他に影響しにくくなり、
<EFBFBD>C<EFBFBD><EFBFBD><EFBFBD>ɕK<EFBFBD>v<EFBFBD>ȃ<EFBFBD><EFBFBD>J<EFBFBD>o<EFBFBD><EFBFBD><EFBFBD>E<EFBFBD>t<EFBFBD>@<40>C<EFBFBD><43><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ȃ<EFBFBD><C882>čς݂܂<DD82><DC82>B 修復に必要なリカバリ・ファイルも少なくて済みます。
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>A<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>\<5C>[<5B>X<EFBFBD>E<EFBFBD>u<EFBFBD><75><EFBFBD>b<EFBFBD>N<EFBFBD>𕜌<EFBFBD><F0959C8C><EFBFBD><EFBFBD><EFBFBD>߂ɂ<DF82> しかし、失われたソース・ブロックを復元するためには
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̃p<EFBFBD><EFBFBD><EFBFBD>e<EFBFBD>B<EFBFBD>E<EFBFBD>u<EFBFBD><EFBFBD><EFBFBD>b<EFBFBD>N<EFBFBD><EFBFBD><EFBFBD>K<EFBFBD>v<EFBFBD>ɂȂ<EFBFBD><EFBFBD>Ƃ<EFBFBD><EFBFBD><EFBFBD> PAR <20>̊<EFBFBD><CC8A>{<7B><><EFBFBD><EFBFBD><EFBFBD>͓<EFBFBD><CD93><EFBFBD><EFBFBD>ł<EFBFBD><C582>B 同数のパリティ・ブロックが必要になるという PAR の基本原理は同じです。
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>p<EFBFBD><EFBFBD><EFBFBD>e<EFBFBD>B<EFBFBD>E<EFBFBD>u<EFBFBD><EFBFBD><EFBFBD>b<EFBFBD>N<EFBFBD>̐<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ł<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʂŁA 作成するパリティ・ブロックの数が復元できる量で、
<EFBFBD>u<EFBFBD><EFBFBD><EFBFBD>b<EFBFBD>N<EFBFBD>E<EFBFBD>T<EFBFBD>C<EFBFBD>Y<EFBFBD>͂<EFBFBD><EFBFBD>̕<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>P<EFBFBD>ʂɂȂ<EFBFBD><EFBFBD>܂<EFBFBD><EFBFBD>B ブロック・サイズはその復元する単位になります。
<EFBFBD>@PAR 2.0 <EFBFBD>̓t<EFBFBD>@<40>C<EFBFBD><43><EFBFBD><EFBFBD><EFBFBD>Ƀf<C983>B<EFBFBD><42><EFBFBD>N<EFBFBD>g<EFBFBD><67><EFBFBD><EFBFBD><EFBFBD>܂ނ<DC82><DE82>Ƃ<EFBFBD><C682>ł<EFBFBD><C582><EFBFBD><EFBFBD>̂ŁA  PAR 2.0 はファイル名にディレクトリも含むことができるので、
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̃t<EFBFBD>H<EFBFBD><EFBFBD><EFBFBD>_<EFBFBD>ɎU<EFBFBD><EFBFBD><EFBFBD>΂<EFBFBD><EFBFBD><EFBFBD><EFBFBD>t<EFBFBD>@<40>C<EFBFBD><43><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̂܂܏C<DC8F><43><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƃ<EFBFBD><C682>ł<EFBFBD><C582><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƁA 複数のフォルダに散らばったファイルをそのまま修復することができたりと、
PAR 1.0 <EFBFBD>ɔ<EFBFBD><EFBFBD>ׂĂ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̃t<EFBFBD>@<40>C<EFBFBD><43><EFBFBD><EFBFBD><EFBFBD>_<EFBFBD><5F><EFBFBD>ɏC<C98F><43><EFBFBD>ł<EFBFBD><C582>Ďg<C48E><67><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>͂悭<CD82>Ȃ<EFBFBD><C882>Ă܂<C482><DC82>B PAR 1.0 に比べてより多くのファイルを柔軟に修復できて使い勝手はよくなってます。
<EFBFBD><EFBFBD><EFBFBD>̔<EFBFBD><EFBFBD>ʁA<EFBFBD><EFBFBD>ȃt<EFBFBD>@<40>C<EFBFBD><43><EFBFBD><EFBFBD><E291BD><EFBFBD>̃u<CC83><75><EFBFBD>b<EFBFBD>N<EFBFBD><4E><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƁA その反面、大きなファイルや多数のブロックを処理すると、
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>[<5B><><EFBFBD><EFBFBD><EF82AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>v<EFBFBD>Z<EFBFBD>ɂ₽<C982><E282BD><EFBFBD>Ǝ<EFBFBD><C68E>Ԃ<EFBFBD><D482><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>܂<EFBFBD><DC82>B メモリー消費が増えたり計算にやたらと時間がかかります。
<EFBFBD>@<40>\<5C>I<EFBFBD>ɂ<EFBFBD> PAR 2.0 <20>̕<EFBFBD><CC95><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʔłł<C582><C582><EFBFBD><EFBFBD>A<EFBFBD>\<5C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>G<EFBFBD>őΉ<C591><CE89>\<5C>t<EFBFBD>g<EFBFBD><67><EFBFBD>قƂ<D982><C682>ǂȂ<C782><C882>A 機能的には PAR 2.0 の方が上位版ですが、構造が複雑で対応ソフトがほとんどなく、
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>\<5C>ȃp<C883>\<5C>R<EFBFBD><52><EFBFBD>łȂ<C582><C882>Ǝ<EFBFBD><C68E>p<EFBFBD>I<EFBFBD>ȏ<EFBFBD><C88F><EFBFBD><EFBFBD><EFBFBD><EFBFBD>x<EFBFBD>𓾂<EFBFBD><F093BE82><EFBFBD><EFBFBD>Ȃ<EFBFBD><C882><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>܂<EFBFBD><DC82><EFBFBD><EFBFBD>B 高性能なパソコンでないと実用的な処理速度を得られないかもしれません。
<EFBFBD><EFBFBD><EFBFBD>ɔ<EFBFBD><EFBFBD>͂ȃp<EFBFBD>\<5C>R<EFBFBD><52><EFBFBD>ł̓V<CD83><56><EFBFBD>v<EFBFBD><76><EFBFBD>Ōy<C58C><79><EFBFBD><EFBFBD> PAR 1.0 <20>̕<EFBFBD><CC95><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ă邱<C482>Ƃ<EFBFBD><C682><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̂ŁA 特に非力なパソコンではシンプルで軽快な PAR 1.0 の方が向いてることもあるので、
<EFBFBD>‹<EFBFBD><EFBFBD><EFBFBD><EFBFBD>p<EFBFBD>r<EFBFBD>ɉ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ďg<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ă<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>B 環境や用途に応じて使い分けてください。
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
[ <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>d<EFBFBD>l<EFBFBD>Ȃ<EFBFBD> ] [ 特徴や仕様など ]
<EFBFBD>@Parity Archive 2.0 <EFBFBD>̖{<7B><> par2cmdline <EFBFBD><EFBFBD> QuickPar <EFBFBD>ɔ<EFBFBD><EFBFBD>ׂāA  Parity Archive 2.0 の本家 par2cmdline QuickPar に比べて、
<EFBFBD><EFBFBD><EFBFBD>J<EFBFBD>o<EFBFBD><EFBFBD><EFBFBD>E<EFBFBD>t<EFBFBD>@<40>C<EFBFBD><43><EFBFBD>ɃR<C983><52><EFBFBD><EFBFBD><EFBFBD>g<EFBFBD><67><EFBFBD>t<EFBFBD><74><EFBFBD><EFBFBD>Ƃ<EFBFBD><C682>ł<EFBFBD><C582>܂<EFBFBD><DC82>B リカバリ・ファイルにコメントを付けることができます。
<EFBFBD><EFBFBD><EFBFBD>j<EFBFBD>R<EFBFBD>[<5B>h<EFBFBD><68><EFBFBD>ǂݏ<C782><DD8F><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̂Ń}<7D><><EFBFBD>`<60>o<EFBFBD>C<EFBFBD>g<EFBFBD><67><EFBFBD><EFBFBD><EFBFBD>ɂ<EFBFBD><C982>Ή<EFBFBD><CE89><EFBFBD><EFBFBD>Ă܂<C482><DC82>B ユニコードを読み書きするのでマルチバイト文字にも対応してます。
<EFBFBD>T<EFBFBD>C<EFBFBD>Y<EFBFBD><EFBFBD> 0<>̋<EFBFBD><CC8B>t<EFBFBD>@<40>C<EFBFBD><43><EFBFBD>ɂ<EFBFBD><C982>Ή<EFBFBD><CE89><EFBFBD><EFBFBD>Ă܂<C482><DC82>B サイズが 0の空ファイルにも対応してます。
par2cmdline <EFBFBD>̓T<EFBFBD>u<EFBFBD>E<EFBFBD>f<EFBFBD>B<EFBFBD><EFBFBD><EFBFBD>N<EFBFBD>g<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>t<EFBFBD>@<40>C<EFBFBD><43><EFBFBD><EFBFBD><EFBFBD>Ƃ<EFBFBD><C682>ĔF<C494><46><EFBFBD><EFBFBD><EFBFBD>A par2cmdline はサブ・ディレクトリをファイル名として認識し、
QuickPar <EFBFBD>͖<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>܂<EFBFBD><EFBFBD><EFBFBD><EFBFBD>A<EFBFBD><EFBFBD><EFBFBD>̃A<EFBFBD>v<EFBFBD><EFBFBD><EFBFBD>P<EFBFBD>[<5B>V<EFBFBD><56><EFBFBD><EFBFBD><EFBFBD><EFBFBD> QuickPar は無視しますが、このアプリケーションは
<EFBFBD>t<EFBFBD>H<EFBFBD><EFBFBD><EFBFBD>_<EFBFBD><EFBFBD><EFBFBD>T<EFBFBD>u<EFBFBD>E<EFBFBD>f<EFBFBD>B<EFBFBD><EFBFBD><EFBFBD>N<EFBFBD>g<EFBFBD><EFBFBD><EFBFBD>Ȃǂ̃f<EFBFBD>B<EFBFBD><EFBFBD><EFBFBD>N<EFBFBD>g<EFBFBD><EFBFBD><EFBFBD>\<5C><><EFBFBD>𕜌<EFBFBD><F0959C8C><EFBFBD><EFBFBD><EFBFBD>Ƃ<EFBFBD><C682>ł<EFBFBD><C582>܂<EFBFBD><DC82>B フォルダやサブ・ディレクトリなどのディレクトリ構造を復元することができます。
<EFBFBD>@QuickPar <EFBFBD>͖<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɃS<EFBFBD>~<7E><><EFBFBD>t<EFBFBD><74><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ԂŔ<D482><C594>[<5B>ȃu<C883><75><EFBFBD>b<EFBFBD>N<EFBFBD>̒<EFBFBD><CC92>O<EFBFBD>̃u<CC83><75><EFBFBD>b<EFBFBD>N<EFBFBD><4E><EFBFBD>j<EFBFBD><6A><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>  QuickPar は末尾にゴミが付いた状態で半端なブロックの直前のブロックが破損すると
<EFBFBD><EFBFBD><EFBFBD>̃u<EFBFBD><EFBFBD><EFBFBD>b<EFBFBD>N<EFBFBD><EFBFBD><EFBFBD>F<EFBFBD><EFBFBD><EFBFBD>ł<EFBFBD><EFBFBD>Ȃ<EFBFBD><EFBFBD>Ȃ<EFBFBD><EFBFBD>܂<EFBFBD><EFBFBD><EFBFBD><EFBFBD>A<EFBFBD><EFBFBD><EFBFBD>̃A<EFBFBD>v<EFBFBD><EFBFBD><EFBFBD>P<EFBFBD>[<5B>V<EFBFBD><56><EFBFBD><EFBFBD><EFBFBD>ł͂<C582><CD82><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ɣ<EFBFBD><C694><EFBFBD>܂<EFBFBD><DC82>B そのブロックを認識できなくなりますが、このアプリケーションではきちんと判定します。
<EFBFBD>܂<EFBFBD><EFBFBD>A<EFBFBD>u<EFBFBD><EFBFBD><EFBFBD>b<EFBFBD>N<EFBFBD>E<EFBFBD>T<EFBFBD>C<EFBFBD>Y<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ē<EFBFBD><EFBFBD><EFBFBD><EFBFBD>t<EFBFBD>@<40>C<EFBFBD><43><EFBFBD><EFBFBD><EFBFBD>œ<EFBFBD><C593>e<EFBFBD><65><EFBFBD>d<EFBFBD><64><EFBFBD><EFBFBD><EFBFBD>Ă<EFBFBD><C482>ƁA また、ブロック・サイズが小さくて同一ファイル内で内容が重複してると、
<EFBFBD>j<EFBFBD><EFBFBD><EFBFBD>u<EFBFBD><EFBFBD><EFBFBD>b<EFBFBD>N<EFBFBD>ȍ~<7E>Ɍ<EFBFBD><C98C>̃u<CC83><75><EFBFBD>b<EFBFBD>N<EFBFBD><4E><EFBFBD><EFBFBD><EFBFBD>Ɍ<EFBFBD><C98C>o<EFBFBD><6F><EFBFBD><EFBFBD>ۂ<EFBFBD><DB82>N<EFBFBD><4E><EFBFBD>āA 破損ブロック以降に後のブロックを先に検出する現象が起きて、
<EFBFBD><EFBFBD><EFBFBD>̌<EFBFBD><EFBFBD>Ŗ{<7B><><EFBFBD>̏<EFBFBD><CC8F>Ԃ̃u<CC83><75><EFBFBD>b<EFBFBD>N<EFBFBD><4E><EFBFBD>F<EFBFBD><46><EFBFBD>ł<EFBFBD><C582>Ȃ<EFBFBD><C882>Ȃ<EFBFBD><C882>Ă<EFBFBD><C482>܂<EFBFBD><DC82><EFBFBD><EFBFBD><EFBFBD><E882AA><EFBFBD><EFBFBD><EFBFBD>܂<EFBFBD><DC82><EFBFBD><EFBFBD>A その後で本来の順番のブロックを認識できなくなってしまう問題がありますが、
<EFBFBD><EFBFBD><EFBFBD>̃A<EFBFBD>v<EFBFBD><EFBFBD><EFBFBD>P<EFBFBD>[<5B>V<EFBFBD><56><EFBFBD><EFBFBD><EFBFBD>ł͌<C582><CD8C>o<EFBFBD><6F><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ԂɊւ<C98A><D682><EFBFBD><E782B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƔF<C694><46><EFBFBD><EFBFBD><EFBFBD>܂<EFBFBD><DC82>B このアプリケーションでは検出した順番に関わらずきちんと認識します。
<EFBFBD>j<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̌<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 1<>o<EFBFBD>C<EFBFBD>g<EFBFBD><67><EFBFBD>ˆ<EFBFBD><C288>v<EFBFBD><76><EFBFBD><EFBFBD><EFBFBD>u<EFBFBD><75><EFBFBD>b<EFBFBD>N<EFBFBD>𒲂ׂĂ<D782><C482><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ߎ<EFBFBD><DF8E>Ԃ͂<D482><CD82><EFBFBD><EFBFBD><EFBFBD><EFBFBD>܂<EFBFBD><DC82><EFBFBD><EFBFBD>A 破損部分の検査で 1バイトずつ一致するブロックを調べていくため時間はかかりますが、
<EFBFBD>j<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>t<EFBFBD>@<40>C<EFBFBD><43><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E891BD><EFBFBD>̗<EFBFBD><CC97>p<EFBFBD>”\<5C>ȃu<C883><75><EFBFBD>b<EFBFBD>N<EFBFBD><4E><EFBFBD><EFBFBD><EFBFBD>o<EFBFBD><6F><EFBFBD><EFBFBD><E982A9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>܂<EFBFBD><DC82><EFBFBD><EFBFBD>B 破損したファイルからより多くの利用可能なブロックを検出するかもしれません。
<EFBFBD>@QuickPar <EFBFBD>͔j<EFBFBD><EFBFBD><EFBFBD>t<EFBFBD>@<40>C<EFBFBD><43><EFBFBD><EFBFBD><EFBFBD>C<EFBFBD><43><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ۂɁA<C981><41><EFBFBD><EFBFBD><EFBFBD>̔j<CC94><6A><EFBFBD>u<EFBFBD><75><EFBFBD>b<EFBFBD>N<EFBFBD>̈ʒu<CA92>ƏC<C68F><43><EFBFBD>Ɏg<C98E><67>  QuickPar は破損ファイルを修復する際に、特定の破損ブロックの位置と修復に使う
<EFBFBD>p<EFBFBD><EFBFBD><EFBFBD>e<EFBFBD>B<EFBFBD>E<EFBFBD>u<EFBFBD><EFBFBD><EFBFBD>b<EFBFBD>N<EFBFBD>̑g<EFBFBD>ݍ<EFBFBD><EFBFBD><EFBFBD>ɂ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ẮA<EFBFBD>p<EFBFBD><EFBFBD><EFBFBD>e<EFBFBD>B<EFBFBD>E<EFBFBD>u<EFBFBD><EFBFBD><EFBFBD>b<EFBFBD>N<EFBFBD>̐<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ă<EFBFBD><EFBFBD>Ă<EFBFBD> パリティ・ブロックの組み合わせによっては、パリティ・ブロックの数が足りていても
<EFBFBD>C<EFBFBD><EFBFBD><EFBFBD>ł<EFBFBD><EFBFBD>Ȃ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƃ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>܂<EFBFBD><EFBFBD>B<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>́A<EFBFBD>C<EFBFBD><EFBFBD><EFBFBD>Ɏg<EFBFBD><EFBFBD><EFBFBD>p<EFBFBD><EFBFBD><EFBFBD>e<EFBFBD>B<EFBFBD>E<EFBFBD>u<EFBFBD><EFBFBD><EFBFBD>b<EFBFBD>N<EFBFBD><EFBFBD> 修復できないことがあります。そういう時は、修復に使うパリティ・ブロックを
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƂŕύX<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƃ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>߂<EFBFBD><EFBFBD>ǂ<EFBFBD><EFBFBD>ȍ<EFBFBD><EFBFBD>Ƃ<EFBFBD><EFBFBD>K<EFBFBD>v<EFBFBD>ɂȂ<EFBFBD><EFBFBD>܂<EFBFBD><EFBFBD>B 手作業で変更するというめんどうな作業が必要になります。
<EFBFBD><EFBFBD><EFBFBD>̃A<EFBFBD>v<EFBFBD><EFBFBD><EFBFBD>P<EFBFBD>[<5B>V<EFBFBD><56><EFBFBD><EFBFBD><EFBFBD>ł͖<C582><CD96><EFBFBD><EFBFBD>̂<EFBFBD><CC82><EFBFBD><EFBFBD>p<EFBFBD><70><EFBFBD>e<EFBFBD>B<EFBFBD>E<EFBFBD>u<EFBFBD><75><EFBFBD>b<EFBFBD>N<EFBFBD><4E><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ď<EFBFBD><C48E><EFBFBD><EFBFBD>I<EFBFBD><49> このアプリケーションでは問題のあるパリティ・ブロックを除いて自動的に
<EFBFBD>ēx<EFBFBD>C<EFBFBD><EFBFBD><EFBFBD>ł<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>݂Ă<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̂Ŋy<EFBFBD>ł<EFBFBD><EFBFBD>B 再度修復できるか試みてくれるので楽です。
<EFBFBD>@<40><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>\<5C>[<5B>X<EFBFBD>E<EFBFBD>u<EFBFBD><75><EFBFBD>b<EFBFBD>N<EFBFBD>Ɠ<EFBFBD><C693><EFBFBD><EFBFBD><EFBFBD><EFBFBD>e<EFBFBD>̃u<CC83><75><EFBFBD>b<EFBFBD>N<EFBFBD><4E><EFBFBD><EFBFBD><EFBFBD>݂<EFBFBD><DD82>ė<EFBFBD><C497>p<EFBFBD>ł<EFBFBD><C582><EFBFBD><E982A9>  失われたソース・ブロックと同じ内容のブロックが存在して利用できるかを
<EFBFBD>`<60>F<EFBFBD>b<EFBFBD>N<EFBFBD>T<EFBFBD><54><EFBFBD><EFBFBD><EFBFBD>g<EFBFBD><67><EFBFBD>Č<EFBFBD><C48C><EFBFBD><EFBFBD><EFBFBD><EFBFBD>A<EFBFBD><41><EFBFBD>‚<EFBFBD><C282><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>͒<EFBFBD><CD92>ڃR<DA83>s<EFBFBD>[<5B><><EFBFBD>܂<EFBFBD><DC82>B チェックサムを使って検索し、見つかった場合は直接コピーします。
<EFBFBD><EFBFBD><EFBFBD>̂<EFBFBD><EFBFBD>߁A<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>e<EFBFBD>̃\<5C>[<5B>X<EFBFBD>E<EFBFBD>u<EFBFBD><75><EFBFBD>b<EFBFBD>N<EFBFBD><4E><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>܂܂<DC82><DC82><EFBFBD>́A そのため、同じ内容のソース・ブロックが複数含まれる時は、
<EFBFBD>C<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̌v<EFBFBD>Z<EFBFBD>ʂ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƌ<EFBFBD><EFBFBD>ɏ<EFBFBD><EFBFBD>Ȃ<EFBFBD><EFBFBD>p<EFBFBD><EFBFBD><EFBFBD>e<EFBFBD>B<EFBFBD>E<EFBFBD>u<EFBFBD><EFBFBD><EFBFBD>b<EFBFBD>N<EFBFBD>ł<EFBFBD><EFBFBD>C<EFBFBD><EFBFBD><EFBFBD>ł<EFBFBD><EFBFBD>܂<EFBFBD><EFBFBD>B 修復時の計算量が減ると共に少ないパリティ・ブロックでも修復できます。
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>I<EFBFBD>ɓ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>e<EFBFBD>̃t<EFBFBD>@<40>C<EFBFBD><43><EFBFBD><EFBFBD><EFBFBD>܂܂<DC82><DC82><EFBFBD><EFBFBD>Ȃ<EFBFBD><C882>AQuickPar <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>C<EFBFBD><43><EFBFBD>ł<EFBFBD><C582><EFBFBD><EFBFBD>”\<5C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ł<EFBFBD><C582>B 部分的に同じ内容のファイルが含まれるなら、QuickPar よりも修復できる可能性が高いです。
<EFBFBD>@<40>u<EFBFBD><75><EFBFBD>b<EFBFBD>N<EFBFBD>E<EFBFBD>T<EFBFBD>C<EFBFBD>Y<EFBFBD><59> 4<>o<EFBFBD>C<EFBFBD>g<EFBFBD>̏ꍇ<CC8F>́A  ブロック・サイズが 4バイトの場合は、
<EFBFBD>j<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>\<5C>[<5B>X<EFBFBD>E<EFBFBD>u<EFBFBD><75><EFBFBD>b<EFBFBD>N<EFBFBD>̃`<60>F<EFBFBD>b<EFBFBD>N<EFBFBD>T<EFBFBD><54><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>e<EFBFBD><65><EFBFBD>t<EFBFBD>Z<EFBFBD><5A><EFBFBD><EFBFBD><EFBFBD>̂ŁA 破損したソース・ブロックのチェックサムから内容を逆算するので、
<EFBFBD>p<EFBFBD><EFBFBD><EFBFBD>e<EFBFBD>B<EFBFBD>E<EFBFBD>u<EFBFBD><EFBFBD><EFBFBD>b<EFBFBD>N<EFBFBD><EFBFBD><EFBFBD>S<EFBFBD><EFBFBD><EFBFBD>g<EFBFBD><EFBFBD><EFBFBD>Ȃ<EFBFBD><EFBFBD>ŏC<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƃ<EFBFBD><EFBFBD>ł<EFBFBD><EFBFBD>܂<EFBFBD><EFBFBD>B パリティ・ブロックを全く使わないで修復することができます。
<EFBFBD>u<EFBFBD><EFBFBD><EFBFBD>b<EFBFBD>N<EFBFBD>E<EFBFBD>T<EFBFBD>C<EFBFBD>Y<EFBFBD><EFBFBD> 8<>o<EFBFBD>C<EFBFBD>g<EFBFBD>̏ꍇ<CC8F>̏<EFBFBD><CC8F><EFBFBD><EFBFBD>́A ブロック・サイズが 8バイトの場合の処理は、
1<EFBFBD>u<EFBFBD><EFBFBD><EFBFBD>b<EFBFBD>N<EFBFBD><EFBFBD><EFBFBD>t<EFBFBD>Z<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̂ɉ<EFBFBD><EFBFBD>\<5C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̂Ŏ<CC82><C58E><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ă<EFBFBD><C482>܂<EFBFBD><DC82><EFBFBD><EFBFBD>B 1ブロックを逆算するのに何十分もかかるので実装していません。
<EFBFBD>\<5C>[<5B>X<EFBFBD>E<EFBFBD>R<EFBFBD>[<5B>h<EFBFBD><68><EFBFBD>ɂ͂<C982><CD82><EFBFBD><EFBFBD>̂Ŋ<CC82><C58A>]<5D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 8<>o<EFBFBD>C<EFBFBD>g<EFBFBD>p<EFBFBD><70><EFBFBD>lj<EFBFBD><C789>ł<EFBFBD><C582>܂<EFBFBD><DC82>B ソース・コード上にはあるので希望があれば 8バイト用も追加できます。
<EFBFBD>@<40><><EFBFBD><EFBFBD><EFBFBD>t<EFBFBD>@<40>C<EFBFBD><43><EFBFBD>̍<EFBFBD><CC8D>v<EFBFBD>T<EFBFBD>C<EFBFBD>Y<EFBFBD><59><EFBFBD>󂫃<EFBFBD><F382AB83><EFBFBD><EFBFBD><EFBFBD><EFBFBD>[<5B>ʂ̔<CA82><CC94><EFBFBD><EFBFBD>ȉ<EFBFBD><C889>Ȃ<EFBFBD><C882>΁A  扱うファイルの合計サイズが空きメモリー量の半分以下ならば、
<EFBFBD><EFBFBD><EFBFBD><EFBFBD> PAR 2.0 <EFBFBD>N<EFBFBD><EFBFBD><EFBFBD>C<EFBFBD>A<EFBFBD><EFBFBD><EFBFBD>g<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƍ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɏC<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>܂<EFBFBD><EFBFBD>B 他の PAR 2.0 クライアントよりもずっと高速に修復します。
<EFBFBD>}<7D><><EFBFBD>`<60>E<EFBFBD>R<EFBFBD>A CPU <20>ɑΉ<C991><CE89><EFBFBD><EFBFBD>ă}<7D><><EFBFBD>`<60>E<EFBFBD>X<EFBFBD><58><EFBFBD>b<EFBFBD>h<EFBFBD>ōs<C58D>񉉎Z<F189898E><5A> マルチ・コア CPU に対応してマルチ・スレッドで行列演算と
<EFBFBD><EFBFBD><EFBFBD>[<5B>h<EFBFBD>E<EFBFBD>\<5C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̌v<CC8C>Z<EFBFBD><5A><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̂ŁACPU <20>R<EFBFBD>A<EFBFBD><41> 2<>ˆȏ<C88F><E382A0><EFBFBD>ƍX<C68D>ɑ<EFBFBD><C991><EFBFBD><EFBFBD>Ȃ<EFBFBD><C882>܂<EFBFBD><DC82>B リード・ソロモン符号の計算をするので、CPU コアが 2個以上あると更に速くなります。
<EFBFBD>V<EFBFBD><EFBFBD><EFBFBD>O<EFBFBD><EFBFBD><EFBFBD>E<EFBFBD>R<EFBFBD>A<EFBFBD>ł<EFBFBD> QuickPar <EFBFBD><EFBFBD> 2<>{<7B>A シングル・コアでも QuickPar の 2倍、
<EFBFBD>f<EFBFBD><EFBFBD><EFBFBD>A<EFBFBD><EFBFBD><EFBFBD>E<EFBFBD>R<EFBFBD>A<EFBFBD><EFBFBD><EFBFBD><EFBFBD> QuickPar <20><> 3<>{<7B><><EFBFBD><EFBFBD>̑<EFBFBD><CC91>x<EFBFBD><78><EFBFBD>ł܂<C582><DC82>B デュアル・コアだと QuickPar の 3倍ぐらいの速度がでます。
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>A<EFBFBD>󂫃<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>[<5B><><EFBFBD><EFBFBD><EFBFBD>Ȃ<EFBFBD><C882><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>t<EFBFBD>@<40>C<EFBFBD><43><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E582AB><EFBFBD>ƁA ただし、空きメモリーが少なかったりファイルが大きいと、
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ȃ<EFBFBD><EFBFBD>ċɒ[<5B>ɏ<EFBFBD><C98F><EFBFBD><EFBFBD><EFBFBD><EFBFBD>x<EFBFBD><78><EFBFBD><EFBFBD><E189BA><EFBFBD>܂<EFBFBD><DC82>B 効率が悪くなって極端に処理速度が低下します。
<EFBFBD>@<40><><EFBFBD>{<7B><><EFBFBD>̊J<CC8A><4A><EFBFBD>‹<EFBFBD><C28B>ō<EFBFBD><C58D><EFBFBD><EFBFBD>Ă<EFBFBD><C482>̂ŁA  日本語の開発環境で作ってるので、
<EFBFBD><EFBFBD><EFBFBD>{<7B><><EFBFBD>̃t<CC83>@<40>C<EFBFBD><43><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>f<EFBFBD>B<EFBFBD><42><EFBFBD>N<EFBFBD>g<EFBFBD><67><EFBFBD>ɑΉ<C991><CE89><EFBFBD><EFBFBD>Ă܂<C482><DC82>B 日本語のファイル名やディレクトリに対応してます。
4GB <EFBFBD>ȏ<EFBFBD><EFBFBD>̃t<EFBFBD>@<40>C<EFBFBD><43><EFBFBD>ɂ<EFBFBD><C982>Ή<EFBFBD><CE89><EFBFBD><EFBFBD>Ă܂<C482><DC82><EFBFBD><EFBFBD>A 4GB 以上のファイルにも対応してますが、
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>C<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>x<EFBFBD>̓t<EFBFBD>@<40>C<EFBFBD><43><EFBFBD>E<EFBFBD>A<EFBFBD>N<EFBFBD>Z<EFBFBD>X<EFBFBD><58><EFBFBD>x<EFBFBD>ɑ<C991><E582AB><EFBFBD>ˑ<EFBFBD><CB91><EFBFBD><EFBFBD>܂<EFBFBD><DC82>B 検査や修復速度はファイル・アクセス速度に大きく依存します。
<EFBFBD>@<40>J<EFBFBD><4A><EFBFBD>Ҍ<EFBFBD><D28C><EFBFBD><EFBFBD>ɁA  開発者向けに、
<EFBFBD>\<5C>[<5B>X<EFBFBD>E<EFBFBD>R<EFBFBD>[<5B>h<EFBFBD><68><EFBFBD><EFBFBD><EFBFBD>J<EFBFBD><4A><EFBFBD><EFBFBD><EFBFBD>Ă<EFBFBD><C482>̂ŁA<C581>ׂ<EFBFBD><D782><EFBFBD><EFBFBD>d<EFBFBD>l<EFBFBD><6C><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ŕύX<CF8D>ł<EFBFBD><C582>܂<EFBFBD><DC82>B ソース・コードが公開されてるので、細かい仕様を自分で変更できます。
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɕs<EFBFBD><EFBFBD><EFBFBD>ȓ_<EFBFBD><EFBFBD><EFBFBD>o<EFBFBD>O<EFBFBD><EFBFBD><EFBFBD>ۂ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ă<EFBFBD><EFBFBD>A<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ŋm<EFBFBD>F<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƃ<EFBFBD><EFBFBD>ł<EFBFBD><EFBFBD>Ĉ<EFBFBD><EFBFBD>S<EFBFBD>ł<EFBFBD><EFBFBD>B 動作に不明な点やバグっぽい挙動があっても、自分で確認することができて安心です。
<EFBFBD>\<5C>[<5B>X<EFBFBD>E<EFBFBD>t<EFBFBD>@<40>C<EFBFBD><43><EFBFBD><EFBFBD><EFBFBD>t<EFBFBD>@<40>C<EFBFBD><43><EFBFBD>E<EFBFBD><45><EFBFBD>X<EFBFBD>g<EFBFBD>Ŏw<C58E><EFBFBD><EFBFBD>Ƃ<EFBFBD><C682>ł<EFBFBD><C582>܂<EFBFBD><DC82>B ソース・ファイルをファイル・リストで指定することができます。
<EFBFBD>\<5C>[<5B>X<EFBFBD>E<EFBFBD>t<EFBFBD>@<40>C<EFBFBD><43><EFBFBD>ƃ<EFBFBD><C683>J<EFBFBD>o<EFBFBD><6F><EFBFBD>E<EFBFBD>t<EFBFBD>@<40>C<EFBFBD><43><EFBFBD><EFBFBD><EFBFBD>قȂ<D982><C882><EFBFBD>ɂ<EFBFBD><C982><EFBFBD><EFBFBD>Ă<EFBFBD><C482><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ł<EFBFBD><C582>܂<EFBFBD><DC82>B ソース・ファイルとリカバリ・ファイルが異なる場所にあっても処理できます。
<EFBFBD>@<40><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƃ<EFBFBD><C682>ẮA  制限事項としては、
<EFBFBD>u<EFBFBD><EFBFBD><EFBFBD>b<EFBFBD>N<EFBFBD>E<EFBFBD>T<EFBFBD>C<EFBFBD>Y<EFBFBD><EFBFBD> 2 GB <20><><EFBFBD><EFBFBD><EFBFBD>ɂ<EFBFBD><C982><EFBFBD><EFBFBD>Ή<EFBFBD><CE89><EFBFBD><EFBFBD>Ă܂<C482><DC82><EFBFBD><EFBFBD>B ブロック・サイズは 2 GB 未満にしか対応してません。
<EFBFBD>p<EFBFBD><EFBFBD><EFBFBD>e<EFBFBD>B<EFBFBD>v<EFBFBD>Z<EFBFBD>Ɋ܂߂Ȃ<EFBFBD><EFBFBD>t<EFBFBD>@<40>C<EFBFBD><43> (<28>m<EFBFBD><6D><EFBFBD>E<EFBFBD><45><EFBFBD>J<EFBFBD>o<EFBFBD><6F><EFBFBD>E<EFBFBD>Z<EFBFBD>b<EFBFBD>g) <20>̎w<CC8E><77><EFBFBD>͂ł<CD82><C582>܂<EFBFBD><DC82><EFBFBD><EFBFBD>B パリティ計算に含めないファイル (ノン・リカバリ・セット) の指定はできません。
<EFBFBD>\<5C>[<5B>X<EFBFBD>E<EFBFBD>u<EFBFBD><75><EFBFBD>b<EFBFBD>N<EFBFBD>͍ő<CD8D><C591><EFBFBD> 32768<36>‚܂łł<C582><C582>B(<28>t<EFBFBD>@<40>C<EFBFBD><43><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 65536<EFBFBD>‚܂<EFBFBD>) ソース・ブロックは最大で 32768個までです。(ファイル数は 65536個まで)
<EFBFBD><EFBFBD>ł<EFBFBD><EFBFBD><EFBFBD><EFBFBD>p<EFBFBD><EFBFBD><EFBFBD>e<EFBFBD>B<EFBFBD>E<EFBFBD>u<EFBFBD><EFBFBD><EFBFBD>b<EFBFBD>N<EFBFBD>͍ő<EFBFBD><EFBFBD><EFBFBD> 65535<33>‚܂łł<C582><C582>B 作成できるパリティ・ブロックは最大で 65535個までです。
<EFBFBD>@<40><><EFBFBD>ӓ_<D393>̓<EFBFBD><CD83><EFBFBD><EFBFBD><EFBFBD><EFBFBD>[<5B><><EFBFBD><EFBFBD><EFBFBD>ʂ<EFBFBD><CA82>c<EFBFBD><63><EFBFBD>Ȃ<EFBFBD><C882>Ƃł<C682><C582>B  注意点はメモリー消費量が膨大なことです。
<EFBFBD><EFBFBD><EFBFBD>J<EFBFBD>o<EFBFBD><EFBFBD><EFBFBD>E<EFBFBD>t<EFBFBD>@<40>C<EFBFBD><43><EFBFBD>ŏC<C58F><43><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ۂɂ́A<CD81><41><EFBFBD>[<5B>h<EFBFBD>E<EFBFBD>\<5C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̍s<CC8D><73><EFBFBD><EFBFBD><EFBFBD>ϊ<EFBFBD><CF8A><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ׂ<EFBFBD> リカバリ・ファイルで修復する際には、リード・ソロモン符号の行列を変換する為に
<EFBFBD>u <20>\<5C>[<5B>X<EFBFBD>E<EFBFBD>u<EFBFBD><75><EFBFBD>b<EFBFBD>N<EFBFBD><4E> * <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>\<5C>[<5B>X<EFBFBD>E<EFBFBD>u<EFBFBD><75><EFBFBD>b<EFBFBD>N<EFBFBD><4E> * 2 <20>v<EFBFBD>̃<EFBFBD><CC83><EFBFBD><EFBFBD><EFBFBD><EFBFBD>[<5B><><EFBFBD>K<EFBFBD>v<EFBFBD>Ƃ<EFBFBD><C682>܂<EFBFBD><DC82>B 「 ソース・ブロック数 * 失われたソース・ブロック数 * 2 」のメモリーを必要とします。
<EFBFBD><EFBFBD>΁A<EFBFBD>u<EFBFBD><EFBFBD><EFBFBD>b<EFBFBD>N<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ő<EFBFBD><EFBFBD><EFBFBD> 32768 <20>ɂ<EFBFBD><C982><EFBFBD><EFBFBD>ƁA25% <20>̃u<CC83><75><EFBFBD>b<EFBFBD>N<EFBFBD>𕜌<EFBFBD><F0959C8C><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɂ<EFBFBD> 例えば、ブロック数を最大の 32768 にすると、25% のブロックを復元するには
32768 * 8192 * 2 = 500MB <EFBFBD>ȏ<EFBFBD><EFBFBD>̃<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>[<5B><><EFBFBD>K<EFBFBD>v<EFBFBD>Ƃ<EFBFBD><C682>܂<EFBFBD><DC82>B 32768 * 8192 * 2 = 500MB 以上のメモリーを必要とします。
<EFBFBD><EFBFBD><EFBFBD>ʂ͏<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƃ͖<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>A<EFBFBD>S<EFBFBD>u<EFBFBD><EFBFBD><EFBFBD>b<EFBFBD>N<EFBFBD><EFBFBD><EFBFBD>j<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƃ<EFBFBD><EFBFBD>܂<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̂ŁA 普通は冗長性を大きくすることは無いし、全ブロックが破損することもまず無いので、
<EFBFBD><EFBFBD><EFBFBD>ۂɎg<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>[<5B>͂<EFBFBD><CD82><EFBFBD><EFBFBD>Ə<EFBFBD><C68F>Ȃ<EFBFBD><C882>ł<EFBFBD><C582><EFBFBD><EFBFBD>A<EFBFBD><41><EFBFBD><EFBFBD><EFBFBD>Ȃ<EFBFBD><C882><EFBFBD><EFBFBD>΃G<CE83><47><EFBFBD>[<5B>ɂȂ<C982><C882>܂<EFBFBD><DC82>B 実際に使われるメモリーはもっと少ないですが、足りなければエラーになります。
<EFBFBD>@<40>t<EFBFBD>@<40>C<EFBFBD><43><EFBFBD>E<EFBFBD>A<EFBFBD>N<EFBFBD>Z<EFBFBD>X<EFBFBD>p<EFBFBD>o<EFBFBD>b<EFBFBD>t<EFBFBD>@<40>[<5B>́u (<28>\<5C>[<5B>X<EFBFBD>E<EFBFBD>u<EFBFBD><75><EFBFBD>b<EFBFBD>N<EFBFBD><4E> + 2) * <20>u<EFBFBD><75><EFBFBD>b<EFBFBD>N<EFBFBD>E<EFBFBD>T<EFBFBD>C<EFBFBD>Y <20>v  ファイル・アクセス用バッファーは「 (ソース・ブロック数 + 2) * ブロック・サイズ 」
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>{<7B>̑傫<CC91><E582AB><EFBFBD>ɂȂ<C982><C882>A<EFBFBD><41><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>[<5B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ȃ<EFBFBD><C882><EFBFBD>̓u<CD83><75><EFBFBD>b<EFBFBD>N<EFBFBD><4E><EFBFBD>f<EFBFBD>Љ<EFBFBD><D089><EFBFBD><EFBFBD>ď<EFBFBD><C48F><EFBFBD><EFBFBD><EFBFBD><EFBFBD>܂<EFBFBD><DC82>B が基本の大きさになり、メモリーが足りない場合はブロックを断片化して処理します。
<EFBFBD>f<EFBFBD>ЃT<EFBFBD>C<EFBFBD>Y<EFBFBD>́u 1KB<4B>`<60>u<EFBFBD><75><EFBFBD>b<EFBFBD>N<EFBFBD>E<EFBFBD>T<EFBFBD>C<EFBFBD>Y<EFBFBD>̔<EFBFBD><CC94><EFBFBD> <20>v<EFBFBD>ł<EFBFBD><C582>B 断片サイズは「 1KBブロック・サイズの半分 」です。
<EFBFBD>s<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>i<EFBFBD>[<5B><><EFBFBD><EFBFBD><EFBFBD>ׂ̃<D782><CC83><EFBFBD><EFBFBD><EFBFBD><EFBFBD>[<5B><><EFBFBD>D<EFBFBD><EFBFBD>āA<C481>󂫃<EFBFBD><F382AB83><EFBFBD><EFBFBD><EFBFBD><EFBFBD>[<5B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ȃ<EFBFBD><C882><EFBFBD>ɂ́A 行列を格納する為のメモリーを優先して、空きメモリーが足りない場合には、
<EFBFBD>t<EFBFBD>@<40>C<EFBFBD><43><EFBFBD>E<EFBFBD>A<EFBFBD>N<EFBFBD>Z<EFBFBD>X<EFBFBD>p<EFBFBD>o<EFBFBD>b<EFBFBD>t<EFBFBD>@<40>[<5B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>܂<EFBFBD><DC82><EFBFBD><EFBFBD>A<EFBFBD><41><EFBFBD><EFBFBD><EFBFBD>ł<EFBFBD><C582><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ȃ<EFBFBD><C882><EFBFBD><EFBFBD>΃G<CE83><47><EFBFBD>[<5B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>܂<EFBFBD><DC82>B ファイル・アクセス用バッファーを減らしますが、それでも足りなければエラーが発生します。
<EFBFBD>܂<EFBFBD><EFBFBD>A<EFBFBD>u<EFBFBD><EFBFBD><EFBFBD>b<EFBFBD>N<EFBFBD>̒f<EFBFBD>Љ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƌɒ[<5B>ɏ<EFBFBD><C98F><EFBFBD><EFBFBD><EFBFBD><EFBFBD>x<EFBFBD><78><EFBFBD><EFBFBD><E189BA><EFBFBD>܂<EFBFBD><DC82>B また、ブロックの断片化が激しいと極端に処理速度が低下します。
<EFBFBD>@<40><><EFBFBD>J<EFBFBD>o<EFBFBD><6F><EFBFBD>E<EFBFBD>t<EFBFBD>@<40>C<EFBFBD><43><EFBFBD><EFBFBD><EFBFBD>\<5C>[<5B>X<EFBFBD>E<EFBFBD>t<EFBFBD>@<40>C<EFBFBD><43><EFBFBD>̌<EFBFBD><CC8C><EFBFBD><EFBFBD>ł́A  リカバリ・ファイルやソース・ファイルの検査では、
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>[<5B><><EFBFBD>\<5C><><EFBFBD>ɂ<EFBFBD><C982><EFBFBD><EFBFBD>Ă<EFBFBD> CPU <20><><EFBFBD>\<5C><><EFBFBD>t<EFBFBD>@<40>C<EFBFBD><43><EFBFBD>E<EFBFBD>A<EFBFBD>N<EFBFBD>Z<EFBFBD>X<EFBFBD><58><EFBFBD>x<EFBFBD>Ȃǂɂ<C782><C982><EFBFBD><EFBFBD>ẮA メモリーが十分にあっても CPU 性能やファイル・アクセス速度などによっては、
<EFBFBD><EFBFBD>ȃt<EFBFBD>@<40>C<EFBFBD><43><EFBFBD>̌<EFBFBD><CC8C><EFBFBD><EFBFBD>ɉ<EFBFBD><C989><EFBFBD><EFBFBD><EFBFBD><EFBFBD>҂‚<D282><C282>ƂɂȂ邩<C882><E982A9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>܂<EFBFBD><DC82><EFBFBD><EFBFBD>B 大きなファイルの検査に何分も待つことになるかもしれません。
<EFBFBD>W<EFBFBD><EFBFBD><EFBFBD>ł̓<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>[<5B>ʂ<EFBFBD><CA82>\<5C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ΏڍׂȌ<D782><C88C><EFBFBD><EFBFBD><EFBFBD><EFBFBD>s<EFBFBD><73><EFBFBD>A<EFBFBD><41><EFBFBD><EFBFBD><EFBFBD>Ȃ<EFBFBD><C882><EFBFBD><EFBFBD>ΊȈՌ<C888><D58C><EFBFBD><EFBFBD>ɂȂ<C982><C882>܂<EFBFBD><DC82>B 標準ではメモリー量が十分あれば詳細な検査を行い、足りなければ簡易検査になります。
<EFBFBD>j<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ă邩<EFBFBD>ǂ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>̊m<EFBFBD>F<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̏ꍇ<EFBFBD><EFBFBD><EFBFBD>A<EFBFBD>j<EFBFBD><EFBFBD><EFBFBD>̒<EFBFBD><EFBFBD>x<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>́A 破損してるかどうかの確認をしたいだけの場合や、破損の程度が小さい場合は、
<EFBFBD>ȈՌ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ł<EFBFBD><EFBFBD>\<5C><><EFBFBD>Ȃ̂ŁA<C581>I<EFBFBD>v<EFBFBD>V<EFBFBD><56><EFBFBD><EFBFBD><EFBFBD>ŏڍ׌<DA8D><D78C><EFBFBD><EFBFBD>𖳌<EFBFBD><F096B38C>ɂ<EFBFBD><C982><EFBFBD>Ƃ<EFBFBD><C682>ł<EFBFBD><C582>܂<EFBFBD><DC82>B 簡易検査でも十分なので、オプションで詳細検査を無効にすることもできます。
<EFBFBD>@<40><><EFBFBD><EFBFBD><EFBFBD>‹<EFBFBD><C28B><EFBFBD> Windows Vista <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȍ~ (Windows 7, 8, 10, 11) <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>p<EFBFBD>\<5C>R<EFBFBD><52><EFBFBD>ł<EFBFBD><C582>B  動作環境は Windows 7 かそれ以降 (Windows 8, 10, 11) が動くパソコンです。
Win32 API <EFBFBD><EFBFBD> VC <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>^<5E>C<EFBFBD><43><EFBFBD><EFBFBD><EFBFBD>g<EFBFBD><67><EFBFBD>Ă<EFBFBD><C482>̂ŁA Win32 API VC ランタイムを使ってるので、
<EFBFBD>\<5C>[<5B>X<EFBFBD>E<EFBFBD>R<EFBFBD>[<5B>h<EFBFBD><68><EFBFBD>R<EFBFBD><52><EFBFBD>p<EFBFBD>C<EFBFBD><43><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɂ<EFBFBD> Visual Studio 2022 <EFBFBD>ȍ~<7E><><EFBFBD>K<EFBFBD>v<EFBFBD>ł<EFBFBD><C582>B ソース・コードをコンパイルするには Visual Studio 2022 以降が必要です。
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
[ <EFBFBD>Q<EFBFBD>l<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>p<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>\<5C>[<5B>X<EFBFBD>E<EFBFBD>R<EFBFBD>[<5B>h<EFBFBD>A<EFBFBD><41><EFBFBD>C<EFBFBD>u<EFBFBD><75><EFBFBD><EFBFBD><EFBFBD>[<5B>Ȃ<EFBFBD> ] [ 参考文献や利用したソース・コード、ライブラリーなど ]
par2-specifications.pdf par2-specifications.pdf
Parity Volume Set Specification 2.0 Parity Volume Set Specification 2.0
@@ -220,31 +220,31 @@ This module is Public Domain.
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
[ <EFBFBD><EFBFBD><EFBFBD>C<EFBFBD>Z<EFBFBD><EFBFBD><EFBFBD>X<EFBFBD>Ȃ<EFBFBD> ] [ ライセンスなど ]
<EFBFBD>@PAR 2.0 <EFBFBD>̃t<EFBFBD>H<EFBFBD>[<5B>}<7D>b<EFBFBD>g<EFBFBD>ɂ‚<C982><C282>Ă͐<C482><CD90><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>R<EFBFBD>[<5B>h<EFBFBD><68><EFBFBD><EFBFBD><EFBFBD>āA  PAR 2.0 のフォーマットについては説明書や実装コードを見て、
<EFBFBD>݊<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ێ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ĂȂ<EFBFBD><EFBFBD>ׂ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɂȂ<EFBFBD><EFBFBD><EFBFBD>ɂ<EFBFBD><EFBFBD>Ă܂<EFBFBD><EFBFBD>B 互換性を維持してなるべく同じになるようにしてます。
<EFBFBD><EFBFBD><EFBFBD>̐l<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>R<EFBFBD>[<5B>h<EFBFBD>𗬗p<F097AC97><70><EFBFBD>Ă镔<C482><E99594><EFBFBD>̒<EFBFBD><CC92><EFBFBD>͂<EFBFBD><CD82>̐l<CC90>ɂ<EFBFBD><C982><EFBFBD><EFBFBD>܂<EFBFBD><DC82>B 他の人が書いたコードを流用してる部分の著作権はその人にあります。
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȊO<EFBFBD>̕<EFBFBD><EFBFBD><EFBFBD><EFBFBD>̒<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>V<EFBFBD>c <20>L <20>ɂ<EFBFBD><C982><EFBFBD><EFBFBD>܂<EFBFBD><DC82>B それ以外の部分の著作権は 澤田 豊 にあります。
<EFBFBD>@<40><><EFBFBD>C<EFBFBD>Z<EFBFBD><5A><EFBFBD>X<EFBFBD><58> GPL <20>Ƃ<EFBFBD><C682><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̂ɏ<CC82><C98F><EFBFBD><EFBFBD><EFBFBD><EFBFBD>܂<EFBFBD><DC82>B  ライセンスは GPL というものに準拠します。
par2cmdline <EFBFBD><EFBFBD> phpar2 <EFBFBD>̃R<EFBFBD>[<5B>h<EFBFBD>𗬗p<F097AC97><70><EFBFBD>Ă<EFBFBD><C482>āA<C481><41><EFBFBD><EFBFBD><EFBFBD>炪 GPL <20>Ŕz<C594>z<EFBFBD><7A><EFBFBD><EFBFBD><EFBFBD>Ă邩<C482><E982A9><EFBFBD>ł<EFBFBD><C582>B par2cmdline phpar2 のコードを流用していて、それらが GPL で配布されてるからです。
GPL <EFBFBD>̃<EFBFBD><EFBFBD>C<EFBFBD>Z<EFBFBD><EFBFBD><EFBFBD>X<EFBFBD>̏ڍׂ͂悭<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ȃ<EFBFBD><EFBFBD>̂ł<EFBFBD><EFBFBD><EFBFBD><EFBFBD>A GPL のライセンスの詳細はよくわからないのですが、
<EFBFBD><EFBFBD><EFBFBD>p<EFBFBD><EFBFBD><EFBFBD>𕥂<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƂȂ<EFBFBD><EFBFBD>g<EFBFBD><EFBFBD><EFBFBD>ă\<5C>[<5B>X<EFBFBD>E<EFBFBD>R<EFBFBD>[<5B>h<EFBFBD><68><EFBFBD><EFBFBD><EFBFBD>J<EFBFBD><4A><EFBFBD><EFBFBD>Ƃ<EFBFBD><C682><EFBFBD><EFBFBD><EFBFBD><EFBFBD>݂<EFBFBD><DD82><EFBFBD><EFBFBD>ł<EFBFBD><C582>B 利用料を払うことなく使えてソース・コードを公開することが条件みたいです。
<EFBFBD>ڂ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƃ͕t<EFBFBD><EFBFBD><EFBFBD>̉p<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>C<EFBFBD>Z<EFBFBD><EFBFBD><EFBFBD>X<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǂނ<EFBFBD><EFBFBD>A 詳しいことは付属の英文ライセンス文を読むか、
<EFBFBD><EFBFBD><EFBFBD>{<7B><><EFBFBD>̉<EFBFBD><CC89><EFBFBD><EFBFBD>ł<EFBFBD><C582>T<EFBFBD><54><EFBFBD>ēǂ<C493><C782>ł݂Ă<DD82><C482><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>B 日本語の解説でも探して読んでみてください。
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
[ <EFBFBD>A<EFBFBD><EFBFBD><EFBFBD><EFBFBD> ] [ 連絡先 ]
<EFBFBD>@<40><><EFBFBD>͂<EFBFBD><CD82>܂<EFBFBD> (<28>T<EFBFBD><EFBFBD>炢) <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>[<5B><><EFBFBD>m<EFBFBD>F<EFBFBD>ł<EFBFBD><C582>܂<EFBFBD><DC82>񂵁A  私はたまに (週一ぐらい) しかメール確認できませんし、
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (<28><EFBFBD><EA8396><EFBFBD><EFBFBD><EFBFBD>炢) <20>C<EFBFBD><43><EFBFBD>^<5E>[<5B>l<EFBFBD>b<EFBFBD>g<EFBFBD><67><EFBFBD>g<EFBFBD><67><EFBFBD>Ȃ<EFBFBD><C882><EFBFBD><EFBFBD>Ƃ<EFBFBD><C682><EFBFBD><EFBFBD><EFBFBD><EFBFBD>܂<EFBFBD><DC82>B 長期間 (一ヶ月ぐらい) インターネットを使えないこともあります。
<EFBFBD><EFBFBD><EFBFBD>{<7B>I<EFBFBD>ɃT<C983>|<7C>[<5B>g<EFBFBD>̓<EFBFBD><CD83>[<5B><><EFBFBD>ōs<C58D><73><EFBFBD><EFBFBD><EFBFBD>ƂɂȂ<C982><C882>܂<EFBFBD><DC82><EFBFBD><EFBFBD>A 基本的にサポートはメールで行うことになりますが、
<EFBFBD>Ԏ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>–߂<EFBFBD><EFBFBD>Ă<EFBFBD><EFBFBD><EFBFBD>͋C<EFBFBD><EFBFBD><EFBFBD>ɂ<EFBFBD><EFBFBD>҂<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>B 返事がいつ戻ってくるかは気長にお待ちください。
<EFBFBD><EFBFBD><EFBFBD>O<EFBFBD><EFBFBD> <20>V<EFBFBD>c <20>L <20>ł<EFBFBD><C582>B 名前は 澤田 豊 です。
<EFBFBD><EFBFBD><EFBFBD>[<5B><><EFBFBD>E<EFBFBD>A<EFBFBD>h<EFBFBD><68><EFBFBD>X<EFBFBD><58> tenfon (at mark) outlook.jp <EFBFBD>ł<EFBFBD> メール・アドレスは tenfon (at mark) outlook.jp です
<EFBFBD><EFBFBD><EFBFBD>f<EFBFBD><EFBFBD><EFBFBD>[<5B><><EFBFBD><EFBFBD><EFBFBD>ۂ̕\<5C>L<EFBFBD>Ȃ̂ŁA<C581><41><EFBFBD>ۂ̃<DB82><CC83>[<5B><><EFBFBD>ł<EFBFBD> (at mark) <EFBFBD><EFBFBD> @ <EFBFBD>Ɋ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ă<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>B 迷惑メール拒否の表記なので、実際のメールでは (at mark) @ に換えてください。

View File

@@ -1,5 +1,5 @@
// com.c // com.c
// Copyright : 2022-01-30 Yutaka Sawada // Copyright : 2024-11-30 Yutaka Sawada
// License : GPL // License : GPL
#ifndef _UNICODE #ifndef _UNICODE
@@ -9,7 +9,7 @@
#define UNICODE #define UNICODE
#endif #endif
#ifndef _WIN32_WINNT #ifndef _WIN32_WINNT
#define _WIN32_WINNT 0x0600 // Windows Vista or later #define _WIN32_WINNT 0x0601 // Windows 7 or later
#endif #endif
#include <windows.h> #include <windows.h>

View File

@@ -1,5 +1,5 @@
// common2.c // common2.c
// Copyright : 2023-10-13 Yutaka Sawada // Copyright : 2024-11-30 Yutaka Sawada
// License : GPL // License : GPL
#ifndef _UNICODE #ifndef _UNICODE
@@ -9,7 +9,7 @@
#define UNICODE #define UNICODE
#endif #endif
#ifndef _WIN32_WINNT #ifndef _WIN32_WINNT
#define _WIN32_WINNT 0x0600 // Windows Vista or later #define _WIN32_WINNT 0x0601 // Windows 7 or later
#endif #endif
#include <conio.h> #include <conio.h>
@@ -2008,8 +2008,11 @@ void check_cpu(void)
if (cache3_size > 0){ if (cache3_size > 0){
//printf("L3 cache: %d KB (%d way)\n", cache3_size >> 10 , cache3_way); //printf("L3 cache: %d KB (%d way)\n", cache3_size >> 10 , cache3_way);
cpu_cache = cache3_size / cache3_way; // set-associative のサイズにする cpu_cache = cache3_size / cache3_way; // set-associative のサイズにする
if (cpu_cache < 131072) if (cpu_cache < 131072){
cpu_cache = 128 << 10; // 128 KB 以上にする cpu_cache = 128 << 10; // 128 KB 以上にする
} else {
cpu_cache = (cpu_cache + 0xFFFF) & 0xFFFF0000; // 64 KB の倍数にする
}
} }
if (cache2_size > 0){ if (cache2_size > 0){
//printf("L2 cache: %d KB (%d way)\n", cache2_size >> 10, cache2_way); //printf("L2 cache: %d KB (%d way)\n", cache2_size >> 10, cache2_way);
@@ -2030,7 +2033,9 @@ void check_cpu(void)
returnLength += returnLength / 2; returnLength += returnLength / 2;
} }
} }
cpu_cache |= returnLength & 0x1FFFF; if (returnLength > 0x8000)
returnLength = 0x8000;
cpu_cache |= returnLength & 0xFFFF;
} }
} }
@@ -2038,7 +2043,7 @@ void check_cpu(void)
limit_size = 128 << 10; limit_size = 128 << 10;
//printf("Limit size of Cache Blocking: %d KB\n", limit_size >> 10); //printf("Limit size of Cache Blocking: %d KB\n", limit_size >> 10);
// cpu_flag の上位 16-bit にキャッシュの制限サイズを置く // cpu_flag の上位 16-bit にキャッシュの制限サイズを置く
cpu_flag |= limit_size & 0xFFFF0000; // 64 KB 未満は無視する cpu_flag |= (limit_size + 0xFFFF) & 0xFFFF0000; // 64 KB の倍数にする
if (core_count == 0){ // 物理コア数が不明なら、論理コア数と同じにする if (core_count == 0){ // 物理コア数が不明なら、論理コア数と同じにする
core_count = cpu_num; core_count = cpu_num;

View File

@@ -1,9 +1,9 @@
// crc.c // crc.c
// Copyright : 2022-02-09 Yutaka Sawada // Copyright : 2024-11-30 Yutaka Sawada
// License : GPL // License : GPL
#ifndef _WIN32_WINNT #ifndef _WIN32_WINNT
#define _WIN32_WINNT 0x0600 // Windows Vista or later #define _WIN32_WINNT 0x0601 // Windows 7 or later
#endif #endif
#include <stdio.h> #include <stdio.h>

View File

@@ -1,5 +1,5 @@
// create.c // create.c
// Copyright : 2024-02-09 Yutaka Sawada // Copyright : 2024-11-30 Yutaka Sawada
// License : GPL // License : GPL
#ifndef _UNICODE #ifndef _UNICODE
@@ -9,7 +9,7 @@
#define UNICODE #define UNICODE
#endif #endif
#ifndef _WIN32_WINNT #ifndef _WIN32_WINNT
#define _WIN32_WINNT 0x0600 // Windows Vista or later #define _WIN32_WINNT 0x0601 // Windows 7 or later
#endif #endif
#include <process.h> #include <process.h>

View File

@@ -49,7 +49,7 @@ POSSIBILITY OF SUCH DAMAGE.
*/ */
#define _WIN32_WINNT 0x0600 // Windows Vista or later #define _WIN32_WINNT 0x0601 // Windows 7 or later
#include <stdlib.h> #include <stdlib.h>
#include <stdio.h> #include <stdio.h>

View File

@@ -1,5 +1,5 @@
// ini.c // ini.c
// Copyright : 2022-10-12 Yutaka Sawada // Copyright : 2024-11-30 Yutaka Sawada
// License : GPL // License : GPL
#ifndef _UNICODE #ifndef _UNICODE
@@ -9,7 +9,7 @@
#define UNICODE #define UNICODE
#endif #endif
#ifndef _WIN32_WINNT #ifndef _WIN32_WINNT
#define _WIN32_WINNT 0x0600 // Windows Vista or later #define _WIN32_WINNT 0x0601 // Windows 7 or later
#endif #endif
#include <malloc.h> #include <malloc.h>

View File

@@ -1,5 +1,5 @@
// json.c // json.c
// Copyright : 2023-02-06 Yutaka Sawada // Copyright : 2024-11-30 Yutaka Sawada
// License : GPL // License : GPL
#ifndef _UNICODE #ifndef _UNICODE
@@ -9,7 +9,7 @@
#define UNICODE #define UNICODE
#endif #endif
#ifndef _WIN32_WINNT #ifndef _WIN32_WINNT
#define _WIN32_WINNT 0x0600 // Windows Vista or later #define _WIN32_WINNT 0x0601 // Windows 7 or later
#endif #endif
#include <stdio.h> #include <stdio.h>

View File

@@ -1,9 +1,9 @@
// lib_opencl.c // lib_opencl.c
// Copyright : 2024-01-21 Yutaka Sawada // Copyright : 2024-11-30 Yutaka Sawada
// License : GPL // License : GPL
#ifndef _WIN32_WINNT #ifndef _WIN32_WINNT
#define _WIN32_WINNT 0x0600 // Windows Vista or later #define _WIN32_WINNT 0x0601 // Windows 7 or later
#endif #endif
#include <stdio.h> #include <stdio.h>
@@ -706,7 +706,9 @@ int init_OpenCL(unsigned int unit_size, int *src_max)
} }
if (OpenCL_group_num > data_size){ if (OpenCL_group_num > data_size){
OpenCL_group_num = data_size; OpenCL_group_num = data_size;
#ifdef DEBUG_OUTPUT
printf("Number of work groups is reduced to %zd\n", OpenCL_group_num); printf("Number of work groups is reduced to %zd\n", OpenCL_group_num);
#endif
} }
// データへのアクセス方法をデバイスによって変える // データへのアクセス方法をデバイスによって変える

View File

@@ -1,5 +1,5 @@
// list.c // list.c
// Copyright : 2023-12-12 Yutaka Sawada // Copyright : 2024-11-30 Yutaka Sawada
// License : GPL // License : GPL
#ifndef _UNICODE #ifndef _UNICODE
@@ -9,7 +9,7 @@
#define UNICODE #define UNICODE
#endif #endif
#ifndef _WIN32_WINNT #ifndef _WIN32_WINNT
#define _WIN32_WINNT 0x0600 // Windows Vista or later #define _WIN32_WINNT 0x0601 // Windows 7 or later
#endif #endif
#include <process.h> #include <process.h>

View File

@@ -1,5 +1,5 @@
// md5_crc.c // md5_crc.c
// Copyright : 2023-12-12 Yutaka Sawada // Copyright : 2024-11-30 Yutaka Sawada
// License : GPL // License : GPL
#ifndef _UNICODE #ifndef _UNICODE
@@ -9,7 +9,7 @@
#define UNICODE #define UNICODE
#endif #endif
#ifndef _WIN32_WINNT #ifndef _WIN32_WINNT
#define _WIN32_WINNT 0x0600 // Windows Vista or later #define _WIN32_WINNT 0x0601 // Windows 7 or later
#endif #endif
#include <stdio.h> #include <stdio.h>
@@ -677,7 +677,7 @@ time1_start = clock();
// バッファー・サイズが大きいのでヒープ領域を使う // バッファー・サイズが大きいのでヒープ領域を使う
for (io_size = IO_SIZE; io_size <= MAX_BUF_SIZE; io_size += IO_SIZE){ // IO_SIZE の倍数にする for (io_size = IO_SIZE; io_size <= MAX_BUF_SIZE; io_size += IO_SIZE){ // IO_SIZE の倍数にする
if ((io_size + IO_SIZE > (cpu_cache & 0xFFFE0000)) || ((__int64)(io_size + IO_SIZE) * 4 > file_left)) if ((io_size + IO_SIZE > (cpu_cache & 0xFFFF0000)) || ((__int64)(io_size + IO_SIZE) * 4 > file_left))
break; break;
} }
buf1 = _aligned_malloc(io_size * 2, 64); buf1 = _aligned_malloc(io_size * 2, 64);
@@ -873,7 +873,7 @@ DWORD WINAPI file_hash_crc2(LPVOID lpParameter)
// バッファー・サイズが大きいのでヒープ領域を使う // バッファー・サイズが大きいのでヒープ領域を使う
prog_tick = 1; prog_tick = 1;
for (io_size = IO_SIZE; io_size <= MAX_BUF_SIZE; io_size += IO_SIZE){ // IO_SIZE の倍数にする for (io_size = IO_SIZE; io_size <= MAX_BUF_SIZE; io_size += IO_SIZE){ // IO_SIZE の倍数にする
if ((io_size + IO_SIZE > (cpu_cache & 0xFFFE0000)) || ((__int64)(io_size + IO_SIZE) * 4 > file_left)) if ((io_size + IO_SIZE > (cpu_cache & 0xFFFF0000)) || ((__int64)(io_size + IO_SIZE) * 4 > file_left))
break; break;
prog_tick++; prog_tick++;
} }
@@ -1311,7 +1311,7 @@ DWORD WINAPI file_hash_background(LPVOID lpParameter)
// バッファー・サイズが大きいのでヒープ領域を使う // バッファー・サイズが大きいのでヒープ領域を使う
for (io_size = IO_SIZE; io_size <= MAX_BUF_SIZE; io_size += IO_SIZE){ // IO_SIZE の倍数にする for (io_size = IO_SIZE; io_size <= MAX_BUF_SIZE; io_size += IO_SIZE){ // IO_SIZE の倍数にする
if ((io_size + IO_SIZE > (cpu_cache & 0xFFFE0000)) || ((__int64)(io_size + IO_SIZE) * 4 > file_size)) if ((io_size + IO_SIZE > (cpu_cache & 0xFFFF0000)) || ((__int64)(io_size + IO_SIZE) * 4 > file_size))
break; break;
} }
//printf("\n io_size = %d\n", io_size); //printf("\n io_size = %d\n", io_size);

View File

@@ -1,5 +1,5 @@
// par2.c // par2.c
// Copyright : 2023-10-15 Yutaka Sawada // Copyright : 2024-11-30 Yutaka Sawada
// License : GPL // License : GPL
#ifndef _UNICODE #ifndef _UNICODE
@@ -9,7 +9,7 @@
#define UNICODE #define UNICODE
#endif #endif
#ifndef _WIN32_WINNT #ifndef _WIN32_WINNT
#define _WIN32_WINNT 0x0600 // Windows Vista or later #define _WIN32_WINNT 0x0601 // Windows 7 or later
#endif #endif
#include <malloc.h> #include <malloc.h>

View File

@@ -1,5 +1,5 @@
// par2_cmd.c // par2_cmd.c
// Copyright : 2023-12-09 Yutaka Sawada // Copyright : 2025-03-12 Yutaka Sawada
// License : GPL // License : GPL
#ifndef _UNICODE #ifndef _UNICODE
@@ -9,7 +9,7 @@
#define UNICODE #define UNICODE
#endif #endif
#ifndef _WIN32_WINNT #ifndef _WIN32_WINNT
#define _WIN32_WINNT 0x0600 // Windows Vista or later #define _WIN32_WINNT 0x0601 // Windows 7 or later
#endif #endif
#include <stdio.h> #include <stdio.h>
@@ -86,7 +86,7 @@ static void print_environment(void)
printf("CPU thread\t: %d / %d\n", cpu_num & 0xFFFF, cpu_num >> 24); printf("CPU thread\t: %d / %d\n", cpu_num & 0xFFFF, cpu_num >> 24);
cpu_num &= 0xFFFF; // 利用するコア数だけにしておく cpu_num &= 0xFFFF; // 利用するコア数だけにしておく
printf("CPU cache limit : %d KB, %d KB\n", (cpu_flag & 0xFFFF0000) >> 10, (cpu_cache & 0xFFFE0000) >> 10); printf("CPU cache limit : %d KB, %d KB (%d)\n", (cpu_flag & 0xFFFF0000) >> 10, (cpu_cache & 0xFFFF0000) >> 10, cpu_cache & 0xFFFF);
#ifndef _WIN64 // 32-bit 版は MMX, SSE2, SSSE3, AVX2 のどれかを表示する #ifndef _WIN64 // 32-bit 版は MMX, SSE2, SSSE3, AVX2 のどれかを表示する
printf("CPU extra\t:"); printf("CPU extra\t:");
if (((cpu_flag & 16) != 0) && ((cpu_flag & 256) == 0)){ if (((cpu_flag & 16) != 0) && ((cpu_flag & 256) == 0)){
@@ -1448,14 +1448,12 @@ ri= switch_set & 0x00040000
} else if (wcsncmp(tmp_p, L"lr", 2) == 0){ } else if (wcsncmp(tmp_p, L"lr", 2) == 0){
recovery_limit = 0; recovery_limit = 0;
j = 2; j = 2;
while ((j < 2 + 6) && (tmp_p[j] >= '0') && (tmp_p[j] <= '9')){ while ((j < 2 + 10) && (tmp_p[j] >= '0') && (tmp_p[j] <= '9')){
recovery_limit = (recovery_limit * 10) + (tmp_p[j] - '0'); recovery_limit = (recovery_limit * 10) + (tmp_p[j] - '0');
j++; j++;
} }
if (recovery_limit <= 0) // -lr0 ならソース・ファイルの最大ブロック数と同じにする if (recovery_limit <= 0) // -lr0 ならソース・ファイルの最大ブロック数と同じにする
recovery_limit = -1; recovery_limit = -1;
if (recovery_limit > MAX_PARITY_NUM)
recovery_limit = MAX_PARITY_NUM;
} else if (wcsncmp(tmp_p, L"ls", 2) == 0){ } else if (wcsncmp(tmp_p, L"ls", 2) == 0){
__int64 num8 = 0; __int64 num8 = 0;
j = 2; j = 2;
@@ -1477,48 +1475,77 @@ ri= switch_set & 0x00040000
switch_v |= j; switch_v |= j;
// 共通のオプション (数値) // 共通のオプション (数値)
} else if (wcsncmp(tmp_p, L"lc", 2) == 0){ } else if (wcsncmp(tmp_p, L"lc", 2) == 0){
k = 0; if (tmp_p[2] == 'b'){ // Size of Cache Blocking (CPU's L2 cache optimization)
j = 2; k = 0;
while ((j < 2 + 7) && (tmp_p[j] >= '0') && (tmp_p[j] <= '9')){ j = 3;
k = (k * 10) + (tmp_p[j] - '0'); while ((j < 3 + 5) && (tmp_p[j] >= '0') && (tmp_p[j] <= '9')){
j++; k = (k * 10) + (tmp_p[j] - '0');
} j++;
if (k & 0x300){ // GPU を使う
OpenCL_method = k & 0x003F0300;
}
if (k & 1024) // CLMUL と ALTMAP を使わない
cpu_flag = (cpu_flag & 0xFFFFFFF7) | 256;
if (k & 2048) // JIT(SSE2) を使わない
cpu_flag &= 0xFFFFFF7F;
if (k & 4096) // SSSE3 を使わない
cpu_flag &= 0xFFFFFFFE;
if (k & 8192) // AVX2 を使わない
cpu_flag &= 0xFFFFFFEF;
if (k & 255){ // 使用するコア数を変更する
k &= 255; // 1255 の範囲
// printf("\n lc# = %d , logical = %d, physical = %d \n", k, cpu_num >> 24, (cpu_num & 0x00FF0000) >> 16);
if (k == 251){ // 物理コア数の 1/4 にする
k = ((cpu_num & 0x00FF0000) >> 16) / 4;
} else if (k == 252){ // 物理コア数の半分にする
k = ((cpu_num & 0x00FF0000) >> 16) / 2;
} else if (k == 253){ // 物理コア数の 3/4 にする
k = (((cpu_num & 0x00FF0000) >> 16) * 3) / 4;
} else if (k == 254){ // 物理コア数より減らす
k = ((cpu_num & 0x00FF0000) >> 16) - 1;
} else if (k == 255){ // 物理コア数より増やす
k = cpu_num >> 16;
k = ((k & 0xFF) + (k >> 8)) / 2; // 物理コア数と論理コア数の中間にする?
// タスクマネージャーにおける CPU使用率は 100%になるけど、速くはならない・・・
// k = (k & 0xFF) + ((k >> 8) - (k & 0xFF)) / 4; // 物理コア数の 5/4 にする?
} }
if (k > MAX_CPU){ if (k <= 0x7FFF) // 上位 16-bit に上書きする
k = MAX_CPU; cpu_flag = (cpu_flag & 0xFFFF) | (k << 16);
} else if (k < 1){ } else if (tmp_p[2] == 's'){ // Size of Shared Cache
k = 1; k = 0;
} else if (k > (cpu_num >> 24)){ j = 3;
k = cpu_num >> 24; // 論理コア数を超えないようにする while ((j < 3 + 5) && (tmp_p[j] >= '0') && (tmp_p[j] <= '9')){
k = (k * 10) + (tmp_p[j] - '0');
j++;
}
if (k <= 0xFFFF) // 上位 16-bit に上書きする
cpu_cache = (cpu_cache & 0xFFFF) | (k << 16);
} else if (tmp_p[2] == 'm'){ // Max number of chunks (CPU's shared L3 cache optimization)
k = 0;
j = 3;
while ((j < 3 + 5) && (tmp_p[j] >= '0') && (tmp_p[j] <= '9')){
k = (k * 10) + (tmp_p[j] - '0');
j++;
}
if (k <= 0x8000) // CACHE_MIN_NUM 未満なら 0x8000 になる
cpu_cache = (cpu_cache & 0xFFFF0000) | k; // 下位 16-bit に上書きする
} else { // Extra と GPU も別にしてもいいかも?
k = 0;
j = 2;
while ((j < 2 + 7) && (tmp_p[j] >= '0') && (tmp_p[j] <= '9')){
k = (k * 10) + (tmp_p[j] - '0');
j++;
}
if (k & 0x300){ // GPU を使う
OpenCL_method = k & 0x003F0300;
}
if (k & 1024) // CLMUL と ALTMAP を使わない
cpu_flag = (cpu_flag & 0xFFFFFFF7) | 256;
if (k & 2048) // JIT(SSE2) を使わない
cpu_flag &= 0xFFFFFF7F;
if (k & 4096) // SSSE3 を使わない
cpu_flag &= 0xFFFFFFFE;
if (k & 8192) // AVX2 を使わない
cpu_flag &= 0xFFFFFFEF;
if (k & 255){ // 使用するコア数を変更する
k &= 255; // 1255 の範囲
// printf("\n lc# = %d , logical = %d, physical = %d \n", k, cpu_num >> 24, (cpu_num & 0x00FF0000) >> 16);
if (k == 251){ // 物理コア数の 1/4 にする
k = ((cpu_num & 0x00FF0000) >> 16) / 4;
} else if (k == 252){ // 物理コア数の半分にする
k = ((cpu_num & 0x00FF0000) >> 16) / 2;
} else if (k == 253){ // 物理コア数の 3/4 にする
k = (((cpu_num & 0x00FF0000) >> 16) * 3) / 4;
} else if (k == 254){ // 物理コア数より減らす
k = ((cpu_num & 0x00FF0000) >> 16) - 1;
} else if (k == 255){ // 物理コア数より増やす
k = cpu_num >> 16;
k = ((k & 0xFF) + (k >> 8)) / 2; // 物理コア数と論理コア数の中間にする?
// タスクマネージャーにおける CPU使用率は 100%になるけど、速くはならない・・・
// k = (k & 0xFF) + ((k >> 8) - (k & 0xFF)) / 4; // 物理コア数の 5/4 にする?
}
if (k > MAX_CPU){
k = MAX_CPU;
} else if (k < 1){
k = 1;
} else if (k > (cpu_num >> 24)){
k = cpu_num >> 24; // 論理コア数を超えないようにする
}
cpu_num = (cpu_num & 0xFFFF0000) | k; // 指定されたコア数を下位に配置する
} }
cpu_num = (cpu_num & 0xFFFF0000) | k; // 指定されたコア数を下位に配置する
} }
} else if (wcsncmp(tmp_p, L"m", 1) == 0){ } else if (wcsncmp(tmp_p, L"m", 1) == 0){
memory_use = 0; memory_use = 0;
@@ -1948,6 +1975,14 @@ fclose(fp);
if (recovery_limit > j) if (recovery_limit > j)
recovery_limit = j; recovery_limit = j;
} }
} else {
if (split_size == 2){ // 制限をブロック数ではなく、サイズとして認識する
recovery_limit /= block_size;
if (recovery_limit < 1)
recovery_limit = 1;
}
if (recovery_limit > MAX_PARITY_NUM) // パリティ・ブロック数の最大値を超えない
recovery_limit = MAX_PARITY_NUM;
} }
// パリティ・ブロックをリカバリ・ファイルに分配する方法 // パリティ・ブロックをリカバリ・ファイルに分配する方法
i = (switch_set & 0x30000) >> 16; i = (switch_set & 0x30000) >> 16;

View File

@@ -1,5 +1,5 @@
// reedsolomon.c // reedsolomon.c
// Copyright : 2023-12-12 Yutaka Sawada // Copyright : 2024-11-30 Yutaka Sawada
// License : GPL // License : GPL
#ifndef _UNICODE #ifndef _UNICODE
@@ -9,7 +9,7 @@
#define UNICODE #define UNICODE
#endif #endif
#ifndef _WIN32_WINNT #ifndef _WIN32_WINNT
#define _WIN32_WINNT 0x0600 // Windows Vista or later #define _WIN32_WINNT 0x0601 // Windows 7 or later
#endif #endif
#include <malloc.h> #include <malloc.h>

View File

@@ -1,5 +1,5 @@
// repair.c // repair.c
// Copyright : 2022-10-14 Yutaka Sawada // Copyright : 2024-11-30 Yutaka Sawada
// License : GPL // License : GPL
#ifndef _UNICODE #ifndef _UNICODE
@@ -9,7 +9,7 @@
#define UNICODE #define UNICODE
#endif #endif
#ifndef _WIN32_WINNT #ifndef _WIN32_WINNT
#define _WIN32_WINNT 0x0600 // Windows Vista or later #define _WIN32_WINNT 0x0601 // Windows 7 or later
#endif #endif
#include <stdio.h> #include <stdio.h>

Binary file not shown.

View File

@@ -1,5 +1,5 @@
// rs_decode.c // rs_decode.c
// Copyright : 2023-12-13 Yutaka Sawada // Copyright : 2024-11-30 Yutaka Sawada
// License : GPL // License : GPL
#ifndef _UNICODE #ifndef _UNICODE
@@ -9,7 +9,7 @@
#define UNICODE #define UNICODE
#endif #endif
#ifndef _WIN32_WINNT #ifndef _WIN32_WINNT
#define _WIN32_WINNT 0x0600 // Windows Vista or later #define _WIN32_WINNT 0x0601 // Windows 7 or later
#endif #endif
#include <malloc.h> #include <malloc.h>

View File

@@ -1,5 +1,5 @@
// rs_encode.c // rs_encode.c
// Copyright : 2023-12-18 Yutaka Sawada // Copyright : 2024-11-30 Yutaka Sawada
// License : GPL // License : GPL
#ifndef _UNICODE #ifndef _UNICODE
@@ -9,7 +9,7 @@
#define UNICODE #define UNICODE
#endif #endif
#ifndef _WIN32_WINNT #ifndef _WIN32_WINNT
#define _WIN32_WINNT 0x0600 // Windows Vista or later #define _WIN32_WINNT 0x0601 // Windows 7 or later
#endif #endif
#include <malloc.h> #include <malloc.h>

View File

@@ -1,5 +1,5 @@
// search.c // search.c
// Copyright : 2022-10-14 Yutaka Sawada // Copyright : 2024-11-30 Yutaka Sawada
// License : GPL // License : GPL
#ifndef _UNICODE #ifndef _UNICODE
@@ -9,7 +9,7 @@
#define UNICODE #define UNICODE
#endif #endif
#ifndef _WIN32_WINNT #ifndef _WIN32_WINNT
#define _WIN32_WINNT 0x0600 // Windows Vista or later #define _WIN32_WINNT 0x0601 // Windows 7 or later
#endif #endif
#include <stdio.h> #include <stdio.h>

View File

@@ -1,5 +1,5 @@
// verify.c // verify.c
// Copyright : 2024-06-09 Yutaka Sawada // Copyright : 2024-11-30 Yutaka Sawada
// License : GPL // License : GPL
#ifndef _UNICODE #ifndef _UNICODE
@@ -9,7 +9,7 @@
#define UNICODE #define UNICODE
#endif #endif
#ifndef _WIN32_WINNT #ifndef _WIN32_WINNT
#define _WIN32_WINNT 0x0600 // Windows Vista or later #define _WIN32_WINNT 0x0601 // Windows 7 or later
#endif #endif
#include <process.h> #include <process.h>

View File

@@ -1,2 +1,2 @@
#define FILE_VERSION "1.3.3.3" // ファイルのバージョン番号 #define FILE_VERSION "1.3.3.5" // ファイルのバージョン番号
#define PRODUCT_VERSION "1.3.3" // 製品のバージョン番号 #define PRODUCT_VERSION "1.3.3" // 製品のバージョン番号

View File

@@ -94,6 +94,16 @@ It means that it is impossible to mix "/" and "-" in options of same command lin
If checksum file's filename (or relative path) is started by "-", If checksum file's filename (or relative path) is started by "-",
you need to use "/" for prefix of options to distinguish checksum file. you need to use "/" for prefix of options to distinguish checksum file.
When a option has arbitary number or text,
don't put space between the option and following part.
For example, setting "/vs1" is valid, but "/vs 1" is wrong.
Setting "/dPath" is valid, but "/d Path" is wrong.
To distinguish options from filenames, order of command-line arguments is important.
Put all options before <checksum file>.
Put <checksum file> before all [input files]
/fo : /fo :
Set this, if you want to ignore folders at wildcard matching search. Set this, if you want to ignore folders at wildcard matching search.
This setting disable recursive search into folder also. This setting disable recursive search into folder also.
@@ -129,8 +139,10 @@ from the PAR client's directory, use this setting to set path.
use this setting to set the path as base-directory. use this setting to set the path as base-directory.
This is either absolute path or relative path from current directory. This is either absolute path or relative path from current directory.
If you include space in path, use "" to specify where is end. If you include space in path, use "" to specify where is end.
Note, setting "/dC:" is same as setting current directory of C-drive. As you may omit the last "/" in path of a folder,
If you want to set direct root of C-drive, you must set "/dC:/". both "/dC:/data/" and "/dC:/data" are valid.
Note, setting "/dD:" is same as setting current directory of D-drive.
If you want to set direct root of D-drive, you must set "/dD:/".
for example, /dC:/data/ , /d"C:/Program Files/" , /d../data/ for example, /dC:/data/ , /d"C:/Program Files/" , /d../data/

View File

@@ -1,5 +1,5 @@
// common.c // common.c
// Copyright : 2023-03-14 Yutaka Sawada // Copyright : 2024-11-30 Yutaka Sawada
// License : The MIT license // License : The MIT license
#ifndef _UNICODE #ifndef _UNICODE
@@ -9,7 +9,7 @@
#define UNICODE #define UNICODE
#endif #endif
#ifndef _WIN32_WINNT #ifndef _WIN32_WINNT
#define _WIN32_WINNT 0x0600 // Windows Vista or later #define _WIN32_WINNT 0x0601 // Windows 7 or later
#endif #endif
#include <conio.h> #include <conio.h>

View File

@@ -1,5 +1,5 @@
// create.c // create.c
// Copyright : 2022-02-16 Yutaka Sawada // Copyright : 2024-11-30 Yutaka Sawada
// License : The MIT license // License : The MIT license
#ifndef _UNICODE #ifndef _UNICODE
@@ -9,7 +9,7 @@
#define UNICODE #define UNICODE
#endif #endif
#ifndef _WIN32_WINNT #ifndef _WIN32_WINNT
#define _WIN32_WINNT 0x0600 // Windows Vista or later #define _WIN32_WINNT 0x0601 // Windows 7 or later
#endif #endif
#include <stdio.h> #include <stdio.h>

Some files were not shown because too many files have changed in this diff Show More