static char * read_json () { GFile *file; GFileInputStream *fstrm; GDataInputStream *dstrm; gchar *data = NULL; GError *err = NULL; file = g_file_new_for_uri ("resource:///org/wkgtk/khanacademy/khanacademy.json"); fstrm = g_file_read (file, NULL, &err); if (!fstrm) { g_printerr ("Failed opening file: %s\n", err->message); g_error_free (err); goto bail; } dstrm = g_data_input_stream_new (G_INPUT_STREAM (fstrm)); data = g_data_input_stream_read_upto (dstrm, "\0", 1, NULL, NULL, &err); if (!data) { g_printerr ("Failed reading file: %s\n", err->message); g_error_free (err); goto bail; } if (!g_input_stream_close (G_INPUT_STREAM (fstrm), NULL, &err)) { g_printerr ("Failed closing file: %s\n", err->message); g_error_free (err); goto bail; } bail: g_object_unref (dstrm); g_object_unref (fstrm); g_object_unref (file); return data; }
static gboolean process_many_checkouts (OstreeRepo *repo, GFile *target, GCancellable *cancellable, GError **error) { gboolean ret = FALSE; gsize len; GError *temp_error = NULL; gs_unref_object GInputStream *instream = NULL; gs_unref_object GDataInputStream *datastream = NULL; gs_free char *revision = NULL; gs_free char *subpath = NULL; gs_free char *resolved_commit = NULL; if (opt_from_stdin) { instream = (GInputStream*)g_unix_input_stream_new (0, FALSE); } else { gs_unref_object GFile *f = g_file_new_for_path (opt_from_file); instream = (GInputStream*)g_file_read (f, cancellable, error); if (!instream) goto out; } datastream = g_data_input_stream_new (instream); while ((revision = g_data_input_stream_read_upto (datastream, "", 1, &len, cancellable, &temp_error)) != NULL) { if (revision[0] == '\0') break; /* Read the null byte */ (void) g_data_input_stream_read_byte (datastream, cancellable, NULL); g_free (subpath); subpath = g_data_input_stream_read_upto (datastream, "", 1, &len, cancellable, &temp_error); if (temp_error) { g_propagate_error (error, temp_error); goto out; } /* Read the null byte */ (void) g_data_input_stream_read_byte (datastream, cancellable, NULL); if (!ostree_repo_resolve_rev (repo, revision, FALSE, &resolved_commit, error)) goto out; if (!process_one_checkout (repo, resolved_commit, subpath, target, cancellable, error)) { g_prefix_error (error, "Processing tree %s: ", resolved_commit); goto out; } g_free (revision); } if (temp_error) { g_propagate_error (error, temp_error); goto out; } ret = TRUE; out: return ret; }
gboolean gimp_curves_config_load_cruft (GimpCurvesConfig *config, GInputStream *input, GError **error) { GDataInputStream *data_input; gint index[5][GIMP_CURVE_N_CRUFT_POINTS]; gint value[5][GIMP_CURVE_N_CRUFT_POINTS]; gchar *line; gsize line_len; gint i, j; g_return_val_if_fail (GIMP_IS_CURVES_CONFIG (config), FALSE); g_return_val_if_fail (G_IS_INPUT_STREAM (input), FALSE); g_return_val_if_fail (error == NULL || *error == NULL, FALSE); data_input = g_data_input_stream_new (input); line_len = 64; line = g_data_input_stream_read_line (data_input, &line_len, NULL, error); if (! line) return FALSE; if (strcmp (line, "# GIMP Curves File") != 0) { g_set_error_literal (error, GIMP_CONFIG_ERROR, GIMP_CONFIG_ERROR_PARSE, _("not a GIMP Curves file")); g_object_unref (data_input); g_free (line); return FALSE; } for (i = 0; i < 5; i++) { for (j = 0; j < GIMP_CURVE_N_CRUFT_POINTS; j++) { gchar *x_str = NULL; gchar *y_str = NULL; if (! (x_str = g_data_input_stream_read_upto (data_input, " ", -1, NULL, NULL, error)) || ! g_data_input_stream_read_byte (data_input, NULL, error) || ! (y_str = g_data_input_stream_read_upto (data_input, " ", -1, NULL, NULL, error)) || ! g_data_input_stream_read_byte (data_input, NULL, error)) { g_free (x_str); g_free (y_str); g_object_unref (data_input); return FALSE; } if (sscanf (x_str, "%d", &index[i][j]) != 1 || sscanf (y_str, "%d", &value[i][j]) != 1) { g_set_error_literal (error, GIMP_CONFIG_ERROR, GIMP_CONFIG_ERROR_PARSE, _("Parse error, didn't find 2 integers")); g_free (x_str); g_free (y_str); g_object_unref (data_input); return FALSE; } g_free (x_str); g_free (y_str); } } g_object_unref (data_input); g_object_freeze_notify (G_OBJECT (config)); for (i = 0; i < 5; i++) { GimpCurve *curve = config->curve[i]; gimp_data_freeze (GIMP_DATA (curve)); gimp_curve_set_curve_type (curve, GIMP_CURVE_SMOOTH); gimp_curve_set_n_points (curve, GIMP_CURVE_N_CRUFT_POINTS); gimp_curve_reset (curve, FALSE); for (j = 0; j < GIMP_CURVE_N_CRUFT_POINTS; j++) { if (index[i][j] < 0 || value[i][j] < 0) gimp_curve_set_point (curve, j, -1.0, -1.0); else gimp_curve_set_point (curve, j, (gdouble) index[i][j] / 255.0, (gdouble) value[i][j] / 255.0); } gimp_data_thaw (GIMP_DATA (curve)); } g_object_thaw_notify (G_OBJECT (config)); return TRUE; }