mirror of
https://github.com/moparisthebest/pacman
synced 2024-08-13 17:03:46 -04:00
942bb9e64a
We did this in some but not all cases, assuming the 0 value coming out of libarchive would not be a problem. However, this does not work for "fake" filesystems such as rpc_pipefs, which reports a free block and total block count of zero. Fix this by not ever counting symlinks or directories, and adding a note explaining that if we someday do count directories, their size needs to be attributed to the proper place. This patch also includes a few cleanups/performance tweaks- avoid calling strlen() on the mountpoint directory string as much by storing this size in our mountpoint struct, and push the snprintf() call up to the calculate functions since we were already doing it here in the remove case. Signed-off-by: Dan McGee <dan@archlinux.org>
48 lines
1.3 KiB
C
48 lines
1.3 KiB
C
/*
|
|
* diskspace.h
|
|
*
|
|
* Copyright (c) 2010-2011 Pacman Development Team <pacman-dev@archlinux.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_DISKSPACE_H
|
|
#define _ALPM_DISKSPACE_H
|
|
|
|
#if defined(HAVE_SYS_MOUNT_H)
|
|
#include <sys/mount.h>
|
|
#endif
|
|
#if defined(HAVE_SYS_STATVFS_H)
|
|
#include <sys/statvfs.h>
|
|
#endif
|
|
|
|
#include "alpm.h"
|
|
|
|
typedef struct __alpm_mountpoint_t {
|
|
/* mount point information */
|
|
char *mount_dir;
|
|
size_t mount_dir_len;
|
|
/* storage for additional disk usage calculations */
|
|
long blocks_needed;
|
|
long max_blocks_needed;
|
|
int used;
|
|
FSSTATSTYPE fsp;
|
|
} alpm_mountpoint_t;
|
|
|
|
int _alpm_check_diskspace(pmtrans_t *trans, pmdb_t *db_local);
|
|
|
|
#endif /* _ALPM_DISKSPACE_H */
|
|
|
|
/* vim: set ts=2 sw=2 noet: */
|