dav/error.c

Sun, 17 Dec 2023 14:25:34 +0100

author
Mike Becker <universe@uap-core.de>
date
Sun, 17 Dec 2023 14:25:34 +0100
changeset 797
edbb20b1438d
parent 783
36a7f2ea7d12
permissions
-rw-r--r--

[Makefile] fix missing rules preventing dry-runs

We have to support dry-runs, because many IDEs are using
dry-runs to collect build information.

Some rules have dependencies that expect certain files or
directories to be just present. We added respective build
rules which invoke the test program. This way, the behavior
when running make normally is exactly the same, but dry-runs
are also not failing now.

191
0e45b04236a7 more specific error messages in dav-sync
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
1 /*
0e45b04236a7 more specific error messages in dav-sync
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
2 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
0e45b04236a7 more specific error messages in dav-sync
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
3 *
364
3769ba002fd1 updates copyright date
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 238
diff changeset
4 * Copyright 2018 Olaf Wintermann. All rights reserved.
191
0e45b04236a7 more specific error messages in dav-sync
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
5 *
0e45b04236a7 more specific error messages in dav-sync
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
6 * Redistribution and use in source and binary forms, with or without
0e45b04236a7 more specific error messages in dav-sync
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
7 * modification, are permitted provided that the following conditions are met:
0e45b04236a7 more specific error messages in dav-sync
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
8 *
0e45b04236a7 more specific error messages in dav-sync
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
9 * 1. Redistributions of source code must retain the above copyright
0e45b04236a7 more specific error messages in dav-sync
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
10 * notice, this list of conditions and the following disclaimer.
0e45b04236a7 more specific error messages in dav-sync
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
11 *
0e45b04236a7 more specific error messages in dav-sync
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
12 * 2. Redistributions in binary form must reproduce the above copyright
0e45b04236a7 more specific error messages in dav-sync
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
13 * notice, this list of conditions and the following disclaimer in the
0e45b04236a7 more specific error messages in dav-sync
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
14 * documentation and/or other materials provided with the distribution.
0e45b04236a7 more specific error messages in dav-sync
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
15 *
0e45b04236a7 more specific error messages in dav-sync
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
16 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
0e45b04236a7 more specific error messages in dav-sync
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
17 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
0e45b04236a7 more specific error messages in dav-sync
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
18 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
0e45b04236a7 more specific error messages in dav-sync
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
19 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
0e45b04236a7 more specific error messages in dav-sync
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
20 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
0e45b04236a7 more specific error messages in dav-sync
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
21 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
0e45b04236a7 more specific error messages in dav-sync
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
22 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
0e45b04236a7 more specific error messages in dav-sync
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
23 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
0e45b04236a7 more specific error messages in dav-sync
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
24 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
0e45b04236a7 more specific error messages in dav-sync
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
25 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
0e45b04236a7 more specific error messages in dav-sync
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
26 * POSSIBILITY OF SUCH DAMAGE.
0e45b04236a7 more specific error messages in dav-sync
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
27 */
0e45b04236a7 more specific error messages in dav-sync
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
28
0e45b04236a7 more specific error messages in dav-sync
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
29 #include <stdio.h>
0e45b04236a7 more specific error messages in dav-sync
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
30 #include <stdlib.h>
0e45b04236a7 more specific error messages in dav-sync
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
31
192
d10194a51304 dav-sync prints a small report after successful sync
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 191
diff changeset
32 #include <libidav/utils.h>
191
0e45b04236a7 more specific error messages in dav-sync
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
33
0e45b04236a7 more specific error messages in dav-sync
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
34 #include "error.h"
0e45b04236a7 more specific error messages in dav-sync
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
35
747
efbd59642577 ucx 3 update, basic dav commands work, most stuff is still broken
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 364
diff changeset
36 void print_resource_error(DavSession *sn, const char *path) {
783
36a7f2ea7d12 add error logging
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 747
diff changeset
37 print_resource_error_to_file(stderr, sn, path);
36a7f2ea7d12 add error logging
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 747
diff changeset
38 }
36a7f2ea7d12 add error logging
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 747
diff changeset
39
36a7f2ea7d12 add error logging
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 747
diff changeset
40 void print_resource_error_to_file(FILE *file, DavSession *sn, const char *path) {
191
0e45b04236a7 more specific error messages in dav-sync
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
41 char *res_url = util_concat_path(sn->base_url, path);
0e45b04236a7 more specific error messages in dav-sync
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
42 switch(sn->error) {
0e45b04236a7 more specific error messages in dav-sync
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
43 default: {
783
36a7f2ea7d12 add error logging
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 747
diff changeset
44 fprintf(file, "Operation failed for resource %s.\n", res_url);
191
0e45b04236a7 more specific error messages in dav-sync
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
45 if(sn->errorstr) {
783
36a7f2ea7d12 add error logging
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 747
diff changeset
46 fprintf(file, "%s\n", sn->errorstr);
191
0e45b04236a7 more specific error messages in dav-sync
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
47 }
0e45b04236a7 more specific error messages in dav-sync
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
48 break;
0e45b04236a7 more specific error messages in dav-sync
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
49 }
0e45b04236a7 more specific error messages in dav-sync
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
50 case DAV_NOT_FOUND: {
783
36a7f2ea7d12 add error logging
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 747
diff changeset
51 fprintf(file, "Resource %s not found.\n", res_url);
191
0e45b04236a7 more specific error messages in dav-sync
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
52 break;
0e45b04236a7 more specific error messages in dav-sync
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
53 }
0e45b04236a7 more specific error messages in dav-sync
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
54 case DAV_UNAUTHORIZED: {
783
36a7f2ea7d12 add error logging
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 747
diff changeset
55 fprintf(file, "Authentication required.\n");
191
0e45b04236a7 more specific error messages in dav-sync
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
56 break;
0e45b04236a7 more specific error messages in dav-sync
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
57 }
238
b167226fb804 added support for error codes 407,413,414 and 511
Mike Becker <universe@uap-core.de>
parents: 207
diff changeset
58 case DAV_PROXY_AUTH_REQUIRED: {
783
36a7f2ea7d12 add error logging
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 747
diff changeset
59 fprintf(file, "Proxy authentication required.\n");
238
b167226fb804 added support for error codes 407,413,414 and 511
Mike Becker <universe@uap-core.de>
parents: 207
diff changeset
60 break;
b167226fb804 added support for error codes 407,413,414 and 511
Mike Becker <universe@uap-core.de>
parents: 207
diff changeset
61 }
b167226fb804 added support for error codes 407,413,414 and 511
Mike Becker <universe@uap-core.de>
parents: 207
diff changeset
62 case DAV_NET_AUTH_REQUIRED: {
783
36a7f2ea7d12 add error logging
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 747
diff changeset
63 fprintf(file, "Network authentication required.\n");
238
b167226fb804 added support for error codes 407,413,414 and 511
Mike Becker <universe@uap-core.de>
parents: 207
diff changeset
64 break;
b167226fb804 added support for error codes 407,413,414 and 511
Mike Becker <universe@uap-core.de>
parents: 207
diff changeset
65 }
191
0e45b04236a7 more specific error messages in dav-sync
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
66 case DAV_FORBIDDEN: {
783
36a7f2ea7d12 add error logging
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 747
diff changeset
67 fprintf(file, "Access forbidden.\n");
191
0e45b04236a7 more specific error messages in dav-sync
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
68 break;
0e45b04236a7 more specific error messages in dav-sync
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
69 }
0e45b04236a7 more specific error messages in dav-sync
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
70 case DAV_METHOD_NOT_ALLOWED: {
783
36a7f2ea7d12 add error logging
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 747
diff changeset
71 fprintf(file, "Method not allowed.\n");
192
d10194a51304 dav-sync prints a small report after successful sync
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 191
diff changeset
72 break;
191
0e45b04236a7 more specific error messages in dav-sync
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
73 }
0e45b04236a7 more specific error messages in dav-sync
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
74 case DAV_CONFLICT: {
0e45b04236a7 more specific error messages in dav-sync
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
75 fprintf(
0e45b04236a7 more specific error messages in dav-sync
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
76 stderr,
0e45b04236a7 more specific error messages in dav-sync
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
77 "Missing intermediate collections for resource %s.\n",
0e45b04236a7 more specific error messages in dav-sync
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
78 res_url);
192
d10194a51304 dav-sync prints a small report after successful sync
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 191
diff changeset
79 break;
191
0e45b04236a7 more specific error messages in dav-sync
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
80 }
207
de23f8881e9f fixed hash verification and head requests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 192
diff changeset
81 case DAV_LOCKED: {
de23f8881e9f fixed hash verification and head requests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 192
diff changeset
82 fprintf(
de23f8881e9f fixed hash verification and head requests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 192
diff changeset
83 stderr,
de23f8881e9f fixed hash verification and head requests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 192
diff changeset
84 "Resource is locked.\n");
de23f8881e9f fixed hash verification and head requests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 192
diff changeset
85 break;
de23f8881e9f fixed hash verification and head requests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 192
diff changeset
86 }
191
0e45b04236a7 more specific error messages in dav-sync
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
87 case DAV_UNSUPPORTED_PROTOCOL: {
783
36a7f2ea7d12 add error logging
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 747
diff changeset
88 fprintf(file, "Unsupported protocol.\n");
191
0e45b04236a7 more specific error messages in dav-sync
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
89 if(sn->errorstr) {
783
36a7f2ea7d12 add error logging
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 747
diff changeset
90 fprintf(file, "%s\n", sn->errorstr);
191
0e45b04236a7 more specific error messages in dav-sync
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
91 }
0e45b04236a7 more specific error messages in dav-sync
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
92 break;
0e45b04236a7 more specific error messages in dav-sync
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
93 }
0e45b04236a7 more specific error messages in dav-sync
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
94 case DAV_COULDNT_RESOLVE_PROXY: {
783
36a7f2ea7d12 add error logging
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 747
diff changeset
95 fprintf(file, "Cannot resolve proxy host.\n");
191
0e45b04236a7 more specific error messages in dav-sync
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
96 break;
0e45b04236a7 more specific error messages in dav-sync
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
97 }
0e45b04236a7 more specific error messages in dav-sync
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
98 case DAV_COULDNT_RESOLVE_HOST: {
783
36a7f2ea7d12 add error logging
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 747
diff changeset
99 fprintf(file, "Cannot resolve host name.\n");
191
0e45b04236a7 more specific error messages in dav-sync
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
100 break;
0e45b04236a7 more specific error messages in dav-sync
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
101 }
0e45b04236a7 more specific error messages in dav-sync
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
102 case DAV_COULDNT_CONNECT: {
783
36a7f2ea7d12 add error logging
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 747
diff changeset
103 fprintf(file, "Cannot connect to host.\n");
191
0e45b04236a7 more specific error messages in dav-sync
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
104 break;
0e45b04236a7 more specific error messages in dav-sync
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
105 }
0e45b04236a7 more specific error messages in dav-sync
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
106 case DAV_TIMEOUT: {
783
36a7f2ea7d12 add error logging
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 747
diff changeset
107 fprintf(file, "Operation timed out.\n");
191
0e45b04236a7 more specific error messages in dav-sync
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
108 break;
0e45b04236a7 more specific error messages in dav-sync
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
109 }
0e45b04236a7 more specific error messages in dav-sync
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
110 case DAV_SSL_ERROR: {
783
36a7f2ea7d12 add error logging
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 747
diff changeset
111 fprintf(file, "SSL error.\n");
191
0e45b04236a7 more specific error messages in dav-sync
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
112 if(sn->errorstr) {
783
36a7f2ea7d12 add error logging
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 747
diff changeset
113 fprintf(file, "%s\n", sn->errorstr);
191
0e45b04236a7 more specific error messages in dav-sync
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
114 }
192
d10194a51304 dav-sync prints a small report after successful sync
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 191
diff changeset
115 break;
191
0e45b04236a7 more specific error messages in dav-sync
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
116 }
207
de23f8881e9f fixed hash verification and head requests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 192
diff changeset
117 case DAV_CONTENT_VERIFICATION_ERROR: {
de23f8881e9f fixed hash verification and head requests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 192
diff changeset
118 fprintf(
783
36a7f2ea7d12 add error logging
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 747
diff changeset
119 file,
207
de23f8881e9f fixed hash verification and head requests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 192
diff changeset
120 "Content checksum verification failed for resource %s.\n",
de23f8881e9f fixed hash verification and head requests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 192
diff changeset
121 res_url);
de23f8881e9f fixed hash verification and head requests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 192
diff changeset
122 break;
de23f8881e9f fixed hash verification and head requests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 192
diff changeset
123 }
238
b167226fb804 added support for error codes 407,413,414 and 511
Mike Becker <universe@uap-core.de>
parents: 207
diff changeset
124 case DAV_REQUEST_ENTITY_TOO_LARGE: {
783
36a7f2ea7d12 add error logging
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 747
diff changeset
125 fprintf(file, "Request entity too large.\n");
238
b167226fb804 added support for error codes 407,413,414 and 511
Mike Becker <universe@uap-core.de>
parents: 207
diff changeset
126 break;
b167226fb804 added support for error codes 407,413,414 and 511
Mike Becker <universe@uap-core.de>
parents: 207
diff changeset
127 }
b167226fb804 added support for error codes 407,413,414 and 511
Mike Becker <universe@uap-core.de>
parents: 207
diff changeset
128 case DAV_REQUEST_URL_TOO_LONG: {
783
36a7f2ea7d12 add error logging
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 747
diff changeset
129 fprintf(file, "Request URL too long.\n");
238
b167226fb804 added support for error codes 407,413,414 and 511
Mike Becker <universe@uap-core.de>
parents: 207
diff changeset
130 break;
b167226fb804 added support for error codes 407,413,414 and 511
Mike Becker <universe@uap-core.de>
parents: 207
diff changeset
131 }
191
0e45b04236a7 more specific error messages in dav-sync
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
132 }
0e45b04236a7 more specific error messages in dav-sync
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
133 free(res_url);
0e45b04236a7 more specific error messages in dav-sync
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
134 }

mercurial