SimpleText DAY 8 - テキスト読み込み機能の手直し その2

今日は、指定したファイルが存在しない状況への対処を追加しましょう。
ファイルが存在しない場合、g_io_channel_new_fileからNULLが返されるのでそれを利用します。


callbacks.c

void
on_button_open_clicked ( GtkButton *button, gpointer user_data)
{
GtkEntry *entry = (GtkEntry *)lookup_widget((GtkWidget *)button, (gchar *)"entry");
gchar *filename = (gchar *)gtk_entry_get_text(entry);
g_print("%s\n", filename);

GError *error = NULL;
gchar *text;
gsize *size;

GtkTextIter start, iter;
GtkTextView *textview = (GtkTextView *)lookup_widget((GtkWidget *)button, (gchar *)"textview);
GtkTextBuffer *textbuffer = gtk_text_view_get_buffer(textview);
gtk_text_buffer_get_start_iter(textbuffer, &start);
gtk_text_buffer_get_end_iter(textbuffer, &iter);
gtk_text_buffer_delete(textbuffer, &start, &iter);

GIOChannel *filepointer = g_io_channel_new_file(filename, "r", error);
if(!filepointer) return;
g_io_channel_read_to_end(filepointer, &text, size, &error);
g_io_channel_close(fp);
g_print("%s\n", text);
gtk_text_buffer_insert(textbuffer, &iter, text, strlen(text));
g_free(text);
}

「TextIterを確保する〜TextBufferを消去する」の6行を上に移し、
filepointer == NULLのときは後の処理をスキップするようにしました。