Well, 
my final goal is to able to edit the file, but not save every time
something  has changed. 
So, in irc and other place, i was instructed to use get_contents method.
Can you kindly clarify where I went wrong?
On Wed, 2013-01-30 at 07:57 +0800, Gregory Hosler wrote:
> On 01/30/2013 07:39 AM, Rudra Banerjee wrote:
> > Dear friends, I am trying hard to get rid of file reading and editing (as
> > evident from my previous post) Here is a small code where I tried to open
> > my file in a buffer and scan. Its small, 50 line code. I will be grateful
> > if anybody kindly have a look and tell if this is really opening the file
> > from buffer or still using the file. Please help.
> 
> I am coming late into this thread, so please forgive the following 
> question(s).
> 
> I would like clarification "opening the file from buffer or still using the 
> file".
> 
> In C, there is an api that allows us to open a file, and then associate a
> memory location with the file's contents. There after, any modification to the
> file, automatically shows in the buffer (i.e. no read() or re-read is
> required) and any modification to the file buffer will automatically show on
> disk (without the necessity of a write()).
> 
> Is this what you are trying to do ?
> 
> If yes, then the below will not accomplish this. The C api is to do a standard
> open(2) and then a mmap(2) to associate the file's buffer to a fixed memory
> location - I am happy to supply more details upon a confirmation.
> 
> All the best,
> 
> -Greg
> 
> > void open_file(GtkWidget *widget, gpointer data){ GScanner *scanner; 
> > GHashTable *table; char* fd; gsize length; GError* error=NULL; 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)); 
> > gtk_list_store_clear (store); g_file_get_contents(filename, &fd, &length ,
> > &error); g_assert(!error);
> > 
> > scanner = g_scanner_new (NULL); g_scanner_input_text (scanner, fd,
> > CHAR_BUFF);
> > 
> > table = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, g_free); 
> > do { g_hash_table_remove_all (table); parse_entry (scanner, table); 
> > output_entry (table);
> > 
> > g_scanner_peek_next_token (scanner); } while (scanner->next_token !=
> > G_TOKEN_EOF && scanner->next_token != G_TOKEN_ERROR);
> > 
> > 
> > /* finsish parsing */ g_scanner_destroy (scanner); g_hash_table_destroy
> > (table);
> > 
> > gtk_label_set_text(GTK_LABEL(flabel), filename); 
> > gtk_widget_destroy(dialog); } else gtk_widget_destroy(dialog); }
> > 
> > _______________________________________________ gtk-app-devel-list mailing
> > list gtk-app-devel-list@gnome.org 
> > https://mail.gnome.org/mailman/listinfo/gtk-app-devel-list
> > 
> 
> 


_______________________________________________
gtk-app-devel-list mailing list
gtk-app-devel-list@gnome.org
https://mail.gnome.org/mailman/listinfo/gtk-app-devel-list

Reply via email to