Path: utzoo!utgpu!news-server.csri.toronto.edu!cs.utexas.edu!sun-barr!olivea!mintaka!bloom-beacon!eru!hagbard!sunic!mcsun!cernvax!chx400!ugun2b!ugsc2a!fisher From: fisher@sc2a.unige.ch (Markus Fischer) Newsgroups: comp.os.msdos.programmer Subject: Re: Combining program and data in an executable. Message-ID: <290@sc2a.unige.ch> Date: 9 Nov 90 01:03:34 GMT References: <1990Nov6.133618.23396@jarvis.csri.toronto.edu> Organization: University of Geneva, Switzerland Lines: 33 In article <1990Nov6.133618.23396@jarvis.csri.toronto.edu>, west@turing.toronto.edu (Tom West) writes: > I have a program that acts upon data currently stored in a file. I would > like to somehow be able to combine the program with the data, so that a > separate data file would not be necessary. (i.e. spreadsheet data with a > viewer builtin.) Is there any way that one can do this? > [...] Hello, Isn't this exactly what you do when you say `printf("Hello world!\n")'? i.e. a compilable code referencing static data? (note: examples are in (Turbo)C) A quick-and-dirty solution would be to create a program module like ] static char data[] = ] "here comes your text-file, remember to \"escape\" quotes, new lines\ ] and the like...\n"; If your data is in binary format, you can dump it as in ] static char data[] = { ] 0x48, 0x65, 0x6c, 0x6c, 0x6f, 0x20, 0x77, 0x6f, 0x72, 0x6c, ] 0x74, 0x21, ... /* or do you prefer octal notation? */ ] }; The program to generate such a listing for any file seems easy to write... Of course, a hacker might provide us a program creating directly the object module, without having to recompile it, but the above solution is more portable. After this step, compile the module, modify the file-io of your program into direct memory read, and link the whole thing. Hope this helps Markus Fischer, Dpt of Anthropology, Geneva.