See if this helps. BUFSIZ was not what you think. I replaced it with a hardcode value, changed it if you like.
#include <unistd.h>
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
int main(){
FILE *read_fp;
FILE *read_sed;
int chars_read;
char command[1024] = "grep -n -w ";
char buffer[1024 + 1];
memset(buffer, 0, sizeof(buffer));
printf("Enter MD5 Hash: ");
char hash[500];
scanf("%s", hash);
strcat(command, hash);
strcat(command, " file2.txt | cut -f1 -d:");
/*printf("command: %s\n",command);*/
read_fp = popen (command, "r");
if (read_fp != NULL) {
while ((chars_read = fread(buffer, sizeof(char),1024 , read_fp)) > 0 ){
/*printf("buf: %s\n",buffer);*/
sprintf(command,"sed -n \"%d p\" file1.txt",atoi(buffer));
/*printf("command: %s\n",command);*/
read_sed = popen (command, "r");
if ((chars_read = fread(buffer, sizeof(char), 1024, read_sed)) > 0 ) {
printf("%s -> %s",hash,buffer);
}
pclose(read_sed);
}
pclose(read_fp);
}
return 0;
} histrungalot
Posting Whiz in Training
266 posts since May 2008
Reputation Points: 76
Solved Threads: 34