我有两个基本文件filea.txt和fileb.txt。尝试创建签名,然后使用签名和fileb.txt创建增量,然后使用该增量修补filea.txt。生成的文件的内容应该与fileb.txt相同
第一部分从filea.txt创建签名文件。
#include <stdlib.h>
#include <stdio.h>
#include "librsync.h"
int main(){
FILE *fpa;
fpa = fopen("filea.txt","r");
FILE *fps;
fps = fopen("sig.sig","w+");
rs_result res = rs_sig_file(fpa, fps, 1,2,NULL);
fclose(fpa);
fclose(fps);
printf("Result code: %d\n", res);
return 0;
}然后,第二个应该使用带有fileb.txt文件的签名来创建增量文件。
#include <stdlib.h>
#include <stdio.h>
#include "librsync.h"
int main(){
FILE *fpb;
fpb = fopen("fileb.txt", "r");
FILE *fpd;
fpd = fopen("delta.delt","w+");
FILE *sigFile;
sigFile = fopen("sig.sig","r");
rs_signature_t *signature;
rs_loadsig_file(sigFile, &signature, NULL);
rs_result res = rs_delta_file(signature, fpb, fpd, NULL);
printf("Result: %d", res);
fclose(fpb); fclose(fpd); fclose(sigFile);
return 0;
}我正在编译它们,比如gcc -o create_delta.c -Wall -g -lrsync
但第二部分给出了分割故障的误差。
可能正因为如此,第三个可执行文件生成空文件:
int main() {
FILE *fpd;
fpd = fopen("delta.delt", "r");
FILE *fpa;
fpa = fopen("filea.txt", "r");
FILE *fpn;
fpn = fopen("file_new.txt", "w+");
rs_patch_file(fpa, fpd, fpn, NULL);
fclose(fpd); fclose(fpa); fclose(fpn);
return 0;
}UPDATE尝试在fopen没有捕获任何错误后检查文件指针是否为null。
发布于 2014-07-30 12:05:07
https://stackoverflow.com/questions/25030898
复制相似问题