1 /* 2 * diskspace.h 3 * 4 * Copyright (c) 2010-2018 Pacman Development Team <pacman-dev@archlinux.org> 5 * 6 * This program is free software; you can redistribute it and/or modify 7 * it under the terms of the GNU General Public License as published by 8 * the Free Software Foundation; either version 2 of the License, or 9 * (at your option) any later version. 10 * 11 * This program is distributed in the hope that it will be useful, 12 * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 * GNU General Public License for more details. 15 * 16 * You should have received a copy of the GNU General Public License 17 * along with this program. If not, see <http://www.gnu.org/licenses/>. 18 */ 19 20 #ifndef ALPM_DISKSPACE_H 21 #define ALPM_DISKSPACE_H 22 23 #if defined(HAVE_SYS_MOUNT_H) 24 #include <sys/mount.h> 25 #endif 26 #if defined(HAVE_SYS_STATVFS_H) 27 #include <sys/statvfs.h> 28 #endif 29 #if defined(HAVE_SYS_TYPES_H) 30 #include <sys/types.h> 31 #endif 32 33 #include "alpm.h" 34 35 enum mount_used_level { 36 USED_REMOVE = 1, 37 USED_INSTALL = (1 << 1), 38 }; 39 40 enum mount_fsinfo { 41 MOUNT_FSINFO_UNLOADED = 0, 42 MOUNT_FSINFO_LOADED, 43 MOUNT_FSINFO_FAIL, 44 }; 45 46 typedef struct __alpm_mountpoint_t { 47 /* mount point information */ 48 char *mount_dir; 49 size_t mount_dir_len; 50 /* storage for additional disk usage calculations */ 51 blkcnt_t blocks_needed; 52 blkcnt_t max_blocks_needed; 53 enum mount_used_level used; 54 int read_only; 55 enum mount_fsinfo fsinfo_loaded; 56 FSSTATSTYPE fsp; 57 } alpm_mountpoint_t; 58 59 int _alpm_check_diskspace(alpm_handle_t *handle); 60 int _alpm_check_downloadspace(alpm_handle_t *handle, const char *cachedir, 61 size_t num_files, off_t *file_sizes); 62 63 #endif /* ALPM_DISKSPACE_H */ 64