From: "A. Jans-Beken" Newsgroups: comp.os.msdos.djgpp Subject: Allegro: Possible BUG pack_xxx Date: Sun, 20 Dec 1998 14:44:59 +0100 Organization: World Access Lines: 61 Message-ID: <367CFF5B.34FEC861@wxs.nl> NNTP-Posting-Host: vl0103-0.dial.wxs.nl Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit X-Trace: reader1.wxs.nl 914161164 17948 195.121.18.103 (20 Dec 1998 13:39:24 GMT) X-Complaints-To: abuse AT wxs DOT nl NNTP-Posting-Date: 20 Dec 1998 13:39:24 GMT X-Mailer: Mozilla 4.04 [en] (Win95; I) To: djgpp AT delorie DOT com DJ-Gateway: from newsgroup comp.os.msdos.djgpp Reply-To: djgpp AT delorie DOT com I think I found a BUG in Allegro (or I do not understand the documentation). The problem is with the pack_xxx functions. A complete source that demonstrates the problem can be found below. In the documentation it is stated that a packed file can be written with the "w" and "w!" parameter. The latter does actually no file-compression, but 'marks' a file (by inserting the magic code "slh." at the beginning of the file). When I want to read-back the file I open it with "r" or "r!". I think, but it not clear from the documentation, that "r!" should be used when a file is created with "w!". In the program below I write one integer with the value 128. When I read it back then I get the value 29548 (hex: 0x736c). This hex value happens to represent the first two characters from the magic code "sl". When I replace "w!" and "r!" by "w" and "r" then everything works fine. My conclusion: It appears that when opening a pack-file with "r!" allegro does not correctly handle the magic code. ---my source--------------- #include #include #include #include void save_pack_test() { PACKFILE *f; f = pack_fopen("test.tst", "w!"); assert(f != NULL); int x = 128; pack_mputw(x, f); pack_fclose(f); } void load_pack_test() { PACKFILE *f; f = pack_fopen("test.tst", "r!"); assert(f != NULL); int x; x = pack_mgetw(f); cout << "Found the value: " << x << "\n"; pack_fclose(f); } int main () { save_pack_test(); load_pack_test(); return 0; }