This is fasload.c in view mode; [Download] [Up]
/* (C) Copyright Taiichi Yuasa and Masami Hagiya, 1984. All rights reserved. */ /* fasload.c DG-SPECIFIC */ #include "include.h" int fasload(filename) object filename; { object x; object data, skip_count; object strm; int len, i, byte_count; char *cp; char filen[256]; int ob_start; object *base = vs_base; object *top = vs_top; if (type_of(filename) != t_string) FEwrong_type_argument(Sstring, filename); cp = filename->st.st_self; len = filename->st.st_fillp; for (i=0; i < len; i++) filen[i] = cp[i]; filen[i] = '\0'; #ifdef AOSVS strm = open_stream(filename, smm_input, Cnil, Kerror); vs_push(strm); preserving_whitespace_flag = FALSE; detect_eos_flag = FALSE; skip_count = standard_read_object_non_recursive(strm); vs_push(skip_count); data = read_fasl_vector(strm); vs_push(data); close_stream(strm, TRUE); if (type_of(skip_count) != t_fixnum) FEerror("too large fasl file", 0); byte_count = fasl_loader(filen, fix(skip_count), data); #endif #ifdef DGUX data = read_fasl_data(filen); vs_push(data); byte_count = fasl_loader(filen, 0, data); #endif vs_top = top; vs_base = base; return(byte_count); } siLobload() { object filename; int byte_count; int len, i; char *cp; char filen[256]; object *base = vs_base; object *top = vs_top; check_arg(1); check_type_or_pathname_string_symbol_stream(&vs_base[0]); filename = coerce_to_namestring(vs_base[0]); cp = filename->st.st_self; len = filename->st.st_fillp; for (i=0; i < len; i++) filen[i] = cp[i]; filen[i] = '\0'; byte_count = fasl_loader(filen, 0, Cnil); vs_base = base; vs_top = top; if (byte_count < 0) { vs_top = vs_base; vs_push(Cnil); } else { vs_top = vs_base; vs_push(make_fixnum(byte_count)); } } #ifdef AOSVS init_fasload() { init_fasl(); make_si_function("OBLOAD", siLobload); } #endif
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.