71 lines
1.6 KiB
C
71 lines
1.6 KiB
C
// SPDX-License-Identifier: MIT
|
|
// Copyright (c) 2014-2021 Valeriano Alfonso Rodriguez
|
|
|
|
#ifndef _FILENODE_H_
|
|
#define _FILENODE_H_
|
|
|
|
#include "fileutil.h"
|
|
|
|
#define FileNode_Filename "nodesFile.fs"
|
|
|
|
#define FileNode_Version 5
|
|
|
|
#define FileFlag_Root 1
|
|
#define FileFlag_Normal 2
|
|
#define FileFlag_Directory 4
|
|
#define FileFlag_HasSize 8
|
|
#define FileFlag_HasTime 16
|
|
#define FileFlag_HasCRC 32
|
|
#define FileFlag_PlaceHolder 512
|
|
#define FileFlag_MarkerForReview 1024
|
|
|
|
typedef enum EFileStatus {
|
|
FileStatus_None,
|
|
FileStatus_New,
|
|
FileStatus_Modified,
|
|
FileStatus_Deleted,
|
|
FileStatus_Undeleted
|
|
} FileStatus;
|
|
|
|
typedef struct TFileNode TFileNode, *FileNode;
|
|
struct TFileNode {
|
|
char name[MaxFilename];
|
|
int flags;
|
|
FileStatus status;
|
|
|
|
long long size;
|
|
unsigned long crc;
|
|
FileTime fileTime;
|
|
|
|
FileNode child;
|
|
int childCount;
|
|
|
|
FileNode next;
|
|
FileNode parent;
|
|
};
|
|
|
|
FileNode FileNode_Create();
|
|
FileNode FileNode_Copy(FileNode fileNode);
|
|
void FileNode_Delete(FileNode fileNode);
|
|
void FileNode_AddChild(FileNode file, FileNode file2);
|
|
FileNode FileNode_GetRoot(FileNode fileNode);
|
|
|
|
char *FileNode_GetFullPath(FileNode fileNode, char *basePath, char *path);
|
|
|
|
void FileNode_LoadSize(FileNode fileNode, char *file);
|
|
void FileNode_LoadTime(FileNode fileNode, char *file);
|
|
void FileNode_LoadSizeAndTime(FileNode fileNode, char *file);
|
|
void FileNode_LoadCRC(FileNode fileNode, char *file);
|
|
|
|
void FileNode_Save(FileNode fileNode, char *fichero);
|
|
FileNode FileNode_Load(char *fichero);
|
|
|
|
void FileNode_PrintNode(FileNode fileNode);
|
|
void FileNode_Print(FileNode fileNode);
|
|
|
|
FileNode FileNode_Build(char *path);
|
|
|
|
FileNode FileNode_Refresh(FileNode file, char *path);
|
|
|
|
#endif
|