1 /*
2 * progress.c
3 */
4
5 /*
6 * Copyright (C) 2014 Eric Biggers
7 *
8 * This file is free software; you can redistribute it and/or modify it under
9 * the terms of the GNU Lesser General Public License as published by the Free
10 * Software Foundation; either version 3 of the License, or (at your option) any
11 * later version.
12 *
13 * This file is distributed in the hope that it will be useful, but WITHOUT
14 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
15 * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
16 * details.
17 *
18 * You should have received a copy of the GNU Lesser General Public License
19 * along with this file; if not, see http://www.gnu.org/licenses/.
20 */
21
22 #ifdef HAVE_CONFIG_H
23 # include "config.h"
24 #endif
25
26 #include "wimlib/progress.h"
27
28 int
report_error(wimlib_progress_func_t progfunc,void * progctx,int error_code,const tchar * path)29 report_error(wimlib_progress_func_t progfunc,
30 void *progctx, int error_code, const tchar *path)
31 {
32 int ret;
33 union wimlib_progress_info progress;
34 tchar *cookie;
35
36 if (error_code == WIMLIB_ERR_SUCCESS ||
37 error_code == WIMLIB_ERR_ABORTED_BY_PROGRESS ||
38 error_code == WIMLIB_ERR_UNKNOWN_PROGRESS_STATUS)
39 return error_code;
40
41 progress.handle_error.path = path;
42 progress.handle_error.error_code = error_code;
43 progress.handle_error.will_ignore = false;
44
45 cookie = progress_get_win32_path(path);
46
47 ret = call_progress(progfunc, WIMLIB_PROGRESS_MSG_HANDLE_ERROR,
48 &progress, progctx);
49
50 progress_put_win32_path(cookie);
51
52 if (ret)
53 return ret;
54
55 if (!progress.handle_error.will_ignore)
56 return error_code;
57
58 return 0;
59 }
60