Something went wrong on our end
-
Jonathan Hanks authoredJonathan Hanks authored
Code owners
Assign users and groups as approvers for specific file changes. Learn more.
raw_filesys.hh 1.29 KiB
#ifndef RAW_FILESYS_H
#define RAW_FILESYS_H
#include "config.h"
#include "debug.h"
/*
Raw filesystem map class
Rudimentary class now, just stores the location of the files (directory)
*/
class raw_filesys_c
{
public:
enum
{
filename_max = FILENAME_MAX
};
private:
pthread_mutex_t bm;
void
lock( void )
{
pthread_mutex_lock( &bm );
}
void
unlock( void )
{
pthread_mutex_unlock( &bm );
}
class locker;
friend class raw_filesys_c::locker;
class locker
{
raw_filesys_c* dp;
public:
locker( raw_filesys_c* objp )
{
( dp = objp )->lock( );
}
~locker( )
{
dp->unlock( );
}
};
// Filename path
char path[ filename_max + 1 ];
public:
~raw_filesys_c( )
{
pthread_mutex_destroy( &bm );
}
raw_filesys_c( )
{
pthread_mutex_init( &bm, NULL );
path[ 0 ] = '\000';
}
// Set the bits to construct the filename from: path
int
set_filename_attrs( char* pth )
{
locker mon( this );
if ( strlen( pth ) > filename_max )
return -1;
strcpy( path, pth );
return 0;
}
char*
get_path( )
{
return path;
}
};
#endif