#include <assert.h>
#include <errno.h>
+#include <linux/limits.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
struct _PakfireFile {
int nrefs;
- char* name;
+ char name[PATH_MAX];
char type;
ssize_t size;
- char* user;
- char* group;
+ char user[256];
+ char group[256];
mode_t mode;
time_t time;
}
static void pakfire_file_free(PakfireFile file) {
- if (file->name)
- free(file->name);
- if (file->user)
- free(file->user);
- if (file->group)
- free(file->group);
if (file->chksum)
free(file->chksum);
}
PAKFIRE_EXPORT void pakfire_file_set_name(PakfireFile file, const char* name) {
- if (file->name)
- free(file->name);
-
- if (*name == '/') {
- file->name = strdup(name);
- } else {
- asprintf(&file->name, "/%s", name);
- }
+ snprintf(file->name, sizeof(file->name) - 1, "%s", name);
}
PAKFIRE_EXPORT char* pakfire_file_get_dirname(PakfireFile file) {
}
PAKFIRE_EXPORT void pakfire_file_set_user(PakfireFile file, const char* user) {
- if (file->user) {
- free(file->user);
- file->user = NULL;
- }
-
- if (user)
- file->user = strdup(user);
+ snprintf(file->user, sizeof(file->user) - 1, "%s", user);
}
PAKFIRE_EXPORT const char* pakfire_file_get_group(PakfireFile file) {
}
PAKFIRE_EXPORT void pakfire_file_set_group(PakfireFile file, const char* group) {
- if (file->group) {
- free(file->group);
- file->group = NULL;
- }
-
- if (group)
- file->group = strdup(group);
+ snprintf(file->group, sizeof(file->group) - 1, "%s", group);
}
PAKFIRE_EXPORT mode_t pakfire_file_get_mode(PakfireFile file) {