Convert-Binary-C
view release on metacpan or search on metacpan
ctlib/fileinfo.c view on Meta::CPAN
#include <sys/stat.h>
/*===== LOCAL INCLUDES =======================================================*/
#include "fileinfo.h"
#include "util/memalloc.h"
/*===== DEFINES ==============================================================*/
/*===== TYPEDEFS =============================================================*/
/*===== STATIC FUNCTION PROTOTYPES ===========================================*/
/*===== EXTERNAL VARIABLES ===================================================*/
/*===== GLOBAL VARIABLES =====================================================*/
/*===== STATIC VARIABLES =====================================================*/
/*===== STATIC FUNCTIONS =====================================================*/
/*===== FUNCTIONS ============================================================*/
/*******************************************************************************
*
* ROUTINE: fileinfo_new
*
* WRITTEN BY: Marcus Holland-Moritz ON: Nov 2002
* CHANGED BY: ON:
*
********************************************************************************
*
* DESCRIPTION: FileInfo object constructor.
*
* ARGUMENTS:
*
* RETURNS:
*
*******************************************************************************/
FileInfo *fileinfo_new( FILE *file, char *name, size_t name_len )
{
FileInfo *pFileInfo;
struct stat buf;
if( name != NULL && name_len == 0 )
name_len = strlen( name );
AllocF( FileInfo *, pFileInfo, offsetof( FileInfo, name ) + name_len + 1 );
if( name != NULL ) {
strncpy( pFileInfo->name, name, name_len );
pFileInfo->name[name_len] = '\0';
}
else
pFileInfo->name[0] = '\0';
if( file != NULL && fstat( fileno( file ), &buf ) == 0 ) {
pFileInfo->valid = 1;
pFileInfo->size = buf.st_size;
pFileInfo->access_time = buf.st_atime;
pFileInfo->modify_time = buf.st_mtime;
pFileInfo->change_time = buf.st_ctime;
}
else {
pFileInfo->valid = 0;
pFileInfo->size = 0;
pFileInfo->access_time = 0;
pFileInfo->modify_time = 0;
pFileInfo->change_time = 0;
}
return pFileInfo;
}
/*******************************************************************************
*
* ROUTINE: fileinfo_delete
*
* WRITTEN BY: Marcus Holland-Moritz ON: Nov 2002
* CHANGED BY: ON:
*
********************************************************************************
*
* DESCRIPTION: FileInfo object destructor.
*
* ARGUMENTS:
*
* RETURNS:
*
*******************************************************************************/
void fileinfo_delete( FileInfo *pFileInfo )
{
if( pFileInfo )
Free( pFileInfo );
}
/*******************************************************************************
*
* ROUTINE: fileinfo_clone
*
* WRITTEN BY: Marcus Holland-Moritz ON: Nov 2002
* CHANGED BY: ON:
*
********************************************************************************
*
* DESCRIPTION: Clone FileInfo object.
*
* ARGUMENTS:
*
* RETURNS:
*
*******************************************************************************/
FileInfo *fileinfo_clone( const FileInfo *pSrc )
{
FileInfo *pDest;
( run in 0.997 second using v1.01-cache-2.11-cpan-39bf76dae61 )