Compare commits

...

2 Commits

2 changed files with 35 additions and 5 deletions

View File

@ -2823,11 +2823,21 @@ int num = 0;
void wint (int a) { void wint (int a) {
// printf ("%d ", a); // printf ("%d ", a);
a = htole32 (a); a = htole32 (a);
assert (write (__f, &a, 4) == 4); int r = write(__f, &a, 4);
if (r != 4)
{
fprintf(stderr, "Cannot write int %d, file might be corrupted", a);
assert(0);
}
} }
void wdata (const void *x, int len) { void wdata (const void *x, int len) {
assert (write (__f, x, len) == len); int r = write(__f, x, len);
if (r != len)
{
fprintf(stderr, "Cannot write data len %d, file might be corrupted", len);
assert(0);
}
} }
void wstr (const char *s) { void wstr (const char *s) {
@ -2836,7 +2846,12 @@ void wstr (const char *s) {
int x = strlen (s); int x = strlen (s);
if (x <= 254) { if (x <= 254) {
unsigned char x_c = (unsigned char)x; unsigned char x_c = (unsigned char)x;
assert (write (__f, &x_c, 1) == 1); int r = write(__f, &x_c, 1);
if (r != 1)
{
fprintf(stderr, "Cannot write string %s, file might be corrupted", s);
assert(0);
}
} else { } else {
fprintf (stderr, "String is too big...\n"); fprintf (stderr, "String is too big...\n");
assert (0); assert (0);
@ -2857,7 +2872,12 @@ void wstr (const char *s) {
void wll (long long a) { void wll (long long a) {
// printf ("%lld ", a); // printf ("%lld ", a);
a = htole64 (a); a = htole64 (a);
assert (write (__f, &a, 8) == 8); int r = write(__f, &a, 8);
if (r != 8)
{
fprintf(stderr, "Cannot write long long %lld, file might be corrupted", a);
assert(0);
}
} }
int count_list_size (struct tl_combinator_tree *T) { int count_list_size (struct tl_combinator_tree *T) {

12
tlc.c
View File

@ -61,7 +61,12 @@ void usage (void) {
int vkext_write (const char *filename) { int vkext_write (const char *filename) {
#if defined(_MSC_VER) && _MSC_VER >= 1400 #if defined(_MSC_VER) && _MSC_VER >= 1400
int f = 0; int f = 0;
assert(_sopen_s(&f, filename, _O_CREAT | _O_WRONLY | _O_TRUNC | _O_BINARY, _SH_DENYNO, _S_IREAD | _S_IWRITE) == 0); int r = _sopen_s(&f, filename, _O_CREAT | _O_WRONLY | _O_TRUNC | _O_BINARY, _SH_DENYNO, _S_IREAD | _S_IWRITE);
if (r != 0)
{
fprintf(stderr, "Cannot write file %s\n", filename);
return -1;
}
#elif defined(WIN32) || defined(_WIN32) #elif defined(WIN32) || defined(_WIN32)
int f = open(filename, O_CREAT | O_WRONLY | O_TRUNC | O_BINARY, 0640); int f = open(filename, O_CREAT | O_WRONLY | O_TRUNC | O_BINARY, 0640);
assert(f >= 0); assert(f >= 0);
@ -69,6 +74,11 @@ int vkext_write (const char *filename) {
int f = open (filename, O_CREAT | O_WRONLY | O_TRUNC, 0640); int f = open (filename, O_CREAT | O_WRONLY | O_TRUNC, 0640);
assert (f >= 0); assert (f >= 0);
#endif #endif
if (!f)
{
fprintf(stderr, "Cannot write file %s\n", filename);
return -1;
}
write_types (f); write_types (f);
close (f); close (f);
return 0; return 0;