if (state->parsed->write_version == 3) {
u32 = stat_buf.st_uid;
const char *username = simple_archiver_hash_map_get(
- state->users_infos.UidToUname, &u32, sizeof(uint32_t));
+ state->parsed->users_infos.UidToUname, &u32, sizeof(uint32_t));
if (username) {
unsigned long length = strlen(username);
if (length > 0xFFFF) {
u32 = stat_buf.st_gid;
const char *groupname = simple_archiver_hash_map_get(
- state->users_infos.GidToGname, &u32, sizeof(uint32_t));
+ state->parsed->users_infos.GidToGname, &u32, sizeof(uint32_t));
if (groupname) {
unsigned long length = strlen(groupname);
if (length > 0xFFFF) {
state->count = 0;
state->max = 0;
state->digits = 10;
- state->users_infos = simple_archiver_users_get_system_info();
return state;
}
void simple_archiver_free_state(SDArchiverState **state) {
if (state && *state) {
- simple_archiver_users_free_users_infos(&(*state)->users_infos);
free(*state);
*state = NULL;
}
u32 = stat_buf.st_uid;
char *username = simple_archiver_hash_map_get(
- state->users_infos.UidToUname,
+ state->parsed->users_infos.UidToUname,
&u32,
sizeof(uint32_t));
if (username) {
u32 = stat_buf.st_gid;
char *groupname = simple_archiver_hash_map_get(
- state->users_infos.GidToGname,
+ state->parsed->users_infos.GidToGname,
&u32,
sizeof(uint32_t));
if (groupname) {
u32 = file_info_struct->uid;
char *username = simple_archiver_hash_map_get(
- state->users_infos.UidToUname, &u32, sizeof(uint32_t));
+ state->parsed->users_infos.UidToUname, &u32, sizeof(uint32_t));
if (username) {
unsigned long name_length = strlen(username);
if (name_length > 0xFFFF) {
u32 = file_info_struct->gid;
char *groupname = simple_archiver_hash_map_get(
- state->users_infos.GidToGname, &u32, sizeof(uint32_t));
+ state->parsed->users_infos.GidToGname, &u32, sizeof(uint32_t));
if (groupname) {
unsigned long group_length = strlen(groupname);
if (group_length > 0xFFFF) {
#include <string.h>
#include "platforms.h"
+#include "users.h"
#if SIMPLE_ARCHIVER_PLATFORM == SIMPLE_ARCHIVER_PLATFORM_LINUX || \
SIMPLE_ARCHIVER_PLATFORM == SIMPLE_ARCHIVER_PLATFORM_MAC || \
SIMPLE_ARCHIVER_PLATFORM == SIMPLE_ARCHIVER_PLATFORM_COSMOPOLITAN
parsed.gid = 0;
parsed.file_permissions = 0;
parsed.dir_permissions = 0;
+ parsed.users_infos = simple_archiver_users_get_system_info();
return parsed;
}
free(parsed->working_files);
parsed->working_files = NULL;
}
+ simple_archiver_users_free_users_infos(&parsed->users_infos);
}
SDArchiverLinkedList *simple_archiver_parsed_to_filenames(
// Local includes.
#include "data_structures/linked_list.h"
+#include "users.h"
typedef struct SDArchiverParsed {
/// Each bit is a flag.
/// 0b xxx1 xxxx xxxx - other execute
uint_fast16_t file_permissions;
uint_fast16_t dir_permissions;
+ UsersInfos users_infos;
} SDArchiverParsed;
typedef struct SDArchiverFileInfo {