This is faslNeXT.c in view mode; [Download] [Up]
#include <rld.h>
#define MAXPATHLEN 1024
int
fasload(faslfile)
object faslfile;
{
object memory, data;
FILE *fp;
char filename[MAXPATHLEN];
char command[MAXPATHLEN * 2];
char *object_filenames[2];
struct mach_header *header;
unsigned long start_address;
object *old_vs_base = vs_base;
object *old_vs_top = vs_top;
coerce_to_filename(faslfile, filename);
faslfile = open_stream(faslfile, smm_input, Cnil, Kerror);
vs_push(faslfile);
fp = faslfile->sm.sm_fp;
seek_to_end_ofile(fp);
data = read_fasl_vector(faslfile);
vs_push(data);
close_stream(faslfile, TRUE);
/*
rld_address_func (my_rld_address_func);
*/
object_filenames[0] = filename;
object_filenames[1] = NULL;
if (!rld_load (NULL, &header, object_filenames, NULL))
FEerror("The linkage editor failed.", 0);
if (!rld_lookup (NULL, "_init_code", &start_address))
FEerror("rld_lookup: failed.", 0);
if(symbol_value(Vload_verbose)!=Cnil) {
printf("start address -T %x ",start_address);
fflush(stdout);
}
memory=alloc_object(t_cfdata);
memory->cfd.cfd_self=0;
memory->cfd.cfd_fillp=0;
memory->cfd.cfd_size = 0;
memory->cfd.cfd_start= start_address;
CLEAR_CACHE
call_init(0,memory,data);
vs_base = old_vs_base;
vs_top = old_vs_top;
return(memory->cfd.cfd_size);
}
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.