Thanks for your reply.
No, its not saying fauth failed. Its just giving segmentation fault.
The code is for opening and reading file.
The complete function is:
static void open_file(GtkWidget *widget, gpointer data) {
GtkWidget *dialog; //, *entry;
GtkFileFilter *filter;
dialog = gtk_file_chooser_dialog_new("Open File", NULL,
GTK_FILE_CHOOSER_ACTION_OPEN,
GTK_STOCK_OPEN, GTK_RESPONSE_ACCEPT,
GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
NULL);
filter = gtk_file_filter_new();
gtk_file_filter_set_name(filter, "All files (*.*)");
gtk_file_filter_add_pattern(filter, "*");
gtk_file_chooser_add_filter(GTK_FILE_CHOOSER(dialog), filter);
filter = gtk_file_filter_new();
gtk_file_filter_set_name(filter, "Bibtex file (*.bib)");
gtk_file_filter_add_pattern(filter, "*.bib");
gtk_file_chooser_add_filter(GTK_FILE_CHOOSER(dialog), filter);
gtk_file_chooser_set_filter(GTK_FILE_CHOOSER(dialog), filter);
if (gtk_dialog_run(GTK_DIALOG(dialog)) == GTK_RESPONSE_ACCEPT) {
filename = gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(dialog));
char pcomm[1028];
sprintf(pcomm, "bash parse.sh %s", filename);
g_print("%s\n", pcomm);
system((char *) pcomm);
int i,j,k;
FILE *fauth, *fyear, *ftitle;
char aauth[6][500],ayear[6][4],atitle[6][500], buffer[500];
fauth=fopen("fauth.dat","r");
fyear=fopen("fyear.dat","r");
ftitle=fopen("ftitle.dat","r");
if(!fauth||!ftitle||!fyear){
printf("fauth failed\n");
}
while(fgets(buffer,500,fauth)){
g_print("i%s",i);
strcpy(aauth
,buffer);
i++;
}
fclose(fauth);
while(fgets(buffer,500,fyear)){
strcpy(ayear[j],buffer);
j++;
}
fclose(fyear);
while(fgets(buffer,500,ftitle)){
strcpy(atitle[k],buffer);
k++;
}
fclose(ftitle);
for (i = 0; i < 6; i++){
gtk_tree_store_append(GTK_TREE_STORE(treestore), &toplevel,NULL);
gtk_tree_store_set(treestore, &toplevel,
COL_BIB_TYPE, NULL,
COL_BIB_NAME, aauth,
COL_BIB_YEAR, ayear,
COL_BIB_PUB, atitle,
-1);
}
}
gtk_label_set_text(GTK_LABEL(flabel), filename);
gtk_widget_destroy(dialog);
}