72 lines
2.2 KiB
C
72 lines
2.2 KiB
C
#ifndef _REPAIR_H_
|
||
#define _REPAIR_H_
|
||
|
||
#ifdef __cplusplus
|
||
extern "C" {
|
||
#endif
|
||
|
||
|
||
// ソース・ファイル情報を確認して集計する
|
||
int set_file_data(
|
||
char *ascii_buf, // 作業用
|
||
file_ctx_r *files);
|
||
|
||
// ソース・ファイルの検査結果を集計して、修復方法を判定する
|
||
int result_file_state(
|
||
char *ascii_buf,
|
||
int *result,
|
||
int parity_now,
|
||
int recovery_lost,
|
||
file_ctx_r *files, // 各ソース・ファイルの情報
|
||
source_ctx_r *s_blk); // 各ソース・ブロックの情報
|
||
|
||
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
|
||
|
||
// 簡単な修復を行う
|
||
int simple_repair(
|
||
char *ascii_buf,
|
||
int need_repair,
|
||
file_ctx_r *files); // 各ソース・ファイルの情報
|
||
|
||
// 4バイトのソース・ブロックを逆算してソース・ファイルに書き込む
|
||
int restore_block4(
|
||
wchar_t *file_path,
|
||
file_ctx_r *files, // 各ソース・ファイルの情報
|
||
source_ctx_r *s_blk); // 各ソース・ブロックの情報
|
||
|
||
// ソース・ブロックを流用または逆算してソース・ファイルに書き込む
|
||
int restore_block(
|
||
wchar_t *file_path,
|
||
int reuse_num, // 流用可能なソース・ブロックの数
|
||
file_ctx_r *files, // 各ソース・ファイルの情報
|
||
source_ctx_r *s_blk); // 各ソース・ブロックの情報
|
||
|
||
// 正しく修復できたか調べて結果表示する
|
||
int verify_repair(
|
||
wchar_t *file_path,
|
||
char *ascii_buf,
|
||
file_ctx_r *files, // 各ソース・ファイルの情報
|
||
source_ctx_r *s_blk); // 各ソース・ブロックの情報
|
||
|
||
// 作業用のソース・ファイルを削除する
|
||
void delete_work_file(
|
||
wchar_t *file_path,
|
||
file_ctx_r *files); // 各ソース・ファイルの情報
|
||
|
||
// ブロック単位の復元ができなくても、再構築したファイルで置き換える
|
||
void replace_incomplete(
|
||
wchar_t *file_path,
|
||
char *ascii_buf,
|
||
file_ctx_r *files, // 各ソース・ファイルの情報
|
||
source_ctx_r *s_blk); // 各ソース・ブロックの情報
|
||
|
||
// リカバリ・ファイルを削除する(Useless状態だったのは無視する)
|
||
int purge_recovery_file(void);
|
||
|
||
|
||
#ifdef __cplusplus
|
||
}
|
||
#endif
|
||
|
||
#endif
|