|
DataMuseum.dkPresents historical artifacts from the history of: DKUUG/EUUG Conference tapes |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about DKUUG/EUUG Conference tapes Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - downloadIndex: T v
Length: 3639 (0xe37) Types: TextFile Names: »vtxtcn.c«
└─⟦b20c6495f⟧ Bits:30007238 EUUGD18: Wien-båndet, efterår 1987 └─⟦this⟧ »EUUGD18/General/World/vtxtcn.c«
#include <stdio.h> /* World C Version 1.00 copyright 1987 J.D.McDonald Use as you like for non-commercial purposes, but please leave this note, and document any changes you make as yours */ long z, zbig, zsmall; long htext[2000]; int gtext[5]; char chrbuf[90]; FILE *vtext_dat, *qtext_inc, *objdes_inc; FILE *gtext_inc; int q1text_dat; short packch; int i, u, kk, nold, size, number, nnmax, kq; short buffer[512]; int bi; main() { vtext_dat = fopen("vtext.dat", "r"); q1text_dat = creat("q1text.dat", 0600); qtext_inc = fopen("qtext.inc", "w"); objdes_inc = fopen("objdes.inc", "w"); fprintf(objdes_inc, " short odistb[] = { 0 \n"); for (i = 0; i < 2000; i++) htext[i] = 0; z = 0; zbig = 0; zsmall = 0; u = 0; nold = 0; bi = 0; do { fgets(chrbuf, 80, vtext_dat); for (i = 0; i < 85; i++) { if (chrbuf[i] == '\012' || chrbuf[i] == '\015' || chrbuf[i] == '\0') break; } size = i; for (i = size - 1; i > 3; i--) { if (chrbuf[i] != ' ') break; } size = i + 1; if (size < 9) { chrbuf[8] = ' '; size = 9; } number = atoi(chrbuf); if (number != nold) u += 1; if (number < 1001) gtext[1] = u; if (number < 2001) gtext[2] = u; if (number < 3001) gtext[3] = u; if (number < 9999) gtext[4] = u; if (number > 3000 && number < 3999) { fprintf(objdes_inc, " , %6d \n", u); nnmax = number - 3000; } else if (number > 5000 && number < 5999) { fprintf(objdes_inc, " , %6d \n", u); } else; if (number != nold) htext[u] = z; nold = number; chrbuf[size] = '{'; for (i = size + 1; i < 90; i++) chrbuf[i] = '}'; for (i = 8; i < size; i++) { if (chrbuf[i] == ' ') chrbuf[i] = '`'; if (chrbuf[i] == '.') chrbuf[i] = '|'; } kk = 8; while (1) { if (bi == 512) dump_buf(); if (chrbuf[kk] < '`' || chrbuf[kk + 1] < '`' || chrbuf[kk + 2] < '`') { packch = -(chrbuf[kk] + (chrbuf[kk + 1] << 8)); buffer[bi] = packch; kk += 2; zbig++; bi++; z++; if (chrbuf[kk - 1] == '{' || chrbuf[kk - 2] == '{') break; } else { packch = (chrbuf[kk + 2] - 96) * 1024 + (chrbuf[kk + 1] - 96) * 32 + chrbuf[kk] - 96; if ((packch & 0377) == 10 || ((packch >> 8) & 0377) == 10) { packch = -(chrbuf[kk] + (chrbuf[kk + 1] << 8)); buffer[bi] = packch; kk += 2; zbig++; bi++; z++; if (chrbuf[kk - 1] == '{' || chrbuf[kk - 2] == '{') break; } else { buffer[bi] = packch; kk += 3; zsmall++; bi++; z++; if (chrbuf[kk - 1] == '{' || chrbuf[kk - 2] == '{' || chrbuf[kk - 3] == '{') break; } } } } while (number != 9999); dump_buf(); fprintf(objdes_inc, " } ; \n"); u = ((u + 2) / 3) * 3; fprintf(qtext_inc, "#define RTSIZE %6d \n", u + 1); fprintf(qtext_inc, " unsigned short rtext[] = { 0 \n"); for (kk = 1; kk <= u / 3; kk++) { kq = (kk - 1) * 3; fprintf(qtext_inc, " , %5ld, %5ld, %5ld \n", htext[kq + 1], htext[kq + 2], htext[kq + 3]); } fprintf(qtext_inc, " }; \n"); fclose(vtext_dat); close(q1text_dat); fclose(qtext_inc); fclose(objdes_inc); gtext_inc = fopen("gtext.inc", "w"); fprintf(gtext_inc, " int gtext[5] = { 0, %6d, %6d, %6d, %6d };\n" ,gtext[1], gtext[2], gtext[3], gtext[4]); fclose(gtext_inc); printf(" packed: %8ld unpacked: %8ld \n", zsmall, zbig); } dump_buf() { write(q1text_dat, buffer, 512*sizeof(short)); bi = 0; }