X-Git-Url: http://git.cascardo.eti.br/?a=blobdiff_plain;f=src%2Fbackend.c;h=d71eb2965711aafa6444974b6a531b7cdb80c7f6;hb=6dd659c3cecfd75ccc58994d77b70a5a09d098cc;hp=1eb4aeb8348a5cb12964b3ae911b50e15775c3f5;hpb=870a4779e00e0eb6a52d70577e4c1581e2241b5f;p=cascardo%2Fatompub.git diff --git a/src/backend.c b/src/backend.c index 1eb4aeb..d71eb29 100644 --- a/src/backend.c +++ b/src/backend.c @@ -99,11 +99,20 @@ int atom_is_feed (AtomCtx *ctx, AtomID *id) { AtomBackend *backend; + AtomError *aerr; backend = atom_backend (ctx); if (backend && backend->is_feed) { return backend->is_feed (ctx, id); } + /* Frontend may make the decision of whether the requested resource is + * a feed or not. If it is not able to do so and backend isn't either, + * it is an error. + */ + aerr = atom_error_new (); + atom_error_code_set (aerr, 404); + atom_error_message_set (aerr, "Not Found"); + atom_error_set (ctx, aerr); return 0; } @@ -114,6 +123,8 @@ atom_retrieve_feed (AtomCtx *ctx) AtomEntry **entries; size_t len; atom_backend_enumerate_entries (ctx, &entries, &len); + if (atom_error_get (ctx) != NULL) + return NULL; feed = atom_feed_new (); atom_feed_entry_append_array (feed, entries, len); return feed; @@ -123,6 +134,7 @@ AtomResource * atom_retrieve_resource (AtomCtx *ctx, AtomID *id) { AtomResource *res; + res = NULL; if (atom_is_feed (ctx, id)) { AtomFeed *feed; @@ -132,7 +144,7 @@ atom_retrieve_resource (AtomCtx *ctx, AtomID *id) res = atom_resource_new_from_feed (feed); atom_feed_delete (feed); } - else + else if (atom_error_get (ctx) != NULL) { AtomEntry *entry; entry = atom_retrieve_entry (ctx, id);