static const char ** fsnames;
static int numFilesystems;
-static int getFilesystemList(void);
-
#if HAVE_MNTCTL
/* modeled after sample code from Till Bubeck */
*/
int mntctl(int command, int size, char *buffer);
-static int getFilesystemList(void) {
+static int getFilesystemList(void)
+{
int size;
void * buf;
struct vmount * vm;
return 0;
}
#else
-static int getFilesystemList(void) {
+static int getFilesystemList(void)
+{
int numAlloced = 10;
int num = 0;
struct stat sb;
}
#endif
-int rpmGetFilesystemList(const char *** listptr, int * num) {
+int rpmGetFilesystemList(const char *** listptr, int * num)
+{
if (!fsnames)
if (getFilesystemList())
return 1;
}
int rpmGetFilesystemUsage(const char ** fileList, int_32 * fssizes, int numFiles,
- uint_32 ** usagesPtr, int flags) {
+ uint_32 ** usagesPtr, int flags)
+{
int_32 * usages;
int i, len, j;
char * buf, * dirName;
char * chptr;
int maxLen;
- char * lastDir, * sourceDir;
+ char * lastDir;
+ const char * sourceDir;
int lastfs = 0;
int lastDev = -1; /* I hope nobody uses -1 for a st_dev */
struct stat sb;
usages = calloc(numFilesystems, sizeof(usages));
- maxLen = 0;
+ sourceDir = rpmGetPath("", "/%{_sourcedir}", NULL);
+
+ maxLen = strlen(sourceDir);
for (i = 0; i < numFiles; i++) {
len = strlen(fileList[i]);
if (maxLen < len) maxLen = len;
dirName = alloca(maxLen + 1);
*lastDir = '\0';
- sourceDir = rpmGetPath("", "/%{_sourcedir}", NULL);
-
/* cut off last filename */
for (i = 0; i < numFiles; i++) {
if (*fileList[i] == '/') {
*chptr-- = '\0';
} else {
/* this should only happen for source packages (gulp) */
- buf = sourceDir;
+ strcpy(buf, sourceDir);
}
if (strcmp(lastDir, buf)) {
usages[lastfs] += fssizes[i];
}
- if (sourceDir) free(sourceDir);
+ if (sourceDir) xfree(sourceDir);
*usagesPtr = usages;