Subversion Repositories SvarDOS

Rev

Rev 1250 | Rev 1271 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 1250 Rev 1251
Line 315... Line 315...
315
  if (fd == NULL) {
315
  if (fd == NULL) {
316
    puts("ERROR: FAILED TO OPEN OR CREATE DEFLANG.C");
316
    puts("ERROR: FAILED TO OPEN OR CREATE DEFLANG.C");
317
    ecode = 1;
317
    ecode = 1;
318
  } else {
318
  } else {
319
    unsigned short allocsz = biggest_langsz + (biggest_langsz / 20);
319
    unsigned short allocsz = biggest_langsz + (biggest_langsz / 20);
-
 
320
    unsigned short nextstringin = 0, nextnlat = 40;
320
    printf("biggest lang block is %u bytes -> allocating a %u bytes buffe (5%% safety margin)r\n", biggest_langsz, allocsz);
321
    printf("biggest lang block is %u bytes -> allocating a %u bytes buffer (5%% safety margin)\n", biggest_langsz, allocsz);
321
    fprintf(fd, "/* THIS FILE HAS BEEN GENERATED BY TLUMACZ (PART OF THE SVARLANG LIBRARY) */\r\n");
322
    fprintf(fd, "/* THIS FILE HAS BEEN GENERATED BY TLUMACZ (PART OF THE SVARLANG LIBRARY) */\r\n");
322
    fprintf(fd, "const unsigned short svarlang_memsz = %uu;\r\n", allocsz);
323
    fprintf(fd, "const unsigned short svarlang_memsz = %uu;\r\n", allocsz);
323
    fprintf(fd, "char svarlang_mem[%u] = {\r\n", allocsz);
324
    fprintf(fd, "char svarlang_mem[%u] = {", allocsz);
324
    for (i = 0; i < refblocksz; i++) {
325
    for (i = 0; i < refblocksz; i++) {
-
 
326
      if (nextstringin == 0) {
-
 
327
        fprintf(fd, "\r\n");
-
 
328
        nextnlat = i + 40;
-
 
329
        nextstringin = 4 + (refblock[i + 3] << 8) + refblock[i + 2];
-
 
330
        if (nextstringin == 4) nextstringin = 20000; /* last string in block */
-
 
331
      }
-
 
332
      if (i == nextnlat) {
-
 
333
        nextnlat += 40;
-
 
334
        fprintf(fd, "\r\n");
-
 
335
      }
-
 
336
      nextnlat--;
-
 
337
      nextstringin--;
325
      fprintf(fd, "%u", refblock[i]);
338
      fprintf(fd, "%u", refblock[i]);
326
      if (i + 1 < refblocksz) fprintf(fd, ",");
339
      if (i + 1 < refblocksz) fprintf(fd, ",");
327
      if ((i & 15) == 15) fprintf(fd, "\r\n");
-
 
328
    }
340
    }
329
    fprintf(fd, "};\r\n");
341
    fprintf(fd, "};\r\n");
330
    fclose(fd);
342
    fclose(fd);
331
  }
343
  }
332
 
344