void ori_open (gchar * fn, gboolean replace) { GString *gstr; GFile *fp; GFileInputStream *file_in; char *nullstr = "NULLSTRING"; gssize bytes = 1; if (!fn) fn = nullstr; fp = g_file_new_for_uri (fn); if (fp == NULL) { gchar errmsg[MAX_ERR_MSG_SIZE + 1]; g_snprintf (errmsg, MAX_ERR_MSG_SIZE, _("Failed to open <%s>"), fn); gui_app_show_msg (GTK_MESSAGE_ERROR, errmsg); return; } gstr = g_string_new (""); file_in = g_file_read (fp, NULL, NULL); while (bytes != 0) { gchar buf[100] = { 0 }; bytes = g_input_stream_read (G_INPUT_STREAM (file_in), buf, 100, NULL, NULL); g_string_append_len (gstr, buf, bytes); } g_input_stream_close (G_INPUT_STREAM (file_in), NULL, NULL); gui_editor_set_text (app->editor, gstr->str); gtk_text_buffer_set_modified ((GtkTextBuffer *)app->editor->buffer, FALSE); /* Set breakpoints as instructed in the source */ { gchar *str = gstr->str; gint ln = 0; gchar **lines = NULL; g_assert (str); lines = g_strsplit (str, "\n", -1); g_assert (lines); /* for each line */ while (lines[ln]) { /* check for ;@ */ if (strlen (lines[ln]) > 1) { if (lines[ln][0] == ';' && lines[ln][1] == '@') { /* add breakpoint */ gui_editor_set_mark (app->editor, ln + 1, TRUE); //exit(99); } } ln++; } g_strfreev (lines); } g_string_free (gstr, TRUE); if (replace) _set_file_name (fn); }
void ori_open (gchar * fn, gboolean replace) { GString *gstr; FILE *fp; char *nullstr = "NULLSTRING"; char *ret; if (!fn) fn = nullstr; fp = fopen (fn, "r"); if (fp == NULL) { gchar errmsg[MAX_ERR_MSG_SIZE + 1]; g_snprintf (errmsg, MAX_ERR_MSG_SIZE, _("Failed to open <%s>"), fn); gui_app_show_msg (GTK_MESSAGE_ERROR, errmsg); return; } gstr = g_string_new (""); while (!feof (fp)) { gchar buf[300] = { 0 }; // return value stored just to avoid compiler warnings. ret = fgets (buf, 100, fp); g_string_append (gstr, buf); } gui_editor_set_text (app->editor, gstr->str); gtk_text_buffer_set_modified ((GtkTextBuffer *)app->editor->buffer, FALSE); /* Set breakpoints as instructed in the source */ { gchar *str = gstr->str; gint ln = 0; gchar **lines = NULL; g_assert (str); lines = g_strsplit (str, "\n", -1); g_assert (lines); /* for each line */ while (lines[ln]) { /* check for ;@ */ if (strlen (lines[ln]) > 1) { if (lines[ln][0] == ';' && lines[ln][1] == '@') { /* add breakpoint */ gui_editor_set_mark (app->editor, ln + 1, TRUE); //exit(99); } } ln++; } g_strfreev (lines); } g_string_free (gstr, TRUE); if (replace) _set_file_name (fn); }