]> git.proxmox.com Git - ceph.git/blob - ceph/src/boost/tools/build/src/engine/filesys.h
update sources to ceph Nautilus 14.2.1
[ceph.git] / ceph / src / boost / tools / build / src / engine / filesys.h
1 /*
2 * Copyright 1993-2002 Christopher Seiwald and Perforce Software, Inc.
3 *
4 * This file is part of Jam - see jam.c for Copyright information.
5 */
6
7 /* This file is ALSO:
8 * Copyright 2001-2004 David Abrahams.
9 * Distributed under the Boost Software License, Version 1.0.
10 * (See accompanying file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt)
11 */
12
13 /*
14 * filesys.h - OS specific file routines
15 */
16
17 #ifndef FILESYS_DWA20011025_H
18 #define FILESYS_DWA20011025_H
19
20 #include "hash.h"
21 #include "lists.h"
22 #include "object.h"
23 #include "pathsys.h"
24 #include "timestamp.h"
25
26
27 typedef struct file_info_t
28 {
29 OBJECT * name;
30 char is_file;
31 char is_dir;
32 char exists;
33 timestamp time;
34 LIST * files;
35 } file_info_t;
36
37 typedef struct file_item FILEITEM;
38 struct file_item
39 {
40 file_info_t * value; /* expected to be equvalent with &FILEITEM */
41 FILEITEM * next;
42 };
43
44 typedef struct file_list
45 {
46 FILEITEM * head;
47 FILEITEM * tail;
48 int size;
49 } FILELIST;
50
51 typedef file_info_t * * FILELISTITER; /* also &FILEITEM equivalent */
52
53
54 typedef struct file_archive_info_t
55 {
56 OBJECT * name;
57 file_info_t * file;
58 FILELIST * members;
59 } file_archive_info_t;
60
61
62 typedef void (*archive_scanback)( void * closure, OBJECT * path, LIST * symbols,
63 int found, timestamp const * const );
64 typedef void (*scanback)( void * closure, OBJECT * path, int found,
65 timestamp const * const );
66
67
68 void file_archscan( char const * arch, scanback func, void * closure );
69 void file_archivescan( OBJECT * path, archive_scanback func, void * closure );
70 void file_build1( PATHNAME * const f, string * file ) ;
71 void file_dirscan( OBJECT * dir, scanback func, void * closure );
72 file_info_t * file_info( OBJECT * const path, int * found );
73 int file_is_file( OBJECT * const path );
74 int file_mkdir( char const * const path );
75 file_info_t * file_query( OBJECT * const path );
76 void file_remove_atexit( OBJECT * const path );
77 void file_supported_fmt_resolution( timestamp * const );
78 int file_time( OBJECT * const path, timestamp * const );
79
80
81 /* Archive/library file support */
82 file_archive_info_t * file_archive_info( OBJECT * const path, int * found );
83 file_archive_info_t * file_archive_query( OBJECT * const path );
84
85 /* FILELIST linked-list */
86 FILELIST * filelist_new( OBJECT * path );
87 FILELIST * filelist_push_back( FILELIST * list, OBJECT * path );
88 FILELIST * filelist_push_front( FILELIST * list, OBJECT * path );
89 FILELIST * filelist_pop_front( FILELIST * list );
90 int filelist_length( FILELIST * list );
91 void filelist_free( FILELIST * list );
92
93 FILELISTITER filelist_begin( FILELIST * list );
94 FILELISTITER filelist_end( FILELIST * list );
95 FILELISTITER filelist_next( FILELISTITER it );
96 file_info_t * filelist_item( FILELISTITER it );
97 file_info_t * filelist_front( FILELIST * list );
98 file_info_t * filelist_back( FILELIST * list );
99
100 int filelist_empty( FILELIST * list );
101
102 #define FL0 ((FILELIST *)0)
103
104
105 /* Internal utility worker functions. */
106 void file_query_posix_( file_info_t * const );
107
108 void file_done();
109
110 #endif