-
Notifications
You must be signed in to change notification settings - Fork 1
/
files.c
119 lines (83 loc) · 2.48 KB
/
files.c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
/* ************************************************************************
*
* functions for file specific data management
*
* (c) 2015 by Markus Reschke
*
* ************************************************************************ */
/*
* local constants
*/
#define FILES_C
/*
* include header files
*/
/* local header files */
#include "common.h" /* common stuff */
#include "variables.h" /* global variables */
#include "functions.h" /* external functions */
/* ************************************************************************
* file data (linked list)
* ************************************************************************ */
/*
* free list of file elements
*/
void FreeFileList(File_Type *List)
{
File_Type *Next;
/* sanity check */
if (List == NULL) return;
while (List)
{
Next = List->Next; /* save pointer to next element */
/* free data */
if (List->Name) free(List->Name);
/* free structure */
free(List);
List = Next; /* move to next element */
}
}
/*
* create and add new file element to list
*
* returns:
* - 1 on success
* - 0 on error
*/
_Bool AddFileElement(char *Name, time_t Time)
{
_Bool Flag = False; /* return value */
File_Type *Element; /* new element */
/* sanity check */
if (Name == NULL) return Flag;
Element = malloc(sizeof(File_Type)); /* allocate memory */
if (Element) /* success */
{
/* set defaults */
Element->Flags = FILE_NONE;
Element->Next = NULL;
/* copy data */
Element->Name = CopyString(Name);
Element->Time = Time;
/* add new element to list */
if (Env->LastFile) Env->LastFile->Next = Element; /* just link */
else Env->FileList = Element; /* start list */
Env->LastFile = Element; /* save new list end */
Flag = True; /* signal success */
}
else /* error */
{
Log(L_ERR, "Couldn't allocate memory!");
}
return Flag;
}
/* ************************************************************************
* clean-up of local constants
* ************************************************************************ */
/*
* undo local constants
*/
#undef FILES_C
/* ************************************************************************
* EOF
* ************************************************************************ */