GList * seaf_repo_manager_get_repo_list (SeafRepoManager *mgr, int start, int limit, gboolean *error) { char sql[256]; GList *id_list = NULL, *ptr; GList *ret = NULL; SeafRepo *repo; *error = FALSE; if (start == -1 && limit == -1) snprintf (sql, 256, "SELECT repo_id FROM Repo"); else snprintf (sql, 256, "SELECT repo_id FROM Repo LIMIT %d, %d", start, limit); if (seaf_db_foreach_selected_row (mgr->seaf->db, sql, collect_repo_id, &id_list) < 0) goto error; for (ptr = id_list; ptr; ptr = ptr->next) { char *repo_id = ptr->data; repo = seaf_repo_manager_get_repo_ex (mgr, repo_id); if (repo) ret = g_list_prepend (ret, repo); } string_list_free (id_list); return ret; error: *error = TRUE; string_list_free (id_list); for (ptr = ret; ptr; ptr = ptr->next) { repo = ptr->data; seaf_repo_unref (repo); } return NULL; }
static void * send_repo_branch_info (void *vprocessor) { CcnetProcessor *processor = vprocessor; SeafRepo *repo; SeafBranch *seaf_branch; USE_PRIV; repo = seaf_repo_manager_get_repo_ex (seaf->repo_mgr, priv->repo_id); if (!repo) { priv->rsp_code = g_strdup (SC_NO_REPO); priv->rsp_msg = g_strdup (SS_NO_REPO); return vprocessor; } else if (repo->is_corrupted) { priv->rsp_code = g_strdup (SC_REPO_CORRUPT); priv->rsp_msg = g_strdup (SS_REPO_CORRUPT); return vprocessor; } seaf_branch = seaf_branch_manager_get_branch (seaf->branch_mgr, priv->repo_id, priv->branch_name); if (!seaf_branch) { seaf_repo_unref (repo); priv->rsp_code = g_strdup (SC_NO_BRANCH); priv->rsp_msg = g_strdup (SS_NO_BRANCH); return vprocessor; } priv->rsp_code = g_strdup (SC_COMMIT_ID); priv->rsp_msg = g_strdup (SS_COMMIT_ID); memcpy (priv->commit_id, seaf_branch->commit_id, 41); seaf_repo_unref (repo); seaf_branch_unref (seaf_branch); return vprocessor; }