summaryrefslogtreecommitdiff
path: root/jam-files/engine/filesys.h
blob: efc081d120cecff9fa71367931e1561ae4fd279c (plain)
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
/*
 * Copyright 1993-2002 Christopher Seiwald and Perforce Software, Inc.
 *
 * This file is part of Jam - see jam.c for Copyright information.
 */

/*  This file is ALSO:
 *  Copyright 2001-2004 David Abrahams.
 *  Distributed under the Boost Software License, Version 1.0.
 *  (See accompanying file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt)
 */

/*
 * filesys.h - OS specific file routines
 */

#ifndef FILESYS_DWA20011025_H
# define FILESYS_DWA20011025_H

# include "pathsys.h"
#include "hash.h"
#include "lists.h"

typedef void (*scanback)( void *closure, char *file, int found, time_t t );

void file_dirscan( char *dir, scanback func, void *closure );
void file_archscan( char *arch, scanback func, void *closure );

int file_time( char *filename, time_t *time );

void file_build1(PATHNAME *f, string* file) ;
int file_is_file(char* filename);
int file_mkdir(char *pathname);

typedef struct file_info_t file_info_t ;
struct file_info_t
{
    char          * name;
    short           is_file;
    short           is_dir;
    unsigned long   size;
    time_t          time;
    LIST          * files;
};


/* Creates a pointer to information about file 'filename', creating it as
 * necessary. If created, the structure will be default initialized.
 */
file_info_t * file_info( char * filename );

/* Returns information about a file, queries the OS if needed. */
file_info_t * file_query( char * filename );

void file_done();

/* Marks a path/file to be removed when jam exits. */
void file_remove_atexit( const char * path );

#endif