summaryrefslogtreecommitdiff
path: root/delete.c
diff options
context:
space:
mode:
authorVincent Douillet <vincent@vdouillet.fr>2024-12-26 18:13:42 +0100
committerVincent Douillet <vincent@vdouillet.fr>2024-12-27 15:21:14 +0100
commitfddc6610d724dc08433ea99a98406d76c47e9df1 (patch)
tree6e96ffbedbd2d7ab119345a9cc367b6869236819 /delete.c
parent1bcf812973335b424655b272eb831d4eb8f059fc (diff)
remove http_retHEADmaster
Diffstat (limited to 'delete.c')
-rw-r--r--delete.c77
1 files changed, 20 insertions, 57 deletions
diff --git a/delete.c b/delete.c
index c6c1449..367b937 100644
--- a/delete.c
+++ b/delete.c
@@ -122,7 +122,7 @@ header_template_callback(size_t index, void *arg)
* GET request, we print delete form
*/
void
-delete_get(struct kreq * r, struct http_ret * ret, struct file * file)
+delete_get(struct kreq * r, struct file * file)
{
struct khtmlreq html;
struct ktemplate template;
@@ -133,19 +133,13 @@ delete_get(struct kreq * r, struct http_ret * ret, struct file * file)
/* action url is form submit url */
if (build_delete_url(r, file) == 0) {
- *ret = (struct http_ret) {
- KHTTP_500,
- "delete: Can't build delete url"
- };
+ http_exit(r, KHTTP_500, "delete: Can't build delete url");
goto end;
}
/* read template */
tmpl = page_template_new(DELETE_URL);
if (tmpl == NULL) {
- *ret = (struct http_ret) {
- KHTTP_500,
- "delete: Unable to read template"
- };
+ http_exit(r, KHTTP_500, "delete: Unable to read template");
goto end;
}
/* print delete form */
@@ -177,7 +171,7 @@ end:
* POST request, we handle delete form
*/
void
-delete_post(struct kreq * r, struct http_ret * ret, struct file * f)
+delete_post(struct kreq * r, struct file * f)
{
char path[PATH_MAX];
char *paths[2];
@@ -193,32 +187,22 @@ delete_post(struct kreq * r, struct http_ret * ret, struct file * f)
/* prepare action url for return redirection in case of success */
parent = file_get_parent(f);
if (parent == NULL || build_browse_url(r, parent) == 0) {
- *ret = (struct http_ret) {
- KHTTP_500,
- "delete: can't build return url"
- };
+ http_exit(r, KHTTP_500, "delete: can't build return url");
goto end;
}
-
/* build file path on disk */
if (file_get_data_path(f, path, sizeof(path), NULL) <= 0) {
- *ret = (struct http_ret) {
- KHTTP_500,
- "delete: can't build file data path"
- };
+ http_exit(r, KHTTP_500, "delete: can't build file data path");
goto end;
}
-
if (f->is_dir) {
/* don't follow symlinks */
fts_opts = 0x0 | FTS_PHYSICAL;
paths[0] = path;
paths[1] = NULL;
if ((fts = fts_open(paths, fts_opts, NULL)) == NULL) {
- *ret = (struct http_ret) {
- KHTTP_500,
- "delete: can't open file hierarchy"
- };
+ http_exit(r, KHTTP_500,
+ "delete: can't open file hierarchy");
goto end;
}
/* file and directory delete loop */
@@ -227,28 +211,22 @@ delete_post(struct kreq * r, struct http_ret * ret, struct file * f)
/* halt on fts errors */
if (fi == FTS_DNR || fi == FTS_ERR || fi == FTS_NS) {
- *ret = (struct http_ret) {
- KHTTP_500,
- "delete: fts_read error"
- };
+ http_exit(r, KHTTP_500,
+ "delete: fts_read error");
goto end;
}
/* delete regular files and empty folders */
else if ((fi == FTS_DP || fi == FTS_F) &&
remove(ftsent->fts_path) < 0) {
- *ret = (struct http_ret) {
- KHTTP_500,
- "delete: failed to delete file"
- };
+ http_exit(r, KHTTP_500,
+ "delete: failed to delete file");
goto end;
}
}
} else {
if (remove(path) < 0) {
- *ret = (struct http_ret) {
- KHTTP_500,
- "delete: failed to delete file"
- };
+ http_exit(r, KHTTP_500,
+ "delete: failed to delete file");
goto end;
}
}
@@ -257,10 +235,6 @@ delete_post(struct kreq * r, struct http_ret * ret, struct file * f)
khttp_head(r, kresps[KRESP_LOCATION], "%s", parent->action_url);
http_open(r, KHTTP_303, r->mime);
- *ret = (struct http_ret) {
- KHTTP_303,
- ""
- };
end:
if (parent != NULL)
file_free(parent);
@@ -268,28 +242,21 @@ end:
fts_close(fts);
}
-
-struct http_ret
+void
del(struct kreq * r)
{
char *path;
size_t suffix_len;
struct file *file;
- struct http_ret ret;
file = NULL;
- ret = (struct http_ret) {
- KHTTP_200, ""
- };
/* build file corresponding to request (ie. delete) path */
suffix_len = strlen(r->suffix);
if (suffix_len > 0) {
if (str_concat(&path, r->path, ".", r->suffix, NULL) <= 0) {
- ret = (struct http_ret) {
- KHTTP_404,
- "delete: Unable to build file path"
- };
+ http_exit(r, KHTTP_404,
+ "delete: Unable to build file path");
goto end;
}
} else {
@@ -298,21 +265,17 @@ del(struct kreq * r)
file = file_new(path);
if (file == NULL) {
- ret = (struct http_ret) {
- KHTTP_404,
- "delete: Unable to build data file"
- };
+ http_exit(r, KHTTP_404, "delete: Unable to build data file");
goto end;
}
/* print form or handle submission according to HTTP method */
if (r->method == KMETHOD_POST)
- delete_post(r, &ret, file);
+ delete_post(r, file);
else
- delete_get(r, &ret, file);
+ delete_get(r, file);
end:
if (suffix_len > 0)
free(path);
file_free(file);
- return ret;
}