瀏覽代碼

Updated few functions, lots untested...

master
父節點
當前提交
9d8d83d38f
共有 2 個文件被更改,包括 55 次插入18 次删除
  1. +52
    -16
      xtandard.c
  2. +3
    -2
      xtandard.h

+ 52
- 16
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

+ 3
- 2
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

Loading…
取消
儲存