return 0;
}
+PAKFIRE_EXPORT int pakfire_file_copy_stat(PakfireFile file, struct stat* stat) {
+ if (!stat)
+ return EINVAL;
+
+ // Set type
+ switch (stat->st_mode & S_IFMT) {
+ case S_IFREG:
+ pakfire_file_set_type(file, REGTYPE);
+ break;
+
+ case S_IFDIR:
+ pakfire_file_set_type(file, DIRTYPE);
+ break;
+
+ case S_IFLNK:
+ pakfire_file_set_type(file, SYMTYPE);
+ break;
+
+ case S_IFBLK:
+ pakfire_file_set_type(file, BLKTYPE);
+ break;
+
+ case S_IFCHR:
+ pakfire_file_set_type(file, CHRTYPE);
+ break;
+
+ case S_IFIFO:
+ pakfire_file_set_type(file, FIFOTYPE);
+ break;
+ }
+
+ // Set mode
+ pakfire_file_set_mode(file, stat->st_mode);
+
+ // Set size
+ pakfire_file_set_size(file, stat->st_size);
+
+ // Set user
+ // XXX
+ pakfire_file_set_user(file, "root");
+ pakfire_file_set_group(file, "root");
+
+ // Set time
+ pakfire_file_set_time(file, stat->st_ctime);
+
+ return 0;
+}
+
static void pakfire_file_free(PakfireFile file) {
if (file->name)
free(file->name);
#define PAKFIRE_FILE_H
#include <sys/types.h>
+#include <sys/stat.h>
#include <time.h>
#include <unistd.h>
int pakfire_file_cmp(PakfireFile file1, PakfireFile file2);
void pakfire_file_sprintf(PakfireFile file, char* str, size_t len);
+int pakfire_file_copy_stat(PakfireFile file, struct stat* stat);
+
const char* pakfire_file_get_name(PakfireFile file);
void pakfire_file_set_name(PakfireFile file, const char* name);
char* pakfire_file_get_dirname(PakfireFile file);