#ifndef _FILE_SYS_H_ #define _FILE_SYS_H_ # include "Jam.hpp" /* * Copyright 1993, 1995 Christopher Seiwald. * * This file is part of Jam - see jam.c for Copyright information. */ /* * filesys.h - FILENAME struct and OS specific file routines */ /* * FILENAME - a name of a file, broken into dir/base/suffix(member) * * is salt to distinguish between targets that otherwise would * have the same name: it never appears in the bound name of a target. * (member) is an archive member name: the syntax is arbitrary, but must * agree in file_parse(), file_build() and the Jambase. * * On VMS, we keep track of whether the original path was a directory * (without a file), so that $(VAR:D) can climb to the parent. */ typedef struct _filename FILENAME; typedef struct _filepart FILEPART; struct _filepart { const char *ptr; int len; }; struct _filename { FILEPART part[6]; # ifdef OS_VMS int parent; # endif # define f_grist part[0] # define f_root part[1] # define f_dir part[2] # define f_base part[3] # define f_suffix part[4] # define f_member part[5] } ; /** This function doesn't have "const char* file" because the filename can be modifed as a result of this call, with grist being applied. */ void file_build( FILENAME *f, char *file, const int binding ); void file_parse( const char *file, FILENAME *f ); void file_parent( FILENAME *f ); void file_dirscan( const char *dir, void (*func)( const char *f, const int s, const time_t t ) ); void file_archscan( const char *arch, void (*func)( const char *f, const int s, const time_t t ) ); int file_time( const char *filename, time_t *time ); #endif