39
39
#include < stdint.h>
40
40
#include < sys/types.h>
41
41
#include < config_csync.h>
42
+ #include < memory>
42
43
#include < QByteArray>
43
44
44
45
enum csync_status_codes_e {
@@ -54,7 +55,6 @@ enum csync_status_codes_e {
54
55
CSYNC_STATUS_TIMESKEW, /* OBSOLETE */
55
56
CSYNC_STATUS_FILESYSTEM_UNKNOWN, /* UNUSED */
56
57
CSYNC_STATUS_TREE_ERROR, /* csync trees could not be created */
57
- CSYNC_STATUS_MEMORY_ERROR , /* not enough memory problem */
58
58
CSYNC_STATUS_PARAM_ERROR, /* parameter is zero where not expected */
59
59
CSYNC_STATUS_UPDATE_ERROR, /* general update or discovery error */
60
60
CSYNC_STATUS_RECONCILE_ERROR, /* general reconcile error */
@@ -150,82 +150,6 @@ enum csync_ftw_type_e {
150
150
// currently specified at https://github.com/owncloud/core/issues/8322 are 9 to 10
151
151
#define REMOTE_PERM_BUF_SIZE 15
152
152
153
- typedef struct csync_vio_file_stat_s csync_vio_file_stat_t ;
154
-
155
- enum csync_vio_file_flags_e {
156
- CSYNC_VIO_FILE_FLAGS_NONE = 0 ,
157
- CSYNC_VIO_FILE_FLAGS_SYMLINK = 1 << 0 ,
158
- CSYNC_VIO_FILE_FLAGS_HIDDEN = 1 << 1
159
- };
160
-
161
- enum csync_vio_file_type_e {
162
- CSYNC_VIO_FILE_TYPE_UNKNOWN ,
163
- CSYNC_VIO_FILE_TYPE_REGULAR ,
164
- CSYNC_VIO_FILE_TYPE_DIRECTORY ,
165
- CSYNC_VIO_FILE_TYPE_FIFO ,
166
- CSYNC_VIO_FILE_TYPE_SOCKET ,
167
- CSYNC_VIO_FILE_TYPE_CHARACTER_DEVICE ,
168
- CSYNC_VIO_FILE_TYPE_BLOCK_DEVICE ,
169
- CSYNC_VIO_FILE_TYPE_SYMBOLIC_LINK
170
- };
171
-
172
- enum csync_vio_file_stat_fields_e {
173
- CSYNC_VIO_FILE_STAT_FIELDS_NONE = 0 ,
174
- CSYNC_VIO_FILE_STAT_FIELDS_TYPE = 1 << 0 ,
175
- CSYNC_VIO_FILE_STAT_FIELDS_MODE = 1 << 1 , // local POSIX mode
176
- CSYNC_VIO_FILE_STAT_FIELDS_FLAGS = 1 << 2 ,
177
- // CSYNC_VIO_FILE_STAT_FIELDS_DEVICE = 1 << 3,
178
- CSYNC_VIO_FILE_STAT_FIELDS_INODE = 1 << 4 ,
179
- // CSYNC_VIO_FILE_STAT_FIELDS_LINK_COUNT = 1 << 5,
180
- CSYNC_VIO_FILE_STAT_FIELDS_SIZE = 1 << 6 ,
181
- // CSYNC_VIO_FILE_STAT_FIELDS_BLOCK_COUNT = 1 << 7, /* will be removed */
182
- // CSYNC_VIO_FILE_STAT_FIELDS_BLOCK_SIZE = 1 << 8, /* will be removed */
183
- CSYNC_VIO_FILE_STAT_FIELDS_ATIME = 1 << 9 ,
184
- CSYNC_VIO_FILE_STAT_FIELDS_MTIME = 1 << 10 ,
185
- CSYNC_VIO_FILE_STAT_FIELDS_CTIME = 1 << 11 ,
186
- // CSYNC_VIO_FILE_STAT_FIELDS_SYMLINK_NAME = 1 << 12,
187
- // CSYNC_VIO_FILE_STAT_FIELDS_CHECKSUM = 1 << 13,
188
- // CSYNC_VIO_FILE_STAT_FIELDS_ACL = 1 << 14,
189
- // CSYNC_VIO_FILE_STAT_FIELDS_UID = 1 << 15,
190
- // CSYNC_VIO_FILE_STAT_FIELDS_GID = 1 << 16,
191
- CSYNC_VIO_FILE_STAT_FIELDS_ETAG = 1 << 17 ,
192
- CSYNC_VIO_FILE_STAT_FIELDS_FILE_ID = 1 << 18 ,
193
- CSYNC_VIO_FILE_STAT_FIELDS_DIRECTDOWNLOADURL = 1 << 19 ,
194
- CSYNC_VIO_FILE_STAT_FIELDS_DIRECTDOWNLOADCOOKIES = 1 << 20 ,
195
- CSYNC_VIO_FILE_STAT_FIELDS_PERM = 1 << 21 // remote oC perm
196
-
197
- };
198
-
199
-
200
- struct csync_vio_file_stat_s {
201
- char * name ;
202
- char * etag ; // FIXME: Should this be inlined like file_id and perm?
203
- char file_id [FILE_ID_BUF_SIZE + 1 ];
204
- char * directDownloadUrl ;
205
- char * directDownloadCookies ;
206
- char remotePerm [REMOTE_PERM_BUF_SIZE + 1 ];
207
-
208
- time_t atime ;
209
- time_t mtime ;
210
- time_t ctime ;
211
- int64_t size ;
212
-
213
- mode_t mode ;
214
-
215
- uint64_t inode ;
216
-
217
- int fields ; // actually enum csync_vio_file_stat_fields_e fields;
218
- enum csync_vio_file_type_e type ;
219
-
220
- int flags ;
221
-
222
- char * original_name ; // only set if locale conversion fails
223
-
224
- // For remote file stats: the highest quality checksum the server provided
225
- // in the "SHA1:324315da2143" form.
226
- char * checksumHeader ;
227
- };
228
-
229
153
typedef struct csync_file_stat_s csync_file_stat_t ;
230
154
231
155
struct csync_file_stat_s {
@@ -236,6 +160,7 @@ struct csync_file_stat_s {
236
160
enum csync_ftw_type_e type : 4 ;
237
161
bool child_modified : 1 ;
238
162
bool has_ignored_files : 1 ; /* specify that a directory, or child directory contains ignored files */
163
+ bool is_hidden : 1 ; // Not saved in the DB, only used during discovery for local files.
239
164
240
165
QByteArray path;
241
166
QByteArray rename_path;
@@ -244,6 +169,7 @@ struct csync_file_stat_s {
244
169
QByteArray directDownloadUrl;
245
170
QByteArray directDownloadCookies;
246
171
QByteArray remotePerm;
172
+ QByteArray original_path; // only set if locale conversion fails
247
173
248
174
// In the local tree, this can hold a checksum and its type if it is
249
175
// computed during discovery for some reason.
@@ -263,21 +189,12 @@ struct csync_file_stat_s {
263
189
, type(CSYNC_FTW_TYPE_SKIP)
264
190
, child_modified(false )
265
191
, has_ignored_files(false )
192
+ , is_hidden(false )
266
193
, error_status(CSYNC_STATUS_OK)
267
194
, instruction(CSYNC_INSTRUCTION_NONE)
268
195
{ }
269
196
};
270
197
271
- csync_vio_file_stat_t OCSYNC_EXPORT * csync_vio_file_stat_new (void );
272
- csync_vio_file_stat_t OCSYNC_EXPORT * csync_vio_file_stat_copy (csync_vio_file_stat_t * file_stat );
273
-
274
- void OCSYNC_EXPORT csync_vio_file_stat_destroy (csync_vio_file_stat_t * fstat );
275
-
276
- void OCSYNC_EXPORT csync_vio_file_stat_set_file_id ( csync_vio_file_stat_t * dst , const char * src );
277
-
278
- void OCSYNC_EXPORT csync_vio_set_file_id (char * dst , const char * src );
279
-
280
-
281
198
/* *
282
199
* CSync File Traversal structure.
283
200
*
@@ -338,7 +255,7 @@ typedef void (*csync_update_callback) (bool local,
338
255
typedef void csync_vio_handle_t ;
339
256
typedef csync_vio_handle_t * (*csync_vio_opendir_hook) (const char *url,
340
257
void *userdata);
341
- typedef csync_vio_file_stat_t * (* csync_vio_readdir_hook ) (csync_vio_handle_t * dhhandle ,
258
+ typedef std::unique_ptr< csync_file_stat_t > (*csync_vio_readdir_hook) (csync_vio_handle_t *dhhandle,
342
259
void *userdata);
343
260
typedef void (*csync_vio_closedir_hook) (csync_vio_handle_t *dhhandle,
344
261
void *userdata);
@@ -539,7 +456,6 @@ void OCSYNC_EXPORT csync_resume(CSYNC *ctx);
539
456
*/
540
457
int OCSYNC_EXPORT csync_abort_requested (CSYNC *ctx);
541
458
542
- char OCSYNC_EXPORT * csync_normalize_etag (const char * );
543
459
time_t OCSYNC_EXPORT oc_httpdate_parse ( const char *date );
544
460
545
461
/* *
0 commit comments