|
|
@@ -11,6 +11,10 @@ |
|
|
|
|
|
|
|
#include "xtandard.h" |
|
|
|
|
|
|
|
char * program_name = NULL; |
|
|
|
char * program_mode = NULL; |
|
|
|
char * program_license = NULL; |
|
|
|
|
|
|
|
int argument_count = 0; |
|
|
|
char * * argument_nick = NULL; |
|
|
|
char * * argument_name = NULL; |
|
|
@@ -195,6 +199,107 @@ void argument_delete (void) { |
|
|
|
argument_function = deallocate (argument_function); |
|
|
|
} |
|
|
|
|
|
|
|
int file_open (char * name, int mode) { |
|
|
|
int descriptor = -1; |
|
|
|
|
|
|
|
fatal_failure (name == NULL, "file_open: Failed to open file, name is null pointer."); |
|
|
|
|
|
|
|
descriptor = open (name, mode); |
|
|
|
|
|
|
|
fatal_failure (descriptor == -1, "file_open: Failed to open file, function open returned invalid descriptor."); |
|
|
|
|
|
|
|
return (descriptor); |
|
|
|
} |
|
|
|
|
|
|
|
int file_close (int file) { |
|
|
|
fatal_failure (file == -1, "file_close: Failed to close file, invalid file descriptor."); |
|
|
|
fatal_failure (close (file) == -1, "file_close: Failed to close file, function close returned invalid code."); |
|
|
|
|
|
|
|
return (-1); |
|
|
|
} |
|
|
|
|
|
|
|
void file_read (int file, void * data, int size) { |
|
|
|
fatal_failure (file == -1, "file_read: Failed to read from file, invalid descriptor."); |
|
|
|
fatal_failure (data == NULL, "file_read: Failed to read from file, data is null pointer."); |
|
|
|
fatal_failure (size == 0, "file_read: Failed to read from file, size is zero."); |
|
|
|
|
|
|
|
(void) read (file, data, (unsigned long int) size); |
|
|
|
} |
|
|
|
|
|
|
|
void file_write (int file, void * data, int size) { |
|
|
|
fatal_failure (file == -1, "file_write: Failed to write to file, invalid descriptor."); |
|
|
|
fatal_failure (data == NULL, "file_write: Failed to write to file, data is null pointer."); |
|
|
|
fatal_failure (size == 0, "file_write: Failed to write to file, size is zero."); |
|
|
|
|
|
|
|
(void) write (file, data, (unsigned long int) size); |
|
|
|
} |
|
|
|
|
|
|
|
int file_seek (int file, int whence) { |
|
|
|
fatal_failure (file == -1, "file_seek: Failed to seek in file, invalid descriptor."); |
|
|
|
|
|
|
|
return ((int) lseek (file, 0, whence)); |
|
|
|
} |
|
|
|
|
|
|
|
int file_size (int file) { |
|
|
|
int size = 0; |
|
|
|
|
|
|
|
fatal_failure (file == -1, "file_size: Failed to get size of file, invalid descriptor."); |
|
|
|
|
|
|
|
size = lseek (file, 0, SEEK_END); |
|
|
|
(void) lseek (file, 0, SEEK_SET); |
|
|
|
|
|
|
|
fatal_failure (size == -1, "file_size: Failed to get size of file, invalid file size."); |
|
|
|
|
|
|
|
return (size); |
|
|
|
} |
|
|
|
|
|
|
|
int file_type (char * name) { |
|
|
|
char * file_type_data [FILE_TYPE_COUNT] = { |
|
|
|
".txt", ".s", ".fasm", ".gasm", ".nasm", ".yasm", ".c", ".h", |
|
|
|
".adb", ".ads", ".cpp", ".hpp" |
|
|
|
}; |
|
|
|
|
|
|
|
int type = 0; |
|
|
|
|
|
|
|
while (* name != '.') { |
|
|
|
++name; |
|
|
|
} |
|
|
|
|
|
|
|
for (type = 0; type != FILE_TYPE_COUNT; ++type) { |
|
|
|
if (string_compare (name, file_type_data [type]) != 0) { |
|
|
|
return (type); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
return (-1); |
|
|
|
} |
|
|
|
|
|
|
|
char * file_import (char * name) { |
|
|
|
int file = -1; |
|
|
|
int size = -1; |
|
|
|
char * data = NULL; |
|
|
|
|
|
|
|
fatal_failure (name == NULL, "file_import: Failed to import file, name is null pointer."); |
|
|
|
fatal_failure (data != NULL, "file_import: Failed to import file, data is not null pointer."); |
|
|
|
|
|
|
|
file = file_open (name, O_RDONLY); |
|
|
|
size = file_size (file) + 1; |
|
|
|
data = allocate (size); |
|
|
|
|
|
|
|
file_read (file, data, size - 1); |
|
|
|
|
|
|
|
data [size - 1] = '\0'; |
|
|
|
|
|
|
|
file = file_close (file); |
|
|
|
|
|
|
|
return (data); |
|
|
|
} |
|
|
|
|
|
|
|
void file_export (char * name, void * data) { |
|
|
|
(void) name; |
|
|
|
(void) data; |
|
|
|
} |
|
|
|
|
|
|
|
void file_list_import (char * name) { |
|
|
|
fatal_failure (name == NULL, "file_list_import: Failed to import file, name is null pointer."); |
|
|
|
|
|
|
@@ -257,70 +362,6 @@ void file_list_delete (void) { |
|
|
|
file_list_data = deallocate (file_list_data); |
|
|
|
} |
|
|
|
|
|
|
|
int file_open (char * name, int mode) { |
|
|
|
int descriptor = -1; |
|
|
|
|
|
|
|
fatal_failure (name == NULL, "file_open: Failed to open file, name is null pointer."); |
|
|
|
|
|
|
|
descriptor = open (name, mode); |
|
|
|
|
|
|
|
fatal_failure (descriptor == -1, "file_open: Failed to open file, function open returned invalid descriptor."); |
|
|
|
|
|
|
|
return (descriptor); |
|
|
|
} |
|
|
|
|
|
|
|
int file_close (int file) { |
|
|
|
fatal_failure (file == -1, "file_close: Failed to close file, invalid file descriptor."); |
|
|
|
fatal_failure (close (file) == -1, "file_close: Failed to close file, function close returned invalid code."); |
|
|
|
|
|
|
|
return (-1); |
|
|
|
} |
|
|
|
|
|
|
|
void file_read (int file, void * data, int size) { |
|
|
|
fatal_failure (file == -1, "file_read: Failed to read from file, invalid descriptor."); |
|
|
|
fatal_failure (data == NULL, "file_read: Failed to read from file, data is null pointer."); |
|
|
|
fatal_failure (size == 0, "file_read: Failed to read from file, size is zero."); |
|
|
|
|
|
|
|
(void) read (file, data, (unsigned long int) size); |
|
|
|
} |
|
|
|
|
|
|
|
void file_write (int file, void * data, int size) { |
|
|
|
fatal_failure (file == -1, "file_write: Failed to write to file, invalid descriptor."); |
|
|
|
fatal_failure (data == NULL, "file_write: Failed to write to file, data is null pointer."); |
|
|
|
fatal_failure (size == 0, "file_write: Failed to write to file, size is zero."); |
|
|
|
|
|
|
|
(void) write (file, data, (unsigned long int) size); |
|
|
|
} |
|
|
|
|
|
|
|
int file_seek (int file, int whence) { |
|
|
|
fatal_failure (file == -1, "file_seek: Failed to seek in file, invalid descriptor."); |
|
|
|
|
|
|
|
return ((int) lseek (file, 0, whence)); |
|
|
|
} |
|
|
|
|
|
|
|
int file_size (int file) { |
|
|
|
int size = 0; |
|
|
|
|
|
|
|
fatal_failure (file == -1, "file_size: Failed to get size of file, invalid descriptor."); |
|
|
|
|
|
|
|
size = lseek (file, 0, SEEK_END); |
|
|
|
(void) lseek (file, 0, SEEK_SET); |
|
|
|
|
|
|
|
fatal_failure (size == -1, "file_size: Failed to get size of file, invalid file size."); |
|
|
|
|
|
|
|
return (size); |
|
|
|
} |
|
|
|
|
|
|
|
void file_import (char * name, void * data) { |
|
|
|
(void) name; |
|
|
|
(void) data; |
|
|
|
} |
|
|
|
|
|
|
|
void file_export (char * name, void * data) { |
|
|
|
(void) name; |
|
|
|
(void) data; |
|
|
|
} |
|
|
|
|
|
|
|
int character_is_uppercase (char character) { |
|
|
|
return ((int) ((character >= 'A') && (character <= 'Z'))); |
|
|
|
} |
|
|
|