📄 joindump.c
字号:
/* Program to join split files */
#include <stdio.h>
void
main(int argc, char **argv)
{
FILE *f, *out, *hf;
int i;
char name[256];
char tmp[256], host[256];
int n;
char buf[4096];
if(argc != 2 && argc != 3 && argc != 4)
{
fprintf(stderr, "Usage: joindump <filename> [hosts]\n");
exit(1);
}
if((out=fopen(argv[1],"w")) == NULL)
{
fprintf(stderr, "Can't open output file '%s' for write\n", argv[1]);
exit(1);
}
if(argc >= 3)
{
if((hf = fopen(argv[2], "r")) == NULL)
{
fprintf(stderr,"Can't open host file %s\n", argv[2]);
exit(1);
}
}
else
hf = NULL;
if(argc == 4)
i=atoi(argv[3]);
else
i=0;
for(; i<2048; i++)
{
sprintf(name, "%s.%d", argv[1], i);
if(hf)
{
if(fgets(host,sizeof(host),hf) == NULL)
break;
if(host[strlen(host)-1] == '\n')
host[strlen(host)-1] = '\0';
sprintf(tmp,"rcp %s:/tmp/%s %s", host, name, name);
if(system(tmp) != 0)
{
fprintf(stderr,"Joindump failed in RCP: %s\n", tmp);
exit(1);
}
sprintf(tmp,"rsh %s 'rm -f /tmp/%s'", host,name);
if(system(tmp) != 0)
fprintf(stderr,"Warning: RM failed: %s\n", tmp);
}
printf("Joining %s\n", name);
if((f=fopen(name,"r")) == NULL)
break;
while((n=fread(buf, 1, sizeof(buf), f)) > 0)
fwrite(buf, 1, n, out);
fclose(f);
unlink(name);
}
#ifdef NOTDEF
for(i=0; i<2048; i++)
{
sprintf(name, "%s.%d", argv[1], i);
if(access(name,0) == 0)
unlink(name);
else
break;
}
#endif
fclose(out);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -