X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;f=src%2Fgame_sp%2Fvb_lib.c;h=d88c8e36061e3d3d67685232923c4c8df4f15e2b;hb=91c0172a97f1323e573684a456de436332c8ea34;hp=6cdfdec1e2504ce73eb7823d97eb392ee5199d79;hpb=8d3d7d213a9691455a49544624bf380e85f43461;p=rocksndiamonds.git diff --git a/src/game_sp/vb_lib.c b/src/game_sp/vb_lib.c index 6cdfdec1..d88c8e36 100644 --- a/src/game_sp/vb_lib.c +++ b/src/game_sp/vb_lib.c @@ -7,11 +7,15 @@ #include "vb_vars.h" #include "vb_lib.h" +#include "main_sp.h" + +#include + /* helper functions for constructs not supported by C */ void *REDIM_1D(int a, int b, int c) { - return 0; + return checked_calloc(a * (c - b + 1)); } void *REDIM_2D(int a, int b, int c, int d, int e) @@ -53,13 +57,25 @@ char *INT_TO_STR(int a) boolean STRING_IS_LIKE(char *a, char *b) { - return 0; + if (*b == '*') // something like "*.sp" + { + return (strSuffix(a, &b[1])); + } + else + { + // more sophisticated patterns currently not supported + + return 0; + } } -int FILE_GET(FILE *a, int b, void *c, int d) +void FILE_GET(FILE *file, int offset, void *buffer, int num_bytes) { - return 0; + fseek(file, offset - 1, SEEK_SET); + + while (num_bytes--) + *(byte *)buffer++ = fgetc(file); } int FILE_PUT(FILE *a, int b, void *c, int d) @@ -149,12 +165,21 @@ char *Hex(int a) int FileLen(char *a) { - return 0; + struct stat buffer; + + if (stat(a, &buffer) == 0) + { + return buffer.st_size; + } + else + { + return 0; + } } long GetTickCount() { - return 0; + return random_linux_libc(RANDOM_SIMPLE); } int GetAttr(char *a)