From 9d8d83d38f0150ce61e0fec91b947564edbbac66 Mon Sep 17 00:00:00 2001 From: xolatile Date: Sat, 28 Oct 2023 13:50:40 -0400 Subject: [PATCH] Updated few functions, lots untested... --- xtandard.c | 68 +++++++++++++++++++++++++++++++++++++++++++++++--------------- xtandard.h | 5 +++-- 2 files changed, 55 insertions(+), 18 deletions(-) diff --git a/xtandard.c b/xtandard.c index 1e8af63..80be2b9 100644 --- a/xtandard.c +++ b/xtandard.c @@ -338,16 +338,18 @@ int file_seek (int file, int whence) { return ((int) lseek (file, 0, whence)); } -int file_size (int file) { - int size = 0; +int file_size (char * name) { + int size = -1; + int file = -1; - fatal_failure (file == -1, "file_size: Failed to get size of file, invalid descriptor."); + file = file_open (name, O_RDONLY); 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."); + file = file_close (file); + return (size); } @@ -372,16 +374,33 @@ int file_type (char * name) { return (-1); } +void * file_record (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."); + + file = file_open (name, O_RDONLY); + size = file_size (name); + data = allocate (size); + + file_read (file, data, size); + + file = file_close (file); + + return (data); +} + 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; + size = file_size (name) + 1; data = allocate (size); file_read (file, data, size - 1); @@ -537,18 +556,17 @@ char * string_reverse_limit (char * string, int limit) { fatal_failure (string == NULL, "string_reverse: String is null pointer."); - for (i = 0; i != limit / 2; ++i) { - char reverse_0 = string [limit - i]; - char reverse_1 = string [i]; - string [i] = reverse_0; - string [limit - i] = reverse_1; + for (i = 0; i < limit / 2; ++i) { + char temporary = string [i]; + string [i] = string [limit - 1 - i]; + string [limit - 1 - i] = temporary; } return (string); } char * string_reverse (char * string) { - return (string_reverse_limit (string, string_length (string) - 1)); + return (string_reverse_limit (string, string_length (string))); } char * string_delete (char * string, int length) { @@ -783,13 +801,24 @@ char * decode_byte (int byte) { return (decode); } -void number_to_string (int number, char * string) { - int i; +char * number_to_string (int number) { + int i, sign; + + static char string [32]; + + string_delete (string, 32); + + if (number == 0) { + string [0] = '0'; + string [1] = '\0'; + return (string); + } if (number < 0) { - string [0] = '-'; - ++i; number *= -1; + sign = 1; + } else { + sign = 0; } for (i = (string [0] == '-'); number != 0; ++i) { @@ -797,9 +826,16 @@ void number_to_string (int number, char * string) { number /= 10; } + if (sign != 0) { + string [i] = '-'; + ++i; + } + string [i] = '\0'; string_reverse (string); + + return (string); } #endif diff --git a/xtandard.h b/xtandard.h index c1f6768..8e429d9 100644 --- a/xtandard.h +++ b/xtandard.h @@ -80,8 +80,9 @@ extern int file_close (int file); extern void file_read (int file, void * data, int size); extern void file_write (int file, void * data, int size); extern int file_seek (int file, int whence); -extern int file_size (int file); +extern int file_size (char * name); extern int file_type (char * name); +extern void * file_record (char * name); extern char * file_import (char * name); extern void file_export (char * name, void * data); @@ -133,6 +134,6 @@ extern void terminal_show_cursor (int show); extern int encode_byte (char * byte); extern char * decode_byte (int byte); -extern void number_to_string (int number, char * string); +extern char * number_to_string (int number); #endif