1
1
#include <override_fsattrs.h>
2
2
#include <platform.h>
3
- #include <fsattrs.h>
4
3
#include <logging.h>
5
4
#include <stdlib.h>
6
5
#include <files_copy.h>
@@ -89,36 +88,33 @@ bool OverrideImmutableCommit(
89
88
return OverrideImmutableRename (copy , orig , override );
90
89
}
91
90
92
- static void TemporarilyClearImmutableBit (
93
- const char * filename ,
94
- bool override ,
95
- FSAttrsResult * res ,
96
- bool * is_immutable )
91
+ FSAttrsResult TemporarilyClearImmutableBit (
92
+ const char * filename , bool override , bool * was_immutable )
97
93
{
98
94
if (!override )
99
95
{
100
- return ;
96
+ return FS_ATTRS_FAILURE ;
101
97
}
102
98
103
- * res = FSAttrsGetImmutableFlag (filename , is_immutable );
104
- if (* res == FS_ATTRS_SUCCESS )
99
+ FSAttrsResult res = FSAttrsGetImmutableFlag (filename , was_immutable );
100
+ if (res == FS_ATTRS_SUCCESS )
105
101
{
106
- if (* is_immutable )
102
+ if (* was_immutable )
107
103
{
108
- * res = FSAttrsUpdateImmutableFlag (filename , false);
109
- if (* res == FS_ATTRS_SUCCESS )
104
+ res = FSAttrsUpdateImmutableFlag (filename , false);
105
+ if (res == FS_ATTRS_SUCCESS )
110
106
{
111
107
Log (LOG_LEVEL_VERBOSE ,
112
108
"Temporarily cleared immutable bit for file '%s'" ,
113
109
filename );
114
110
}
115
111
else
116
112
{
117
- Log ((* res == FS_ATTRS_FAILURE ) ? LOG_LEVEL_ERR
118
- : LOG_LEVEL_VERBOSE ,
113
+ Log ((res == FS_ATTRS_FAILURE ) ? LOG_LEVEL_ERR
114
+ : LOG_LEVEL_VERBOSE ,
119
115
"Failed to temporarily clear immutable bit for file '%s': %s" ,
120
116
filename ,
121
- FSAttrsErrorCodeToString (* res ));
117
+ FSAttrsErrorCodeToString (res ));
122
118
}
123
119
}
124
120
else
@@ -130,22 +126,24 @@ static void TemporarilyClearImmutableBit(
130
126
}
131
127
else
132
128
{
133
- Log ((* res == FS_ATTRS_FAILURE ) ? LOG_LEVEL_ERR : LOG_LEVEL_VERBOSE ,
129
+ Log ((res == FS_ATTRS_FAILURE ) ? LOG_LEVEL_ERR : LOG_LEVEL_VERBOSE ,
134
130
"Failed to get immutable bit from file '%s': %s" ,
135
131
filename ,
136
- FSAttrsErrorCodeToString (* res ));
132
+ FSAttrsErrorCodeToString (res ));
137
133
}
134
+
135
+ return res ;
138
136
}
139
137
140
- static void ResetTemporarilyClearedImmutableBit (
141
- const char * filename , bool override , FSAttrsResult res , bool is_immutable )
138
+ void ResetTemporarilyClearedImmutableBit (
139
+ const char * filename , bool override , FSAttrsResult res , bool was_immutable )
142
140
{
143
141
if (!override )
144
142
{
145
143
return ;
146
144
}
147
145
148
- if ((res == FS_ATTRS_SUCCESS ) && is_immutable )
146
+ if ((res == FS_ATTRS_SUCCESS ) && was_immutable )
149
147
{
150
148
res = FSAttrsUpdateImmutableFlag (filename , true);
151
149
if (res == FS_ATTRS_SUCCESS )
@@ -170,10 +168,9 @@ bool OverrideImmutableRename(
170
168
assert (old_filename != NULL );
171
169
assert (new_filename != NULL );
172
170
173
- FSAttrsResult res ;
174
171
bool is_immutable ;
175
-
176
- TemporarilyClearImmutableBit (new_filename , override , & res , & is_immutable );
172
+ FSAttrsResult res =
173
+ TemporarilyClearImmutableBit (new_filename , override , & is_immutable );
177
174
178
175
if (rename (old_filename , new_filename ) == -1 )
179
176
{
@@ -195,10 +192,8 @@ bool OverrideImmutableDelete(const char *filename, bool override)
195
192
{
196
193
assert (filename != NULL );
197
194
198
- FSAttrsResult res ;
199
195
bool is_immutable = false;
200
-
201
- TemporarilyClearImmutableBit (filename , override , & res , & is_immutable );
196
+ TemporarilyClearImmutableBit (filename , override , & is_immutable );
202
197
203
198
return unlink (filename ) == 0 ;
204
199
}
@@ -208,10 +203,9 @@ bool OverrideImmutableUtime(
208
203
{
209
204
assert (filename != NULL );
210
205
211
- FSAttrsResult res ;
212
206
bool is_immutable ;
213
-
214
- TemporarilyClearImmutableBit (filename , override , & res , & is_immutable );
207
+ FSAttrsResult res =
208
+ TemporarilyClearImmutableBit (filename , override , & is_immutable );
215
209
216
210
int ret = utime (filename , times );
217
211
if (ret == -1 )
0 commit comments