Initial commit

This commit is contained in:
2025-11-17 10:28:09 +01:00
parent 7bff81691f
commit 6ee36e26be
391 changed files with 110253 additions and 0 deletions

264
application/source/fileSystem.c Executable file
View File

@@ -0,0 +1,264 @@
#include <http.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <array.h>
#include <console.h>
#include <char.h>
#include <dirent.h> // "DIR *"
#include <unistd.h> // access
#include <sys/types.h>
#include <sys/stat.h>
extern struct fileSystem * filesystem;
class fileSystem{
void writeFile( char * filepath, char * data )
{
FILE *fp = fopen( filepath, "wb" );
if (fp != NULL)
{
fputs( data, fp );
fclose( fp );
}
}
struct array * readDir( char * filePath ) {
DIR * dir;
struct dirent * entry;
struct array * files = new array();
if ( ( dir = opendir( filePath ) ) == NULL ){
perror("opendir() error");
} else {
while( ( entry = readdir( dir ) ) != NULL ) {
char * filename = (char *)entry->d_name;
if ( strcmp( filename, ".." ) != 0 && strcmp( filename, "." ) != 0 ) {
array_add( files, filename );
//printf("%s\n", filename);
}
}
}
return files;
//closedir(dir);
}
struct text * readFile( char * name, char * mode ) {
char * readMode;
if( mode == "utf8" ) {
readMode = "r";
} else {
readMode = "rb";
}
FILE * file = fopen( name, readMode );
if ( file == NULL ) {
fprintf( stderr, "Error: Can't open file '%s'.", name );
exit( EXIT_FAILURE );
}
fseek( file, 0, SEEK_END );
long length = ftell( file );
//printf("buffer length is '%i' \n\n", length);
fseek( file, 0, SEEK_SET );
char * buffer = malloc( sizeof( char ) * ( length + 1 ) );
fread( buffer, sizeof( char ), length, file );
fclose( file );
if( mode == "utf8" ) {
buffer[ length ] = 0;
}
text * output = new text( "" );
output->length = 0;
output->appendBinary( buffer, length );
return output;
}
char * readBinaryFile( char * name, char * mode, int * size ) {
char * readMode;
if( mode == "utf8" ) {
readMode = "r";
} else {
readMode = "rb";
printf("readmode = rb binary\n\n");
}
FILE * file = fopen( name, readMode );
if ( file == NULL ) {
fprintf( stderr, "Error: Can't open file '%s'.", name );
exit( EXIT_FAILURE );
}
fseek( file, 0, SEEK_END );
long length = ftell( file );
printf("buffer length is '%i' \n\n", length);
fseek( file, 0, SEEK_SET );
char * buffer = malloc( sizeof( char ) * ( length + 1 ) );
buffer[ length ] = '\0';
fread( buffer, sizeof( char ), length, file );
fclose( file );
//buffer[ length ] = 0;
*size = length;
printf("strlen: %i \n\n", length);
return buffer;
}
int ensureDirectory( char * path ) {
char * pathCopy = path->copy();
struct array * parts = pathCopy->split( "/" );
int count = parts->length( );
for ( int i = 1; i < count; ++i )
{
struct array * tempParts = pathCopy->split( "/" );
for ( int j = 0; j < count-i-1; ++j )
{
tempParts->pop();
}
char * tempPath = tempParts->join( "/" );
if( this->exists( tempPath ) ) {
} else {
this->makeDirectory( tempPath );
}
}
return 1;
}
int makeDirectory( char * path ) {
if ( this->exists( path ) == NULL ) {
mkdir( path, 0700 );
}
return 1;
}
int exists( char * path ) {
if ( access( path, F_OK ) == 0 ) {
return 1;
} else {
return 0;
}
}
int isDirectory( char * path ) {
struct stat path_stat;
stat( path, & path_stat );
if( S_ISREG( path_stat.st_mode ) ) {
return 0;
} else {
return 1;
}
}
}