
Multiplexed download requires ability to draw UI for multiple active progress bars. To implement it we use ANSI codes to move cursor up/down and then redraw the required progress bar. `pacman_multibar_ui.active_downloads` field represents the list of active downloads that correspond to progress bars. `struct pacman_progress_bar` is a data structure for a progress bar. In some cases (e.g. database downloads) we want to keep progress bars in order. In some other cases (package downloads) we want to move completed items to the top of the screen. Function `multibar_move_completed_up` allows to configure such behavior. Per discussion in the maillist we do not want to show download progress for signature files. Signed-off-by: Anatol Pomozov <anatol.pomozov@gmail.com> Signed-off-by: Allan McRae <allan@archlinux.org>
63 lines
1.9 KiB
C
63 lines
1.9 KiB
C
/*
|
|
* dload.h
|
|
*
|
|
* Copyright (c) 2006-2020 Pacman Development Team <pacman-dev@archlinux.org>
|
|
* Copyright (c) 2002-2006 by Judd Vinet <jvinet@zeroflux.org>
|
|
*
|
|
* This program is free software; you can redistribute it and/or modify
|
|
* it under the terms of the GNU General Public License as published by
|
|
* the Free Software Foundation; either version 2 of the License, or
|
|
* (at your option) any later version.
|
|
*
|
|
* This program is distributed in the hope that it will be useful,
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
* GNU General Public License for more details.
|
|
*
|
|
* You should have received a copy of the GNU General Public License
|
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
*/
|
|
#ifndef ALPM_DLOAD_H
|
|
#define ALPM_DLOAD_H
|
|
|
|
#include "alpm_list.h"
|
|
#include "alpm.h"
|
|
|
|
struct dload_payload {
|
|
alpm_handle_t *handle;
|
|
const char *tempfile_openmode;
|
|
char *remote_name;
|
|
char *tempfile_name;
|
|
char *destfile_name;
|
|
char *content_disp_name;
|
|
char *fileurl;
|
|
char *filepath; /* download URL path */
|
|
alpm_list_t *servers;
|
|
long respcode;
|
|
off_t initial_size;
|
|
off_t max_size;
|
|
off_t prevprogress;
|
|
int force;
|
|
int allow_resume;
|
|
int errors_ok;
|
|
int unlink_on_fail;
|
|
int trust_remote_name;
|
|
int signature; /* specifies if the payload is a signature file */
|
|
#ifdef HAVE_LIBCURL
|
|
CURL *curl;
|
|
char error_buffer[CURL_ERROR_SIZE];
|
|
FILE *localf; /* temp download file */
|
|
#endif
|
|
};
|
|
|
|
void _alpm_dload_payload_reset(struct dload_payload *payload);
|
|
void _alpm_dload_payload_reset_for_retry(struct dload_payload *payload);
|
|
|
|
int _alpm_download(struct dload_payload *payload, const char *localpath,
|
|
char **final_file, const char **final_url);
|
|
|
|
int _alpm_multi_download(alpm_handle_t *handle,
|
|
alpm_list_t *payloads /* struct dload_payload */,
|
|
const char *localpath);
|
|
|
|
#endif /* ALPM_DLOAD_H */
|