- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我有两个基本文件 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 delta create_delta.c -Wall -g -lrsync
但是第二部分给出了Segmentation fault error。
可能正因为如此,第三个可执行文件产生空文件:
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;
}
更新在 fopen 未发现任何错误后尝试检查文件指针是否为空。
最佳答案
看了https://rproxy.samba.org/doxygen/librsync/rsync_h.html之后我想你必须使用
rs_build_hash_table(signature)
调用之前
rs_delta_file(signature, fpb, fpd, NULL);
那对我来说很好。
关于c - 段错误 - 使用 librsync 库时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25030898/
尝试使用 pecl 安装 php-rsync 模块,我收到以下错误: CentOS 6.3 [root@]# pecl install rsync Failed to download pecl/r
我试图了解如何获得 librsync在 CENTOS 5.8 x86_64 标准下工作(即制作签名/制作增量/补丁)(在我最终尝试在 Windows 下编译它之前),但由于我主要是 Windows/D
我正在使用librsync生成二进制补丁并将其发送给另一个用户。 但是我遇到了一个问题:在对Win8 / Win7进行补丁后,校验和(sha512)上的某些文件与对Win10进行补丁后的校验和不同。
我正在使用 librsync 库来维护文件版本。我无法从网络打开文件。 示例(创建签名文件): int main(int argc, char** argv)//FILE *original, FIL
我有两个基本文件 filea.txt 和 fileb.txt。尝试创建签名,然后使用签名和 fileb.txt 进行增量,然后使用该增量修补 filea.txt。生成的文件内容应与 fileb.txt
刚刚在 ubuntu 上使用 apt-get install librsync-dev 安装了 librsync。我可以像这样链接其他库>。我如何链接它? 更新:我对 C 和所有这些编译链接的东西还很
我在安装 this library called librsync 时遇到问题在 Amazon 标准 Linux 实例上。 我试过这个: yum install librsync-devel 但是我得
我正在使用 Librsync在项目中计算文件的两个版本之间的差异并将更改应用到旧文件。 在我的项目之外,我让它在一个简单的控制台应用程序中工作,该应用程序从 2 个不同的目录读取文件,“修补”它们并将
我们有一个要求,我们需要一些 rsync 库。我遇到了一个名为 librsync 的东西,并从这个 Link 下载了它。 在这个库的自述文件中提到了 The PCbuild directory con
我是一名优秀的程序员,十分优秀!