|
@@ -1,4 +1,4 @@
|
|
|
-/* voc 2.1.0 [2017/07/20]. Bootstrapping compiler for address size 8, alignment 8. tspaSF */
|
|
|
+/* voc 2.1.0 [2019/11/01]. Bootstrapping compiler for address size 8, alignment 8. xrtspaSF */
|
|
|
|
|
|
#define SHORTINT INT8
|
|
|
#define INTEGER INT16
|
|
@@ -26,7 +26,7 @@ typedef
|
|
|
Files_BufDesc *Files_Buffer;
|
|
|
|
|
|
typedef
|
|
|
- CHAR Files_FileName[101];
|
|
|
+ CHAR Files_FileName[256];
|
|
|
|
|
|
typedef
|
|
|
struct Files_FileDesc {
|
|
@@ -48,6 +48,7 @@ typedef
|
|
|
} Files_Rider;
|
|
|
|
|
|
|
|
|
+export INT16 Files_MaxPathLength, Files_MaxNameLength;
|
|
|
static Files_FileDesc *Files_files;
|
|
|
static INT16 Files_tempno;
|
|
|
static CHAR Files_HOME[1024];
|
|
@@ -129,17 +130,17 @@ static void Files_Err (CHAR *s, ADDRESS s__len, Files_File f, INT16 errcode)
|
|
|
Out_String((CHAR*)": ", 3);
|
|
|
if (f != NIL) {
|
|
|
if (f->registerName[0] != 0x00) {
|
|
|
- Out_String(f->registerName, 101);
|
|
|
+ Out_String(f->registerName, 256);
|
|
|
} else {
|
|
|
- Out_String(f->workName, 101);
|
|
|
+ Out_String(f->workName, 256);
|
|
|
}
|
|
|
if (f->fd != 0) {
|
|
|
- Out_String((CHAR*)"f.fd = ", 8);
|
|
|
+ Out_String((CHAR*)", f.fd = ", 10);
|
|
|
Out_Int(f->fd, 1);
|
|
|
}
|
|
|
}
|
|
|
if (errcode != 0) {
|
|
|
- Out_String((CHAR*)" errcode = ", 12);
|
|
|
+ Out_String((CHAR*)", errcode = ", 13);
|
|
|
Out_Int(errcode, 1);
|
|
|
}
|
|
|
Out_Ln();
|
|
@@ -149,76 +150,75 @@ static void Files_Err (CHAR *s, ADDRESS s__len, Files_File f, INT16 errcode)
|
|
|
|
|
|
static void Files_MakeFileName (CHAR *dir, ADDRESS dir__len, CHAR *name, ADDRESS name__len, CHAR *dest, ADDRESS dest__len)
|
|
|
{
|
|
|
- INT16 i, j;
|
|
|
+ INT16 i, j, ld, ln;
|
|
|
__DUP(dir, dir__len, CHAR);
|
|
|
__DUP(name, name__len, CHAR);
|
|
|
+ ld = Strings_Length(dir, dir__len);
|
|
|
+ ln = Strings_Length(name, name__len);
|
|
|
+ while ((ld > 0 && dir[__X(ld - 1, dir__len)] == '/')) {
|
|
|
+ ld -= 1;
|
|
|
+ }
|
|
|
+ if (((ld + ln) + 2) > dest__len) {
|
|
|
+ Files_Err((CHAR*)"File name too long", 19, NIL, 0);
|
|
|
+ }
|
|
|
i = 0;
|
|
|
- j = 0;
|
|
|
- while (dir[i] != 0x00) {
|
|
|
- dest[i] = dir[i];
|
|
|
+ while (i < ld) {
|
|
|
+ dest[__X(i, dest__len)] = dir[__X(i, dir__len)];
|
|
|
i += 1;
|
|
|
}
|
|
|
- if (dest[i - 1] != '/') {
|
|
|
- dest[i] = '/';
|
|
|
+ if (i > 0) {
|
|
|
+ dest[__X(i, dest__len)] = '/';
|
|
|
i += 1;
|
|
|
}
|
|
|
- while (name[j] != 0x00) {
|
|
|
- dest[i] = name[j];
|
|
|
+ j = 0;
|
|
|
+ while (j < ln) {
|
|
|
+ dest[__X(i, dest__len)] = name[__X(j, name__len)];
|
|
|
i += 1;
|
|
|
j += 1;
|
|
|
}
|
|
|
- dest[i] = 0x00;
|
|
|
+ dest[__X(i, dest__len)] = 0x00;
|
|
|
__DEL(dir);
|
|
|
__DEL(name);
|
|
|
}
|
|
|
|
|
|
static void Files_GetTempName (CHAR *finalName, ADDRESS finalName__len, CHAR *name, ADDRESS name__len)
|
|
|
{
|
|
|
- INT32 n, i, j;
|
|
|
+ INT16 i, n;
|
|
|
__DUP(finalName, finalName__len, CHAR);
|
|
|
- Files_tempno += 1;
|
|
|
- n = Files_tempno;
|
|
|
- i = 0;
|
|
|
- if (finalName[0] != '/') {
|
|
|
- while (Platform_CWD[i] != 0x00) {
|
|
|
- name[i] = Platform_CWD[i];
|
|
|
- i += 1;
|
|
|
- }
|
|
|
- if (Platform_CWD[i - 1] != '/') {
|
|
|
- name[i] = '/';
|
|
|
- i += 1;
|
|
|
- }
|
|
|
- }
|
|
|
- j = 0;
|
|
|
- while (finalName[j] != 0x00) {
|
|
|
- name[i] = finalName[j];
|
|
|
- i += 1;
|
|
|
- j += 1;
|
|
|
+ if (finalName[0] == '/') {
|
|
|
+ __COPY(finalName, name, name__len);
|
|
|
+ } else {
|
|
|
+ Files_MakeFileName(Platform_CWD, 256, finalName, finalName__len, (void*)name, name__len);
|
|
|
}
|
|
|
- i -= 1;
|
|
|
- while (name[i] != '/') {
|
|
|
+ i = Strings_Length(name, name__len) - 1;
|
|
|
+ while ((i > 0 && name[__X(i, name__len)] != '/')) {
|
|
|
i -= 1;
|
|
|
}
|
|
|
- name[i + 1] = '.';
|
|
|
- name[i + 2] = 't';
|
|
|
- name[i + 3] = 'm';
|
|
|
- name[i + 4] = 'p';
|
|
|
- name[i + 5] = '.';
|
|
|
+ if ((i + 16) >= name__len) {
|
|
|
+ Files_Err((CHAR*)"File name too long", 19, NIL, 0);
|
|
|
+ }
|
|
|
+ Files_tempno += 1;
|
|
|
+ n = Files_tempno;
|
|
|
+ name[__X(i + 1, name__len)] = '.';
|
|
|
+ name[__X(i + 2, name__len)] = 't';
|
|
|
+ name[__X(i + 3, name__len)] = 'm';
|
|
|
+ name[__X(i + 4, name__len)] = 'p';
|
|
|
+ name[__X(i + 5, name__len)] = '.';
|
|
|
i += 6;
|
|
|
while (n > 0) {
|
|
|
- name[i] = (CHAR)((int)__MOD(n, 10) + 48);
|
|
|
+ name[__X(i, name__len)] = __CHR((int)__MOD(n, 10) + 48);
|
|
|
n = __DIV(n, 10);
|
|
|
i += 1;
|
|
|
}
|
|
|
- name[i] = '.';
|
|
|
+ name[__X(i, name__len)] = '.';
|
|
|
i += 1;
|
|
|
n = Platform_PID;
|
|
|
while (n > 0) {
|
|
|
- name[i] = (CHAR)((int)__MOD(n, 10) + 48);
|
|
|
+ name[__X(i, name__len)] = __CHR((int)__MOD(n, 10) + 48);
|
|
|
n = __DIV(n, 10);
|
|
|
i += 1;
|
|
|
}
|
|
|
- name[i] = 0x00;
|
|
|
+ name[__X(i, name__len)] = 0x00;
|
|
|
__DEL(finalName);
|
|
|
}
|
|
|
|
|
@@ -236,11 +236,11 @@ static void Files_Deregister (CHAR *name, ADDRESS name__len)
|
|
|
if (osfile != NIL) {
|
|
|
__ASSERT(!osfile->tempFile, 0);
|
|
|
__ASSERT(osfile->fd >= 0, 0);
|
|
|
- __MOVE(osfile->workName, osfile->registerName, 101);
|
|
|
- Files_GetTempName(osfile->registerName, 101, (void*)osfile->workName, 101);
|
|
|
+ __MOVE(osfile->workName, osfile->registerName, 256);
|
|
|
+ Files_GetTempName(osfile->registerName, 256, (void*)osfile->workName, 256);
|
|
|
osfile->tempFile = 1;
|
|
|
osfile->state = 0;
|
|
|
- error = Platform_Rename((void*)osfile->registerName, 101, (void*)osfile->workName, 101);
|
|
|
+ error = Platform_Rename((void*)osfile->registerName, 256, (void*)osfile->workName, 256);
|
|
|
if (error != 0) {
|
|
|
Files_Err((CHAR*)"Couldn't rename previous version of file being registered", 58, osfile, error);
|
|
|
}
|
|
@@ -256,17 +256,17 @@ static void Files_Create (Files_File f)
|
|
|
CHAR err[32];
|
|
|
if (f->fd == -1) {
|
|
|
if (f->state == 1) {
|
|
|
- Files_GetTempName(f->registerName, 101, (void*)f->workName, 101);
|
|
|
+ Files_GetTempName(f->registerName, 256, (void*)f->workName, 256);
|
|
|
f->tempFile = 1;
|
|
|
} else {
|
|
|
__ASSERT(f->state == 2, 0);
|
|
|
- Files_Deregister(f->registerName, 101);
|
|
|
- __MOVE(f->registerName, f->workName, 101);
|
|
|
+ Files_Deregister(f->registerName, 256);
|
|
|
+ __MOVE(f->registerName, f->workName, 256);
|
|
|
f->registerName[0] = 0x00;
|
|
|
f->tempFile = 0;
|
|
|
}
|
|
|
- error = Platform_Unlink((void*)f->workName, 101);
|
|
|
- error = Platform_New((void*)f->workName, 101, &f->fd);
|
|
|
+ error = Platform_Unlink((void*)f->workName, 256);
|
|
|
+ error = Platform_New((void*)f->workName, 256, &f->fd);
|
|
|
done = error == 0;
|
|
|
if (done) {
|
|
|
f->next = Files_files;
|
|
@@ -319,8 +319,8 @@ void Files_Close (Files_File f)
|
|
|
if (f->state != 1 || f->registerName[0] != 0x00) {
|
|
|
Files_Create(f);
|
|
|
i = 0;
|
|
|
- while ((i < 4 && f->bufs[i] != NIL)) {
|
|
|
- Files_Flush(f->bufs[i]);
|
|
|
+ while ((i < 4 && f->bufs[__X(i, 4)] != NIL)) {
|
|
|
+ Files_Flush(f->bufs[__X(i, 4)]);
|
|
|
i += 1;
|
|
|
}
|
|
|
}
|
|
@@ -337,7 +337,7 @@ Files_File Files_New (CHAR *name, ADDRESS name__len)
|
|
|
__DUP(name, name__len, CHAR);
|
|
|
__NEW(f, Files_FileDesc);
|
|
|
f->workName[0] = 0x00;
|
|
|
- __COPY(name, f->registerName, 101);
|
|
|
+ __COPY(name, f->registerName, 256);
|
|
|
f->fd = -1;
|
|
|
f->state = 1;
|
|
|
f->len = 0;
|
|
@@ -359,35 +359,35 @@ static void Files_ScanPath (INT16 *pos, CHAR *dir, ADDRESS dir__len)
|
|
|
*pos += 1;
|
|
|
}
|
|
|
} else {
|
|
|
- ch = (Files_SearchPath->data)[*pos];
|
|
|
+ ch = (Files_SearchPath->data)[__X(*pos, Files_SearchPath->len[0])];
|
|
|
while (ch == ' ' || ch == ';') {
|
|
|
*pos += 1;
|
|
|
- ch = (Files_SearchPath->data)[*pos];
|
|
|
+ ch = (Files_SearchPath->data)[__X(*pos, Files_SearchPath->len[0])];
|
|
|
}
|
|
|
if (ch == '~') {
|
|
|
*pos += 1;
|
|
|
- ch = (Files_SearchPath->data)[*pos];
|
|
|
- while (Files_HOME[i] != 0x00) {
|
|
|
- dir[i] = Files_HOME[i];
|
|
|
+ ch = (Files_SearchPath->data)[__X(*pos, Files_SearchPath->len[0])];
|
|
|
+ while (Files_HOME[__X(i, 1024)] != 0x00) {
|
|
|
+ dir[__X(i, dir__len)] = Files_HOME[__X(i, 1024)];
|
|
|
i += 1;
|
|
|
}
|
|
|
if ((((((ch != '/' && ch != 0x00)) && ch != ';')) && ch != ' ')) {
|
|
|
- while ((i > 0 && dir[i - 1] != '/')) {
|
|
|
+ while ((i > 0 && dir[__X(i - 1, dir__len)] != '/')) {
|
|
|
i -= 1;
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
while ((ch != 0x00 && ch != ';')) {
|
|
|
- dir[i] = ch;
|
|
|
+ dir[__X(i, dir__len)] = ch;
|
|
|
i += 1;
|
|
|
*pos += 1;
|
|
|
- ch = (Files_SearchPath->data)[*pos];
|
|
|
+ ch = (Files_SearchPath->data)[__X(*pos, Files_SearchPath->len[0])];
|
|
|
}
|
|
|
- while ((i > 0 && dir[i - 1] == ' ')) {
|
|
|
+ while ((i > 0 && dir[__X(i - 1, dir__len)] == ' ')) {
|
|
|
i -= 1;
|
|
|
}
|
|
|
}
|
|
|
- dir[i] = 0x00;
|
|
|
+ dir[__X(i, dir__len)] = 0x00;
|
|
|
}
|
|
|
|
|
|
static BOOLEAN Files_HasDir (CHAR *name, ADDRESS name__len)
|
|
@@ -398,7 +398,7 @@ static BOOLEAN Files_HasDir (CHAR *name, ADDRESS name__len)
|
|
|
ch = name[0];
|
|
|
while ((ch != 0x00 && ch != '/')) {
|
|
|
i += 1;
|
|
|
- ch = name[i];
|
|
|
+ ch = name[__X(i, name__len)];
|
|
|
}
|
|
|
return ch == '/';
|
|
|
}
|
|
@@ -413,9 +413,9 @@ static Files_File Files_CacheEntry (Platform_FileIdentity identity)
|
|
|
if (!Platform_SameFileTime(identity, f->identity)) {
|
|
|
i = 0;
|
|
|
while (i < 4) {
|
|
|
- if (f->bufs[i] != NIL) {
|
|
|
- f->bufs[i]->org = -1;
|
|
|
- f->bufs[i] = NIL;
|
|
|
+ if (f->bufs[__X(i, 4)] != NIL) {
|
|
|
+ f->bufs[__X(i, 4)]->org = -1;
|
|
|
+ f->bufs[__X(i, 4)] = NIL;
|
|
|
}
|
|
|
i += 1;
|
|
|
}
|
|
@@ -482,7 +482,7 @@ Files_File Files_Old (CHAR *name, ADDRESS name__len)
|
|
|
f->pos = 0;
|
|
|
f->swapper = -1;
|
|
|
error = Platform_Size(fd, &f->len);
|
|
|
- __COPY(name, f->workName, 101);
|
|
|
+ __COPY(name, f->workName, 256);
|
|
|
f->registerName[0] = 0x00;
|
|
|
f->tempFile = 0;
|
|
|
f->identity = identity;
|
|
@@ -514,9 +514,9 @@ void Files_Purge (Files_File f)
|
|
|
INT16 error;
|
|
|
i = 0;
|
|
|
while (i < 4) {
|
|
|
- if (f->bufs[i] != NIL) {
|
|
|
- f->bufs[i]->org = -1;
|
|
|
- f->bufs[i] = NIL;
|
|
|
+ if (f->bufs[__X(i, 4)] != NIL) {
|
|
|
+ f->bufs[__X(i, 4)]->org = -1;
|
|
|
+ f->bufs[__X(i, 4)] = NIL;
|
|
|
}
|
|
|
i += 1;
|
|
|
}
|
|
@@ -560,22 +560,22 @@ void Files_Set (Files_Rider *r, ADDRESS *r__typ, Files_File f, INT32 pos)
|
|
|
offset = __MASK(pos, -4096);
|
|
|
org = pos - offset;
|
|
|
i = 0;
|
|
|
- while ((((i < 4 && f->bufs[i] != NIL)) && org != f->bufs[i]->org)) {
|
|
|
+ while ((((i < 4 && f->bufs[__X(i, 4)] != NIL)) && org != f->bufs[__X(i, 4)]->org)) {
|
|
|
i += 1;
|
|
|
}
|
|
|
if (i < 4) {
|
|
|
- if (f->bufs[i] == NIL) {
|
|
|
+ if (f->bufs[__X(i, 4)] == NIL) {
|
|
|
__NEW(buf, Files_BufDesc);
|
|
|
buf->chg = 0;
|
|
|
buf->org = -1;
|
|
|
buf->f = f;
|
|
|
- f->bufs[i] = buf;
|
|
|
+ f->bufs[__X(i, 4)] = buf;
|
|
|
} else {
|
|
|
- buf = f->bufs[i];
|
|
|
+ buf = f->bufs[__X(i, 4)];
|
|
|
}
|
|
|
} else {
|
|
|
f->swapper = __MASK(f->swapper + 1, -4);
|
|
|
- buf = f->bufs[f->swapper];
|
|
|
+ buf = f->bufs[__X(f->swapper, 4)];
|
|
|
Files_Flush(buf);
|
|
|
}
|
|
|
if (buf->org != org) {
|
|
@@ -622,7 +622,7 @@ void Files_Read (Files_Rider *r, ADDRESS *r__typ, SYSTEM_BYTE *x)
|
|
|
}
|
|
|
Files_Assert(offset <= buf->size);
|
|
|
if (offset < buf->size) {
|
|
|
- *x = buf->data[offset];
|
|
|
+ *x = buf->data[__X(offset, 4096)];
|
|
|
(*r).offset = offset + 1;
|
|
|
} else if ((*r).org + offset < buf->f->len) {
|
|
|
Files_Set(&*r, r__typ, (*r).buf->f, (*r).org + offset);
|
|
@@ -660,7 +660,7 @@ void Files_ReadBytes (Files_Rider *r, ADDRESS *r__typ, SYSTEM_BYTE *x, ADDRESS x
|
|
|
} else {
|
|
|
min = n;
|
|
|
}
|
|
|
- __MOVE((ADDRESS)&buf->data[offset], (ADDRESS)&x[xpos], min);
|
|
|
+ __MOVE((ADDRESS)&buf->data[__X(offset, 4096)], (ADDRESS)&x[__X(xpos, x__len)], min);
|
|
|
offset += min;
|
|
|
(*r).offset = offset;
|
|
|
xpos += min;
|
|
@@ -689,7 +689,7 @@ void Files_Write (Files_Rider *r, ADDRESS *r__typ, SYSTEM_BYTE x)
|
|
|
offset = (*r).offset;
|
|
|
}
|
|
|
Files_Assert(offset < 4096);
|
|
|
- buf->data[offset] = x;
|
|
|
+ buf->data[__X(offset, 4096)] = x;
|
|
|
buf->chg = 1;
|
|
|
if (offset == buf->size) {
|
|
|
buf->size += 1;
|
|
@@ -723,7 +723,7 @@ void Files_WriteBytes (Files_Rider *r, ADDRESS *r__typ, SYSTEM_BYTE *x, ADDRESS
|
|
|
} else {
|
|
|
min = n;
|
|
|
}
|
|
|
- __MOVE((ADDRESS)&x[xpos], (ADDRESS)&buf->data[offset], min);
|
|
|
+ __MOVE((ADDRESS)&x[__X(xpos, x__len)], (ADDRESS)&buf->data[__X(offset, 4096)], min);
|
|
|
offset += min;
|
|
|
(*r).offset = offset;
|
|
|
Files_Assert(offset <= 4096);
|
|
@@ -817,12 +817,12 @@ void Files_Register (Files_File f)
|
|
|
}
|
|
|
Files_Close(f);
|
|
|
if (f->registerName[0] != 0x00) {
|
|
|
- Files_Deregister(f->registerName, 101);
|
|
|
- Files_Rename(f->workName, 101, f->registerName, 101, &errcode);
|
|
|
+ Files_Deregister(f->registerName, 256);
|
|
|
+ Files_Rename(f->workName, 256, f->registerName, 256, &errcode);
|
|
|
if (errcode != 0) {
|
|
|
Files_Err((CHAR*)"Couldn't rename temp name as register name", 43, f, errcode);
|
|
|
}
|
|
|
- __MOVE(f->registerName, f->workName, 101);
|
|
|
+ __MOVE(f->registerName, f->workName, 256);
|
|
|
f->registerName[0] = 0x00;
|
|
|
f->tempFile = 0;
|
|
|
}
|
|
@@ -843,7 +843,7 @@ static void Files_FlipBytes (SYSTEM_BYTE *src, ADDRESS src__len, SYSTEM_BYTE *de
|
|
|
j = 0;
|
|
|
while (i > 0) {
|
|
|
i -= 1;
|
|
|
- dest[j] = src[i];
|
|
|
+ dest[__X(j, dest__len)] = src[__X(i, src__len)];
|
|
|
j += 1;
|
|
|
}
|
|
|
} else {
|
|
@@ -900,7 +900,7 @@ void Files_ReadString (Files_Rider *R, ADDRESS *R__typ, CHAR *x, ADDRESS x__len)
|
|
|
i = 0;
|
|
|
do {
|
|
|
Files_Read(&*R, R__typ, (void*)&ch);
|
|
|
- x[i] = ch;
|
|
|
+ x[__X(i, x__len)] = ch;
|
|
|
i += 1;
|
|
|
} while (!(ch == 0x00));
|
|
|
}
|
|
@@ -910,16 +910,16 @@ void Files_ReadLine (Files_Rider *R, ADDRESS *R__typ, CHAR *x, ADDRESS x__len)
|
|
|
INT16 i;
|
|
|
i = 0;
|
|
|
do {
|
|
|
- Files_Read(&*R, R__typ, (void*)&x[i]);
|
|
|
+ Files_Read(&*R, R__typ, (void*)&x[__X(i, x__len)]);
|
|
|
i += 1;
|
|
|
- } while (!(x[i - 1] == 0x00 || x[i - 1] == 0x0a));
|
|
|
- if (x[i - 1] == 0x0a) {
|
|
|
+ } while (!(x[__X(i - 1, x__len)] == 0x00 || x[__X(i - 1, x__len)] == 0x0a));
|
|
|
+ if (x[__X(i - 1, x__len)] == 0x0a) {
|
|
|
i -= 1;
|
|
|
}
|
|
|
- if ((i > 0 && x[i - 1] == 0x0d)) {
|
|
|
+ if ((i > 0 && x[__X(i - 1, x__len)] == 0x0d)) {
|
|
|
i -= 1;
|
|
|
}
|
|
|
- x[i] = 0x00;
|
|
|
+ x[__X(i, x__len)] = 0x00;
|
|
|
}
|
|
|
|
|
|
void Files_ReadNum (Files_Rider *R, ADDRESS *R__typ, SYSTEM_BYTE *x, ADDRESS x__len)
|
|
@@ -947,18 +947,18 @@ void Files_WriteBool (Files_Rider *R, ADDRESS *R__typ, BOOLEAN x)
|
|
|
void Files_WriteInt (Files_Rider *R, ADDRESS *R__typ, INT16 x)
|
|
|
{
|
|
|
CHAR b[2];
|
|
|
- b[0] = (CHAR)x;
|
|
|
- b[1] = (CHAR)__ASHR(x, 8);
|
|
|
+ b[0] = __CHR(x);
|
|
|
+ b[1] = __CHR(__ASHR(x, 8));
|
|
|
Files_WriteBytes(&*R, R__typ, (void*)b, 2, 2);
|
|
|
}
|
|
|
|
|
|
void Files_WriteLInt (Files_Rider *R, ADDRESS *R__typ, INT32 x)
|
|
|
{
|
|
|
CHAR b[4];
|
|
|
- b[0] = (CHAR)x;
|
|
|
- b[1] = (CHAR)__ASHR(x, 8);
|
|
|
- b[2] = (CHAR)__ASHR(x, 16);
|
|
|
- b[3] = (CHAR)__ASHR(x, 24);
|
|
|
+ b[0] = __CHR(x);
|
|
|
+ b[1] = __CHR(__ASHR(x, 8));
|
|
|
+ b[2] = __CHR(__ASHR(x, 16));
|
|
|
+ b[3] = __CHR(__ASHR(x, 24));
|
|
|
Files_WriteBytes(&*R, R__typ, (void*)b, 4, 4);
|
|
|
}
|
|
|
|
|
@@ -967,10 +967,10 @@ void Files_WriteSet (Files_Rider *R, ADDRESS *R__typ, UINT32 x)
|
|
|
CHAR b[4];
|
|
|
INT32 i;
|
|
|
i = (INT32)x;
|
|
|
- b[0] = (CHAR)i;
|
|
|
- b[1] = (CHAR)__ASHR(i, 8);
|
|
|
- b[2] = (CHAR)__ASHR(i, 16);
|
|
|
- b[3] = (CHAR)__ASHR(i, 24);
|
|
|
+ b[0] = __CHR(i);
|
|
|
+ b[1] = __CHR(__ASHR(i, 8));
|
|
|
+ b[2] = __CHR(__ASHR(i, 16));
|
|
|
+ b[3] = __CHR(__ASHR(i, 24));
|
|
|
Files_WriteBytes(&*R, R__typ, (void*)b, 4, 4);
|
|
|
}
|
|
|
|
|
@@ -992,7 +992,7 @@ void Files_WriteString (Files_Rider *R, ADDRESS *R__typ, CHAR *x, ADDRESS x__len
|
|
|
{
|
|
|
INT16 i;
|
|
|
i = 0;
|
|
|
- while (x[i] != 0x00) {
|
|
|
+ while (x[__X(i, x__len)] != 0x00) {
|
|
|
i += 1;
|
|
|
}
|
|
|
Files_WriteBytes(&*R, R__typ, (void*)x, x__len * 1, i + 1);
|
|
@@ -1001,10 +1001,10 @@ void Files_WriteString (Files_Rider *R, ADDRESS *R__typ, CHAR *x, ADDRESS x__len
|
|
|
void Files_WriteNum (Files_Rider *R, ADDRESS *R__typ, INT64 x)
|
|
|
{
|
|
|
while (x < -64 || x > 63) {
|
|
|
- Files_Write(&*R, R__typ, (CHAR)(__MASK(x, -128) + 128));
|
|
|
+ Files_Write(&*R, R__typ, __CHR(__MASK(x, -128) + 128));
|
|
|
x = __ASHR(x, 7);
|
|
|
}
|
|
|
- Files_Write(&*R, R__typ, (CHAR)__MASK(x, -128));
|
|
|
+ Files_Write(&*R, R__typ, __CHR(__MASK(x, -128)));
|
|
|
}
|
|
|
|
|
|
void Files_GetName (Files_File f, CHAR *name, ADDRESS name__len)
|
|
@@ -1041,7 +1041,7 @@ static void Files_Finalize (SYSTEM_PTR o)
|
|
|
if (f->fd >= 0) {
|
|
|
Files_CloseOSFile(f);
|
|
|
if (f->tempFile) {
|
|
|
- res = Platform_Unlink((void*)f->workName, 101);
|
|
|
+ res = Platform_Unlink((void*)f->workName, 256);
|
|
|
}
|
|
|
}
|
|
|
}
|
|
@@ -1063,7 +1063,7 @@ static void EnumPtrs(void (*P)(void*))
|
|
|
P(Files_SearchPath);
|
|
|
}
|
|
|
|
|
|
-__TDESC(Files_FileDesc, 1, 4) = {__TDFLDS("FileDesc", 280), {232, 240, 248, 256, -40}};
|
|
|
+__TDESC(Files_FileDesc, 1, 4) = {__TDFLDS("FileDesc", 592), {544, 552, 560, 568, -40}};
|
|
|
__TDESC(Files_BufDesc, 1, 1) = {__TDFLDS("BufDesc", 4120), {0, -16}};
|
|
|
__TDESC(Files_Rider, 1, 1) = {__TDFLDS("Rider", 24), {8, -16}};
|
|
|
|
|
@@ -1083,5 +1083,7 @@ export void *Files__init(void)
|
|
|
Heap_FileCount = 0;
|
|
|
Files_HOME[0] = 0x00;
|
|
|
Platform_GetEnv((CHAR*)"HOME", 5, (void*)Files_HOME, 1024);
|
|
|
+ Files_MaxPathLength = Platform_MaxPathLength();
|
|
|
+ Files_MaxNameLength = Platform_MaxNameLength();
|
|
|
__ENDMOD;
|
|
|
}
|