mirror of
https://github.com/Interlisp/maiko.git
synced 2026-01-14 23:46:14 +00:00
parent
5c8fb47005
commit
e025617c13
@ -2,7 +2,7 @@
|
||||
|
||||
This is the implementation of the Medley Interlisp virtual machine, for a
|
||||
byte-coded Lisp instruction set and some low-level functions for
|
||||
connecting witih Lisp for access to display and disk etc.
|
||||
connecting with Lisp for access to display and disk etc.
|
||||
|
||||
There are make file fragments that include all the flags and
|
||||
variables you have to set for each hardware/OS target.
|
||||
|
||||
@ -54,10 +54,10 @@ typedef struct _MyWindow
|
||||
|
||||
typedef struct
|
||||
{
|
||||
int left_x; /* x cordinate of upperleft corner */
|
||||
int top_y; /* y cordinate of upperlert corner */
|
||||
int right_x; /* x cordinate of lowerright corner */
|
||||
int bottom_y;/* y cordinate of lowerright corner */
|
||||
int left_x; /* x coordinate of upper left corner */
|
||||
int top_y; /* y coordinate of upper left corner */
|
||||
int right_x; /* x coordinate of lower right corner */
|
||||
int bottom_y;/* y coordinate of lower right corner */
|
||||
} DisplayArea;
|
||||
|
||||
#define CreateWindow(display, parent_win,child_win) { \
|
||||
|
||||
@ -23,7 +23,7 @@ typedef struct
|
||||
{
|
||||
char *name; /* name of this window */
|
||||
Window win; /* window id */
|
||||
int x,y; /* x and y cordinates */
|
||||
int x,y; /* x and y coordinates */
|
||||
int width,height; /* window size */
|
||||
int border; /* border width */
|
||||
GC *gc;
|
||||
@ -43,7 +43,7 @@ typedef struct
|
||||
typedef struct
|
||||
{
|
||||
int left_x; /* x coordinate of upper-left corner */
|
||||
int top_y; /* y coordinate of upper-lert corner */
|
||||
int top_y; /* y coordinate of upper-left corner */
|
||||
int right_x; /* x coordinate of lower-right corner */
|
||||
int bottom_y;/* y coordinate of lower-right corner */
|
||||
} DisplayArea;
|
||||
|
||||
@ -26,7 +26,7 @@
|
||||
*/
|
||||
/**********************************************************************/
|
||||
|
||||
/* NOTE: Thease MACRO shuld be used for the pointers in LISP SYSOUT */
|
||||
/* NOTE: These MACRO should be used for the pointers in LISP SYSOUT */
|
||||
#define LLSH(datum , n) ((datum )<< n)
|
||||
#define LRSH(datum , n) ((datum) >> n)
|
||||
|
||||
|
||||
@ -256,7 +256,7 @@ do_ufn: ERROR_EXIT(a); \
|
||||
|
||||
/*********************************************************/
|
||||
/* */
|
||||
/* Macros for airthmetic operations, to let inline work */
|
||||
/* Macros for arithmetic operations, to let inline work */
|
||||
/* */
|
||||
/*********************************************************/
|
||||
|
||||
|
||||
2
inc/bb.h
2
inc/bb.h
@ -30,7 +30,7 @@
|
||||
(there is one exception, B_postloop_mask, which may have its
|
||||
shift count = 32, in which case it is not used)
|
||||
Right shifted data is masked if necessary to compensate for
|
||||
possible arithemetic shifts. Arithmetic shifts are assumed as
|
||||
possible arithmetic shifts. Arithmetic shifts are assumed as
|
||||
the default.
|
||||
|
||||
The backwards bit of the control block is followed blindly,
|
||||
|
||||
@ -37,7 +37,7 @@
|
||||
#define SUN_TYPE3_KBD 0x0
|
||||
#define SUN_TYPE4_KBD 0x1
|
||||
|
||||
/* DISPALY */
|
||||
/* DISPLAY */
|
||||
#define SUN_DISPTYPE_MASK 0x78
|
||||
#define SUN2BW (2<<3)
|
||||
#define SUN2COLOR (3<<3)
|
||||
|
||||
10
inc/devif.h
10
inc/devif.h
@ -91,7 +91,7 @@ typedef struct
|
||||
Cleanup and restart device after uraid. */
|
||||
void (* sync_device)(); /* SYNC_DEVICE, a function.
|
||||
args: self
|
||||
Make reality and emualtor coinside with eachother */
|
||||
Make reality and emulator coincide with each other */
|
||||
} DevRec;
|
||||
|
||||
|
||||
@ -211,14 +211,14 @@ typedef struct
|
||||
unsigned long (* bitblt_from_screen)();
|
||||
unsigned long (* scroll_region)(); /* ie. bbt from screen to screen */
|
||||
|
||||
void (* mouse_invisible)(); /* MOUSE_INVISSIBLE
|
||||
void (* mouse_invisible)(); /* MOUSE_INVISIBLE
|
||||
args: self (a dsp), iop (an IOPAGE preferably the one and only)
|
||||
This method makes the mouse invisible on the screen. Note that
|
||||
the dsp supplys the method and the iop supplys the data. */
|
||||
void (* mouse_visible)(); /* MOUSE_VISSIBLE
|
||||
the dsp supplies the method and the iop supplies the data. */
|
||||
void (* mouse_visible)(); /* MOUSE_VISIBLE
|
||||
args: self (a dsp), iop (an IOPAGE preferably the one and only)
|
||||
This method makes the mouse visible on the screen. Note that
|
||||
the dsp supplys the method and the iop supplys the data. */
|
||||
the dsp supplies the method and the iop supplies the data. */
|
||||
MRegion Display; /* Dimensions of the physical display. */
|
||||
unsigned short bitsperpixel;
|
||||
unsigned long colors; /* cash for the available_colors */
|
||||
|
||||
@ -17,7 +17,7 @@
|
||||
#define IFPAGE_KEYVAL 0x15e3
|
||||
#ifndef BYTESWAP
|
||||
#ifdef BIGVM
|
||||
/* Normal definition, for big-indian BIGVM machines */
|
||||
/* Normal definition, for big-endian BIGVM machines */
|
||||
typedef struct ifpage {
|
||||
DLword currentfxp;
|
||||
DLword resetfxp;
|
||||
@ -105,7 +105,7 @@ typedef struct ifpage {
|
||||
int process_size; /* was lastnumchars */
|
||||
} IFPAGE;
|
||||
#else
|
||||
/* Normal definition, for big-indian machines */
|
||||
/* Normal definition, for big-endian machines */
|
||||
typedef struct ifpage {
|
||||
DLword currentfxp;
|
||||
DLword resetfxp;
|
||||
|
||||
@ -4,7 +4,7 @@
|
||||
/* */
|
||||
/* inlinedefs386i.c */
|
||||
/* */
|
||||
/* Dispatch-loop macro devinitions specific to the Sun386i */
|
||||
/* Dispatch-loop macro definitions specific to the Sun386i */
|
||||
/* */
|
||||
/************************************************************************/
|
||||
|
||||
|
||||
@ -12,7 +12,7 @@
|
||||
#ifndef IOPAGE_DEFINED
|
||||
#define IOPAGE_DEFINED (1)
|
||||
#ifndef BYTESWAP
|
||||
/* Normal definition, for big-indian machines */
|
||||
/* Normal definition, for big-endian machines */
|
||||
typedef struct iopage {
|
||||
DLword dummy0[022];
|
||||
DLword dlmaintpanel;
|
||||
|
||||
@ -21,7 +21,7 @@ typedef struct {
|
||||
u_char lastbyte;
|
||||
void (*prev_handler)();
|
||||
#endif /* DOS */
|
||||
void (* sync_device)(); /* Make reality and emualtor coinside with eachother */
|
||||
void (* sync_device)(); /* Make reality and emulator coincide with each other */
|
||||
void (* enter_device)();
|
||||
void (* exit_device)();
|
||||
void (* device_event)();
|
||||
|
||||
@ -141,7 +141,7 @@ typedef struct
|
||||
LispPTR deadkeyalist;
|
||||
} KBEVENT; /* CHANGED-BY-TAKE ***/
|
||||
|
||||
/*** OBSLOETE
|
||||
/*** OBSOLETE
|
||||
**#define RCLK(hi,lo) \
|
||||
{ \
|
||||
struct timeval time;\
|
||||
|
||||
@ -34,7 +34,7 @@ typedef struct ufn_entry
|
||||
{
|
||||
DLword atom_name; /* UFN's atomindex */
|
||||
unsigned byte_num : 8; /* num of byte code */
|
||||
unsigned arg_num : 8; /* num of argments */
|
||||
unsigned arg_num : 8; /* num of arguments */
|
||||
} UFN;
|
||||
|
||||
typedef struct closure_type
|
||||
@ -56,7 +56,7 @@ typedef struct ufn_entry
|
||||
{
|
||||
DLword atom_name; /* UFN's atomindex */
|
||||
unsigned byte_num : 8; /* num of byte code */
|
||||
unsigned arg_num : 8; /* num of argments */
|
||||
unsigned arg_num : 8; /* num of arguments */
|
||||
} UFN;
|
||||
|
||||
typedef struct closure_type
|
||||
@ -78,7 +78,7 @@ typedef struct interrupt_state
|
||||
unsigned stackoverflow :1;
|
||||
unsigned storagefull :1;
|
||||
unsigned waitinginterrupt :1;
|
||||
unsigned nil :8; /* mask of ints being processes */
|
||||
unsigned nil :8; /* mask of ints being processed */
|
||||
DLword intcharcode;
|
||||
} INTSTAT;
|
||||
|
||||
@ -190,7 +190,7 @@ typedef struct consstr
|
||||
|
||||
typedef struct ufn_entry
|
||||
{
|
||||
unsigned arg_num : 8; /* num of argments */
|
||||
unsigned arg_num : 8; /* num of arguments */
|
||||
unsigned byte_num : 8; /* num of byte code */
|
||||
DLword atom_name; /* UFN's atomindex */
|
||||
} UFN;
|
||||
@ -211,7 +211,7 @@ typedef struct consstr
|
||||
|
||||
typedef struct ufn_entry
|
||||
{
|
||||
unsigned arg_num : 8; /* num of argments */
|
||||
unsigned arg_num : 8; /* num of arguments */
|
||||
unsigned byte_num : 8; /* num of byte code */
|
||||
DLword atom_name; /* UFN's atomindex */
|
||||
} UFN;
|
||||
@ -395,7 +395,7 @@ GetLoWord:
|
||||
/****************************************************
|
||||
GetLongWord:
|
||||
address: DLword*
|
||||
retrun: int
|
||||
return: int
|
||||
*****************************************************/
|
||||
#define GetLongWord(address) (*((LispPTR *) (address)))
|
||||
|
||||
@ -501,7 +501,7 @@ DOSTACKOVERFLOW(argnum,bytenum) if it needs hardreturn-cleanup
|
||||
#define STKLIM 0x1FFFF
|
||||
#define FRAMESIZE 10 /* size of frameex1: 10 words */
|
||||
#define FNHEADSIZE 8 /* size of fnhead: 8 words */
|
||||
#define BFSIZE 2 /* size of basci frame pointer: 2 words */
|
||||
#define BFSIZE 2 /* size of basic frame pointer: 2 words */
|
||||
|
||||
#define BITSPER_DLWORD 16
|
||||
#define BITSPER_CELL 32
|
||||
@ -531,7 +531,7 @@ DOSTACKOVERFLOW(argnum,bytenum) if it needs hardreturn-cleanup
|
||||
|
||||
#define AtomHTSIZE 256 * DLWORDSPER_PAGE
|
||||
|
||||
#define MAXPNCHARS 255 /* Maximam length of PnChars */
|
||||
#define MAXPNCHARS 255 /* Maximum length of PnChars */
|
||||
|
||||
#define GET_NATIVE_ADDR(fnobject) \
|
||||
*((int *) ((UNSIGNED)fnobject + fnobject->startpc - 4))
|
||||
|
||||
@ -37,7 +37,7 @@
|
||||
if (*(lv_vp + 1) == 0) { \
|
||||
/* \
|
||||
* The empty version field. \
|
||||
* This is regared as a versionless file. \
|
||||
* This is regarded as a versionless file. \
|
||||
*/ \
|
||||
*lv_vp = 0; \
|
||||
} else { \
|
||||
|
||||
@ -320,7 +320,7 @@ extern DLword *Lisp_world; /* To access LispSysout area */
|
||||
* Destructively modify the version part of pathname which is following the
|
||||
* Xerox Lisp file naming convention to UNIX one.
|
||||
* If the file name which is passed from Lisp has the version part, it must be
|
||||
* a valid one (i.e. construected with only number). This is guaranteed by Lisp
|
||||
* a valid one (i.e. constructed with only number). This is guaranteed by Lisp
|
||||
* code.
|
||||
* This macro should be called at the top of the routines which accept the
|
||||
* file name from lisp before converting it into UNIX file name, because
|
||||
|
||||
20
inc/lpkit.h
20
inc/lpkit.h
@ -65,7 +65,7 @@
|
||||
if(Warn_count == MAX_WARN_COUNT) \
|
||||
{ \
|
||||
fprintf(stderr, \
|
||||
"*** Surpressing further rounding warnings\n"); \
|
||||
"*** Suppressing further rounding warnings\n"); \
|
||||
} \
|
||||
} \
|
||||
} \
|
||||
@ -226,14 +226,14 @@ typedef struct _lprec
|
||||
int sum; /* The size of the variables + the slacks */
|
||||
int sum_alloc;
|
||||
|
||||
short names_used; /* Flag to indecate if names for rows and
|
||||
short names_used; /* Flag to indicate if names for rows and
|
||||
columns are used */
|
||||
nstring *row_name; /* rows_alloc+1 */
|
||||
nstring *col_name; /* columns_alloc+1 */
|
||||
|
||||
/* Row[0] of the sparce matrix is the objective function */
|
||||
/* Row[0] of the sparse matrix is the objective function */
|
||||
|
||||
int non_zeros; /* The number of elements in the sparce matrix*/
|
||||
int non_zeros; /* The number of elements in the sparse matrix*/
|
||||
int mat_alloc; /* The allocated size for matrix sized
|
||||
structures */
|
||||
matrec *mat; /* mat_alloc :The sparse matrix */
|
||||
@ -251,7 +251,7 @@ typedef struct _lprec
|
||||
changing, but before `Bound transformation' */
|
||||
REAL *rh; /* rows_alloc+1 :As orig_rh, but after Bound
|
||||
transformation */
|
||||
REAL *rhs; /* rows_alloc+1 :The RHS of the curent simplex
|
||||
REAL *rhs; /* rows_alloc+1 :The RHS of the current simplex
|
||||
tableau */
|
||||
short *must_be_int; /* sum_alloc+1 :TRUE if variable must be
|
||||
Integer */
|
||||
@ -327,7 +327,7 @@ typedef struct _lprec
|
||||
REAL lag_bound; /* the lagrangian lower bound */
|
||||
|
||||
short valid; /* Has this lp pased the 'test' */
|
||||
REAL infinite; /* ## numercal stuff */
|
||||
REAL infinite; /* ## numerical stuff */
|
||||
REAL epsilon; /* ## */
|
||||
REAL epsb; /* ## */
|
||||
REAL epsd; /* ## */
|
||||
@ -423,7 +423,7 @@ void set_row_name(lprec *lp, int row, nstring new_name);
|
||||
/* Set the name of a constraint row, make sure that the name has < 25 characters */
|
||||
|
||||
void set_col_name(lprec *lp, int column, nstring new_name);
|
||||
/* Set the name of a varaible column, make sure that the name has < 25 characters */
|
||||
/* Set the name of a variable column, make sure that the name has < 25 characters */
|
||||
|
||||
void auto_scale(lprec *lp);
|
||||
/* Automatic scaling of the problem */
|
||||
@ -441,7 +441,7 @@ int lag_solve(lprec *lp, REAL start_bound, int num_iter, short verbose);
|
||||
/* Do NumIter iterations with Lagrangian relaxation constraints */
|
||||
|
||||
void reset_basis(lprec *lp);
|
||||
/* Reset the basis of a problem, can be usefull in case of degeneracy - JD */
|
||||
/* Reset the basis of a problem, can be useful in case of degeneracy - JD */
|
||||
|
||||
REAL mat_elm(lprec *lp, int row, int column);
|
||||
/* get a single element from the matrix */
|
||||
@ -472,7 +472,7 @@ void write_LP(lprec *lp, FILE *output);
|
||||
/* write a LP file to output */
|
||||
|
||||
void print_lp(lprec *lp);
|
||||
/* Print the current problem, only usefull in very small (test) problems.
|
||||
/* Print the current problem, only useful in very small (test) problems.
|
||||
Shows the effect of scaling */
|
||||
|
||||
void print_solution(lprec *lp);
|
||||
@ -487,7 +487,7 @@ void print_scales(lprec *lp);
|
||||
|
||||
|
||||
|
||||
/* functions used internaly by the lp toolkit */
|
||||
/* functions used internally by the lp toolkit */
|
||||
void error(char *format, ...);
|
||||
void inc_mat_space(lprec *lp, int max_extra);
|
||||
void inc_row_space(lprec *lp);
|
||||
|
||||
@ -343,7 +343,7 @@ typedef struct{
|
||||
LispPTR MOVEFN;
|
||||
LispPTR WTITLE;
|
||||
LispPTR NEWREGION;
|
||||
LispPTR WBORDER; /* Assumed to allways be a SMALLP */
|
||||
LispPTR WBORDER; /* Assumed to always be a SMALLP */
|
||||
LispPTR PROCESS;
|
||||
LispPTR WINDOWENTRYFN;
|
||||
LispPTR SCREEN;
|
||||
|
||||
2
inc/my.h
2
inc/my.h
@ -30,7 +30,7 @@
|
||||
/* */
|
||||
/* N _ M a k e F l o a t */
|
||||
/* */
|
||||
/* Get a numeric argument as a flowting-point number, converting */
|
||||
/* Get a numeric argument as a floating-point number, converting */
|
||||
/* from SMALLP or FIXP, if necessary. */
|
||||
/* */
|
||||
/************************************************************************/
|
||||
|
||||
@ -101,7 +101,7 @@ struct fnhead{
|
||||
unsigned nlocals :8; /* ?? */
|
||||
unsigned fvaroffset :8;
|
||||
/* DLword offset from head of NameTable */
|
||||
/* NameTable of variavle length is follwing with this structure. */
|
||||
/* NameTable of variable length is following with this structure. */
|
||||
};
|
||||
|
||||
|
||||
@ -381,7 +381,7 @@ typedef struct definition_cell {
|
||||
/************************************************************************/
|
||||
|
||||
/* The code generator must expand this differently, depending on
|
||||
the number of paramaters available to the function.
|
||||
the number of parameters available to the function.
|
||||
*/
|
||||
|
||||
#define framesetup(x, stkmin, swapped_func_obj) { \
|
||||
|
||||
@ -2,7 +2,7 @@
|
||||
|
||||
|
||||
/*************************************************
|
||||
This is OSMESSAGE stuf.
|
||||
This is OSMESSAGE stuff.
|
||||
|
||||
Print a console message.
|
||||
*************************************************/
|
||||
|
||||
@ -84,7 +84,7 @@
|
||||
|
||||
|
||||
/**** Calls when invoke the function is assumed
|
||||
that it is called by CONTEXTSW in orginal LISP code **/
|
||||
that it is called by CONTEXTSW in original LISP code **/
|
||||
|
||||
#define BEFORE_CONTEXTSW \
|
||||
{ CurrentStackPTR += 2; \
|
||||
|
||||
@ -74,7 +74,7 @@ typedef struct fnhead{
|
||||
unsigned nlocals : 8; /* ?? */
|
||||
unsigned fvaroffset : 8;
|
||||
/* DLword offset from head of NameTable */
|
||||
/* NameTable of variavle length is follwing with this structure. */
|
||||
/* NameTable of variable length is following with this structure. */
|
||||
} FNHEAD;
|
||||
|
||||
|
||||
@ -200,7 +200,7 @@ typedef struct fnhead
|
||||
/* DLword offset from head of NameTable */
|
||||
unsigned nlocals :8; /* ?? */
|
||||
DLword ntsize; /* size of NameTable */
|
||||
/* NameTable of variavle length is follwing with this structure. */
|
||||
/* NameTable of variable length is following with this structure. */
|
||||
} FNHEAD;
|
||||
|
||||
|
||||
|
||||
@ -155,7 +155,7 @@ error Must specify RELEASE to build Medley.
|
||||
/* */
|
||||
/* Architecture-specific flags: Set flags */
|
||||
/* based on thing we know about the architecture */
|
||||
/* or idiosyncracies of the machine we're compiling for. */
|
||||
/* or idiosyncrasies of the machine we're compiling for. */
|
||||
/* */
|
||||
/* Defaults: Unaligned fetches OK UNALIGNED_FETCH_OK */
|
||||
/* type char is signed SIGNED_CHARS */
|
||||
|
||||
52
src/dir.c
52
src/dir.c
@ -97,7 +97,7 @@ extern int Dummy_errno;
|
||||
* Name: SetupMatch
|
||||
*
|
||||
* Argument: char *tname Target name including name ,extension and version.
|
||||
* char *pname Pattern including name and extenstion.
|
||||
* char *pname Pattern including name and extension.
|
||||
* char *text The place where separated target extension will be
|
||||
* stored.
|
||||
* char *pext The place where separated pattern extension will be
|
||||
@ -107,11 +107,11 @@ extern int Dummy_errno;
|
||||
*
|
||||
* Value: N/A
|
||||
*
|
||||
* Side Effect: The string tname and pname points are destructivly modified.
|
||||
* Side Effect: The string tname and pname points are destructively modified.
|
||||
*
|
||||
* Description:
|
||||
*
|
||||
* Split target and pattern to each component for the convinience of match_pattern
|
||||
* Split target and pattern to each component for the convenience of match_pattern
|
||||
* routine.
|
||||
*/
|
||||
|
||||
@ -221,7 +221,7 @@ static int match_pattern(char *tp, char *pp)
|
||||
if (inastr) {
|
||||
/*
|
||||
* Try to find a character which match to
|
||||
* a character psp points from a charcter
|
||||
* a character psp points from a character
|
||||
* next to tsp. If found retry from there.
|
||||
*/
|
||||
for (tp = tsp + 1; *tp != '\0' && *tp != *psp; tp++) {}
|
||||
@ -270,10 +270,10 @@ int make_old_version(char *old, char *file)
|
||||
/*
|
||||
* FINFO and FPROP are used to store the information of the enumerated files
|
||||
* and directories. They are arranged in a form of linked list. Each list is
|
||||
* corresponding to the each directory enumeratreion. All of the informations
|
||||
* corresponding to the each directory enumeration. All of the informations
|
||||
* Lisp needs are stored in the list. This list is in the emulator's address space
|
||||
* and can be specified by "ID" which is the interface between the emulator and Lisp
|
||||
* code. In this implementation, ID is represeted as an integer and is actually
|
||||
* code. In this implementation, ID is represented as an integer and is actually
|
||||
* an index of the array of the lists.
|
||||
*
|
||||
* To avoid the overhead of the FINFO and FPROP structure dynamic allocation and
|
||||
@ -434,13 +434,13 @@ int init_finfo() {
|
||||
* Value: If suceed, returns the id of linked list of FINFO structures,
|
||||
* otherwise -1.
|
||||
*
|
||||
* Side Effect: If needed, FinfoArray will be extened according to the value of
|
||||
* Side Effect: If needed, FinfoArray will be extended according to the value of
|
||||
* FINFOARRAYRSIZE.
|
||||
*
|
||||
* Description:
|
||||
*
|
||||
* Get an ID which can be used to name a linked list of FINFO structure. ID is
|
||||
* represeted as an integer, and it is actualy an index of an array FinfoArray.
|
||||
* represented as an integer, and it is actually an index of an array FinfoArray.
|
||||
*
|
||||
* If all entries of FinfoArray is occupied by linked lists of FINFO structures,
|
||||
* extended storage is allocated and old contents of the array are copied to the
|
||||
@ -478,9 +478,9 @@ static int get_finfo_id() {
|
||||
* enumerated.
|
||||
* FINFO **finfo_buf
|
||||
* The place where linked list of FINFO structures
|
||||
* reslt of the enumeration will be stored.
|
||||
* result of the enumeration will be stored.
|
||||
*
|
||||
* Value: If suceed, returns the number of enumerated files, otherwise -1.
|
||||
* Value: If succeed, returns the number of enumerated files, otherwise -1.
|
||||
*
|
||||
* Side Effect: None.
|
||||
*
|
||||
@ -761,9 +761,9 @@ static int enum_dsk_prop(char *dir, char *name, char *ver, FINFO **finfo_buf)
|
||||
* enumerated.
|
||||
* FINFO **finfo_buf
|
||||
* The place where linked list of FINFO structures
|
||||
* reslt of the enumeration will be stored.
|
||||
* result of the enumeration will be stored.
|
||||
*
|
||||
* Value: If suceed, returns the number of enumerated files, otherwise -1.
|
||||
* Value: If succeed, returns the number of enumerated files, otherwise -1.
|
||||
*
|
||||
* Side Effect: None.
|
||||
*
|
||||
@ -1010,9 +1010,9 @@ static int enum_dsk(char *dir, char *name, char *ver, FINFO **finfo_buf)
|
||||
* enumerated.
|
||||
* FINFO **finfo_buf
|
||||
* The place where linked list of FINFO structures
|
||||
* reslt of the enumeration will be stored.
|
||||
* result of the enumeration will be stored.
|
||||
*
|
||||
* Value: If suceed, returns the number of enumerated files, otherwise -1.
|
||||
* Value: If succeed, returns the number of enumerated files, otherwise -1.
|
||||
*
|
||||
* Side Effect: None.
|
||||
*
|
||||
@ -1212,9 +1212,9 @@ static int enum_ufs_prop(char *dir, char *name, char *ver, FINFO **finfo_buf)
|
||||
* enumerated.
|
||||
* FINFO **finfo_buf
|
||||
* The place where linked list of FINFO structures
|
||||
* reslt of the enumeration will be stored.
|
||||
* result of the enumeration will be stored.
|
||||
*
|
||||
* Value: If suceed, returns the number of enumerated files, otherwise -1.
|
||||
* Value: If succeed, returns the number of enumerated files, otherwise -1.
|
||||
*
|
||||
* Side Effect: None.
|
||||
*
|
||||
@ -1605,7 +1605,7 @@ static int trim_finfo_highest(FINFO **fp, int highestp)
|
||||
}
|
||||
} else {
|
||||
/*
|
||||
* Only versionless file exists. It is regared as
|
||||
* Only versionless file exists. It is regarded as
|
||||
* version 1.
|
||||
*/
|
||||
strcat(cp->lname, ";1");
|
||||
@ -1669,7 +1669,7 @@ static int trim_finfo_version(FINFO **fp, int rver)
|
||||
do {
|
||||
if (cp->dirp) {
|
||||
/*
|
||||
* Directory has no version, thus they should be remvoed.
|
||||
* Directory has no version, thus they should be removed.
|
||||
*/
|
||||
sp = cp = cp->next;
|
||||
continue;
|
||||
@ -1794,7 +1794,7 @@ static int trim_finfo_version(FINFO **fp, int rver)
|
||||
}
|
||||
} else {
|
||||
/*
|
||||
* Only versionless file exists. It is regared as
|
||||
* Only versionless file exists. It is regarded as
|
||||
* version 1. Unless rver is 1, we can remove it.
|
||||
*/
|
||||
if (rver != 1) {
|
||||
@ -1842,7 +1842,7 @@ static int trim_finfo_version(FINFO **fp, int rver)
|
||||
* Description:
|
||||
*
|
||||
* Prepare an area to be used as a sort buffer by qsort routine, and arrange the
|
||||
* contents of the buffer to be convinience to qsort routine.
|
||||
* contents of the buffer to be convenience to qsort routine.
|
||||
* Caller have to free the area after sorting done.
|
||||
*/
|
||||
|
||||
@ -1916,7 +1916,7 @@ static int unix_filecmp(register FINFO **f1, register FINFO **f2)
|
||||
/*
|
||||
* Name: file_sort
|
||||
*
|
||||
* Argument: FINFO **fpp A pointer to a pointer adressing the linked FINFO
|
||||
* Argument: FINFO **fpp A pointer to a pointer addressing the linked FINFO
|
||||
* being sorted.
|
||||
* int n A number of FINFO structure linked.
|
||||
* int (*sortfn)()
|
||||
@ -2122,9 +2122,9 @@ LispPTR COM_gen_files(register LispPTR *args)
|
||||
* "{UNIX}<tmp>*.*;*" enumerates all of the files on /tmp directory
|
||||
* even if they never include ';' character in its name, as well as '.'.
|
||||
*
|
||||
* Thus I beleive, the specification should be clean upped as like,
|
||||
* Thus I believe, the specification should be clean upped as like,
|
||||
* "UNIX device always ignores the version field in it file name representation
|
||||
* even if a user specifies it expricitly".
|
||||
* even if a user specifies it explicitly".
|
||||
* But to keep a compatibility to an already released version, we have
|
||||
* to do some trick here.
|
||||
*/
|
||||
@ -2142,7 +2142,7 @@ LispPTR COM_gen_files(register LispPTR *args)
|
||||
|
||||
if (dskp) {
|
||||
/*
|
||||
* On {DSK}, we have to make sure dir is case insensitively exisiting
|
||||
* On {DSK}, we have to make sure dir is case insensitively existing
|
||||
* directory.
|
||||
*/
|
||||
if (true_name(dir) != -1) return (GetSmallp(-1));
|
||||
@ -2172,7 +2172,7 @@ LispPTR COM_gen_files(register LispPTR *args)
|
||||
else
|
||||
count = enum_dsk(dir, name, ver, &fp);
|
||||
} else {
|
||||
/* Makes UNIX device matchts any version. */
|
||||
/* Makes UNIX device matches any version. */
|
||||
strcpy(ver, "*");
|
||||
|
||||
if (propp)
|
||||
@ -2289,7 +2289,7 @@ LispPTR COM_next_file(register LispPTR *args)
|
||||
*
|
||||
* Description:
|
||||
*
|
||||
* When Lisp directory enumerateion file generator is exhausted or the enumerating
|
||||
* When Lisp directory enumeration file generator is exhausted or the enumerating
|
||||
* operation is aborted, this routine is called.
|
||||
* Abandon all cached information corresponding to the generator.
|
||||
*/
|
||||
|
||||
122
src/dsk.c
122
src/dsk.c
@ -211,7 +211,7 @@ static void separate_drive(char *lfname, char *drive)
|
||||
*
|
||||
* Accepts a Lisp full file name from Lisp code, and separate the host field
|
||||
* from other components. The result will be appropriate form to pass to
|
||||
* unixpathname. For convinience to unixpathname, the initial directory
|
||||
* unixpathname. For convenience to unixpathname, the initial directory
|
||||
* delimiter will be removed from lfname except the case lfname specifies the
|
||||
* very root directory. And if the lfname is regarded as other directory,
|
||||
* the trail directory delimiter is also removed.
|
||||
@ -284,7 +284,7 @@ void separate_host(char *lfname, char *host)
|
||||
* Argument: LispPTR *args args[0]
|
||||
* Full file name which is following the Xerox
|
||||
* Lisp file naming convention.
|
||||
* args[1] Recoginition mode. See IRM.
|
||||
* args[1] Recognition mode. See IRM.
|
||||
* args[2] Access mode. See IRM.
|
||||
* args[3] The place where the creation date of the
|
||||
* opened file should be stored.
|
||||
@ -360,7 +360,7 @@ LispPTR COM_openfile(register LispPTR *args)
|
||||
* Set up the flags argument for open system call.
|
||||
* And we have to handle the non existing directory case if the device is
|
||||
* DSK.
|
||||
* link_check_flg is used to determine wheter we have to check a hard-link
|
||||
* link_check_flg is used to determine whether we have to check a hard-link
|
||||
* based version control after opening a file.
|
||||
*/
|
||||
link_check_flg = 0;
|
||||
@ -391,10 +391,10 @@ LispPTR COM_openfile(register LispPTR *args)
|
||||
case RECOG_NEW:
|
||||
case RECOG_OLD_NEW:
|
||||
/*
|
||||
* In DSK device, the not exsting yet file can be recognized. In this
|
||||
* In DSK device, the not existing yet file can be recognized. In this
|
||||
* case, if there is a chance to create a new file, we have to make
|
||||
* sure that all directory to reach the recognized file exists.
|
||||
* Also we have to check the versionless file is collectly maintained
|
||||
* Also we have to check the versionless file is correctly maintained
|
||||
* or not when we have a chance to create a new file.
|
||||
*/
|
||||
switch (args[2]) {
|
||||
@ -407,7 +407,7 @@ LispPTR COM_openfile(register LispPTR *args)
|
||||
return (NIL);
|
||||
} else {
|
||||
/*
|
||||
* Even if OLD/NEW recoginition, opening a input
|
||||
* Even if OLD/NEW recognition, opening a input
|
||||
* stream never try to create a new file. Thus,
|
||||
* without O_CREAT.
|
||||
*/
|
||||
@ -452,7 +452,7 @@ LispPTR COM_openfile(register LispPTR *args)
|
||||
* from the actual file name on DSK, even after the Lisp name is converted
|
||||
* to UNIX form with unixpathname. Lisp always recognize a file on DSK
|
||||
* with version. If the versionless file exists and it is not correctly
|
||||
* maintained, that is it is not hard linked to the exisiting highest
|
||||
* maintained, that is it is not hard linked to the existing highest
|
||||
* versioned file, Lisp regards such link missing versionless file as
|
||||
* the highest versioned file, but the actual name on the file system
|
||||
* is still versionless.
|
||||
@ -460,7 +460,7 @@ LispPTR COM_openfile(register LispPTR *args)
|
||||
* complicated cases correctly and let us know the "Lisp recognizing"
|
||||
* name and "Real" name. Both of them are UNIX format.
|
||||
* At this point, we will use one of the four routines and get the
|
||||
* real name. We can use it to open a file which is requeste from Lisp
|
||||
* real name. We can use it to open a file which is requested from Lisp
|
||||
* with the "Lisp recognizing" name.
|
||||
*/
|
||||
|
||||
@ -521,7 +521,7 @@ LispPTR COM_openfile(register LispPTR *args)
|
||||
if (dskp && link_check_flg) {
|
||||
/*
|
||||
* When we are opening a file with a mode we might create a new file,
|
||||
* we have to make sure that versionless file is maintaied
|
||||
* we have to make sure that versionless file is maintained
|
||||
* correctly before we actually creating a new file, because a
|
||||
* created new file will change the status and the recognition on
|
||||
* the same file with the same recognition mode will return the
|
||||
@ -728,13 +728,13 @@ LispPTR COM_closefile(register LispPTR *args)
|
||||
|
||||
if (dskp) {
|
||||
/*
|
||||
* On {DSK}, we have to make sure dir is case sensitively exisiting
|
||||
* On {DSK}, we have to make sure dir is case sensitively existing
|
||||
* directory.
|
||||
*/
|
||||
if (true_name(dir) != -1) return (NIL);
|
||||
|
||||
/*
|
||||
* There is a very troublesom problem here. The file name Lisp
|
||||
* There is a very troublesome problem here. The file name Lisp
|
||||
* recognizes is not always the same as the name which COM_openfile
|
||||
* used to open the file. Sometimes COM_openfile uses the versionless
|
||||
* file name to open a file, although Lisp always recognizes with
|
||||
@ -856,13 +856,13 @@ LispPTR COM_closefile(register LispPTR *args)
|
||||
|
||||
if (dskp) {
|
||||
/*
|
||||
* On {DSK}, we have to make sure dir is case sensitively exisiting
|
||||
* On {DSK}, we have to make sure dir is case sensitively existing
|
||||
* directory.
|
||||
*/
|
||||
if (true_name(dir) != -1) return (NIL);
|
||||
|
||||
/*
|
||||
* There is a very troublesom problem here. The file name Lisp
|
||||
* There is a very troublesome problem here. The file name Lisp
|
||||
* recognizes is not always the same as the name which COM_openfile
|
||||
* used to open the file. Sometimes COM_openfile uses the versionless
|
||||
* file name to open a file, although Lisp always recognizes with
|
||||
@ -923,7 +923,7 @@ LispPTR COM_closefile(register LispPTR *args)
|
||||
* Name: DSK_getfilename
|
||||
*
|
||||
* Argument: LispPTR *args args[0] Full file name in Lisp format.
|
||||
* args[1] Rcoginition mode. See IRM.
|
||||
* args[1] Recognition mode. See IRM.
|
||||
* args[2] Name area where the recognized full file name
|
||||
* will be stored.
|
||||
* args[3] The place where the error number should be
|
||||
@ -995,7 +995,7 @@ LispPTR DSK_getfilename(register LispPTR *args)
|
||||
case RECOG_OLD:
|
||||
/*
|
||||
* "Old" file means the "newest existing" file. Thus, we have to
|
||||
* check dir is an existing directory or not. The serach have to
|
||||
* check dir is an existing directory or not. The search has to
|
||||
* be done in case insensitive manner. true_name does this work.
|
||||
*/
|
||||
|
||||
@ -1009,7 +1009,7 @@ LispPTR DSK_getfilename(register LispPTR *args)
|
||||
*/
|
||||
if (strcmp(name, "") == 0) {
|
||||
/*
|
||||
* The file name is specified with a trail directory delimitor.
|
||||
* The file name is specified with a trail directory delimiter.
|
||||
* We should recognize it as a directory.
|
||||
*/
|
||||
strcpy(aname, dir);
|
||||
@ -1053,7 +1053,7 @@ LispPTR DSK_getfilename(register LispPTR *args)
|
||||
}
|
||||
if (strcmp(name, "") == 0) {
|
||||
/*
|
||||
* The file name is specified with a trail directory delimitor.
|
||||
* The file name is specified with a trail directory delimiter.
|
||||
* We should recognize it as a directory.
|
||||
*/
|
||||
strcpy(aname, dir);
|
||||
@ -1085,7 +1085,7 @@ LispPTR DSK_getfilename(register LispPTR *args)
|
||||
/*
|
||||
* "New" file means the "not existing" file. Thus it is not
|
||||
* necessary that dir is an existing directory. If dir is not
|
||||
* an exisiting directory, we returns the specified file name
|
||||
* an existing directory, we returns the specified file name
|
||||
* as if, the subsequent OPENFILE will find the truth.
|
||||
*/
|
||||
if (true_name(dir) != -1) {
|
||||
@ -1093,7 +1093,7 @@ LispPTR DSK_getfilename(register LispPTR *args)
|
||||
dirp = 0;
|
||||
} else if (strcmp(name, "") == 0) {
|
||||
/*
|
||||
* The file name is specified with a trail directory delimitor.
|
||||
* The file name is specified with a trail directory delimiter.
|
||||
* We should recognize it as a directory.
|
||||
*/
|
||||
strcpy(aname, dir);
|
||||
@ -1270,7 +1270,7 @@ LispPTR DSK_deletefile(register LispPTR *args)
|
||||
* If the specified file is deleted from
|
||||
* outside of Lisp during the last time
|
||||
* Lisp recognize it and now, this case
|
||||
* will occure.
|
||||
* will occur.
|
||||
*/
|
||||
|
||||
/*
|
||||
@ -1298,7 +1298,7 @@ LispPTR DSK_deletefile(register LispPTR *args)
|
||||
/*
|
||||
* If a versionless file exists, we have to check the link status of it,
|
||||
* because deleting a versionless file or a file to which a versionless
|
||||
* file is linked will destroy the concistency of the version status.
|
||||
* file is linked will destroy the consistency of the version status.
|
||||
*/
|
||||
|
||||
if (check_vless_link(vless, varray, fbuf, &rval) == 0) return (NIL);
|
||||
@ -1329,7 +1329,7 @@ LispPTR DSK_deletefile(register LispPTR *args)
|
||||
* Although the versionfile is specified, it is not linked
|
||||
* to any file in varray. We should not maintain the version
|
||||
* status after deleting the versionless file, because
|
||||
* we cannot say wheter the versionless file is actually under
|
||||
* we cannot say whether the versionless file is actually under
|
||||
* control of the Medley DSK file system or not.
|
||||
*/
|
||||
TIMEOUT(rval = unlink(vless));
|
||||
@ -1425,7 +1425,7 @@ LispPTR DSK_renamefile(register LispPTR *args)
|
||||
if (unpack_filename(dst, dir, fbuf, ver, 1) == 0) return (NIL);
|
||||
/*
|
||||
* The destination file has been recognized as new file. Thus we have
|
||||
* to make sure that the directory exisits.
|
||||
* to make sure that the directory exists.
|
||||
*/
|
||||
if (make_directory(dir) == 0) return (NIL);
|
||||
|
||||
@ -1452,7 +1452,7 @@ LispPTR DSK_renamefile(register LispPTR *args)
|
||||
* no member of the destination family, there is nothing to do. If there
|
||||
* is only a versionless file and, if the "real" destination is not the
|
||||
* versionless, we have to rename it to version 1. And last case, if the
|
||||
* "real" destination file is the file to which the versinless file is linked,
|
||||
* "real" destination file is the file to which the versionless file is linked,
|
||||
* we have to unlink the versionless file.
|
||||
*/
|
||||
if (!NoFileP(varray)) {
|
||||
@ -1491,7 +1491,7 @@ LispPTR DSK_renamefile(register LispPTR *args)
|
||||
* If the specified file is deleted from
|
||||
* outside of Lisp during the last time
|
||||
* Lisp recognize it and now, this case
|
||||
* will occure.
|
||||
* will occur.
|
||||
*/
|
||||
|
||||
/*
|
||||
@ -1512,7 +1512,7 @@ LispPTR DSK_renamefile(register LispPTR *args)
|
||||
/*
|
||||
* If a versionless file exists, we have to check the link status
|
||||
* of it, because renaming a versionless file or a file to which a
|
||||
* versionless file is linked will destroy the concistency of the
|
||||
* versionless file is linked will destroy the consistency of the
|
||||
* version status.
|
||||
*/
|
||||
if (check_vless_link(vless, varray, fbuf, &rval) == 0) return (NIL);
|
||||
@ -1592,7 +1592,7 @@ LispPTR DSK_renamefile(register LispPTR *args)
|
||||
* Description:
|
||||
*
|
||||
* The implementation of the DIRECTORYNAMEP FDEV method for DSK device.
|
||||
* Performs the recoginition as well. Accepts the directory representation which
|
||||
* Performs the recognition as well. Accepts the directory representation which
|
||||
* obeys the Xerox Lisp file naming convention. The "true" name which is stored
|
||||
* on the area specified with the second argument also follows the Xerox Lisp
|
||||
* file naming convention, and it includes the initial and trail directory
|
||||
@ -1622,7 +1622,7 @@ LispPTR DSK_directorynamep(register LispPTR *args)
|
||||
* terminating character.
|
||||
*/
|
||||
len = fatp ? len + 4 + 1 : len + 2 + 1;
|
||||
/* -2 for the initial and trail directory delimitor. */
|
||||
/* -2 for the initial and trail directory delimiter. */
|
||||
if (len > MAXPATHLEN - 2) FileNameTooLong(NIL);
|
||||
|
||||
LispStringToCString(args[0], dirname, MAXPATHLEN);
|
||||
@ -1880,7 +1880,7 @@ LispPTR COM_getfileinfo(register LispPTR *args)
|
||||
*
|
||||
* The implementation of SETFILEINFO FDEV method for DSK and UNIX device. Try to
|
||||
* replace a value of a specified file attribute.
|
||||
* In this implementation, only WDATE(as well as Createion Date) and PROTECTION
|
||||
* In this implementation, only WDATE(as well as Creation Date) and PROTECTION
|
||||
* make sense.
|
||||
*/
|
||||
|
||||
@ -2042,7 +2042,7 @@ LispPTR COM_readpage(register LispPTR *args)
|
||||
if ((sbuf.st_mode & S_IFREG) != 0) {
|
||||
/*
|
||||
* The request file is a regular file. We have to make sure that
|
||||
* next byte read is at the beggning of the requested page of the
|
||||
* next byte read is at the beginning of the requested page of the
|
||||
* file. If the request file is special file, lseek is not needed.
|
||||
*/
|
||||
sklp:
|
||||
@ -2249,7 +2249,7 @@ LispPTR COM_truncatefile(register LispPTR *args)
|
||||
*
|
||||
* Value: If succeed, returns a Lisp T, otherwise Lisp NIL.
|
||||
*
|
||||
* Side Effect: If succeed, the current directory of this Lisp proecess will be changed.
|
||||
* Side Effect: If succeed, the current directory of this Lisp process will be changed.
|
||||
*
|
||||
* Description:
|
||||
*
|
||||
@ -2345,12 +2345,12 @@ LispPTR COM_changedir(register LispPTR *args)
|
||||
* Description:
|
||||
*
|
||||
* Examines the statistics of the file system on which the specified sysout file
|
||||
* resides, and returns the number of available free blocks thorugh the specified
|
||||
* resides, and returns the number of available free blocks through the specified
|
||||
* buffer.
|
||||
* This routine is invoked just before the Lisp flushes its image on a sysout file so
|
||||
* as to make sure the Lisp image is gracefully written on a sysout file. See
|
||||
* \MAIKO.CHECKFREESPACE in MOD44IO.
|
||||
* The version controll based on a file naming convention is not applicable to a
|
||||
* The version control based on a file naming convention is not applicable to a
|
||||
* sysout file, even if the sysout file is specified on {DSK} device. The Lisp code
|
||||
* strips the version field by invoking DSK_getfilename with NON recognition mode.
|
||||
*/
|
||||
@ -2413,7 +2413,7 @@ LispPTR COM_getfreeblock(register LispPTR *args)
|
||||
|
||||
if (dskp) {
|
||||
/*
|
||||
* Although Lisp code gurantees the directory is an existing one,
|
||||
* Although Lisp code guarantees the directory is an existing one,
|
||||
* by calling DSK_getfilename, we check it again for safety.
|
||||
*/
|
||||
if (true_name(dir) != -1) return (NIL);
|
||||
@ -2737,7 +2737,7 @@ int true_name(register char *path)
|
||||
*
|
||||
* char *name The name which is searched on dir.
|
||||
*
|
||||
* Value: If name is recognized as an existing diretory, returns -1,
|
||||
* Value: If name is recognized as an existing directory, returns -1,
|
||||
* recognized as an existing file, returns 1, otherwise 0.
|
||||
*
|
||||
* Side Effect: If succeed, the contents of dir is replaced with the true name
|
||||
@ -2746,7 +2746,7 @@ int true_name(register char *path)
|
||||
* Description:
|
||||
*
|
||||
* Try to find the file or directory specified with name on the directory
|
||||
* specified with dir. The search is case insensitve.
|
||||
* specified with dir. The search is case insensitive.
|
||||
*
|
||||
*/
|
||||
|
||||
@ -2884,9 +2884,9 @@ static int make_directory(register char *dir)
|
||||
* Now, dir_buf contains the absolute path to the next
|
||||
* subdirectory or file. If one of the parent directories
|
||||
* are created, we have to create a new subdirectory
|
||||
* anyway. If all of the parent directories are exisiting
|
||||
* anyway. If all of the parent directories are existing
|
||||
* directories, we have to check this subdirectory is an
|
||||
* exisiting or not.
|
||||
* existing or not.
|
||||
*/
|
||||
if (maked) {
|
||||
#ifdef DOS
|
||||
@ -3122,8 +3122,8 @@ static int get_version_array(char *dir, char *file, FileName *varray, CurrentVAr
|
||||
int res;
|
||||
|
||||
/*
|
||||
* First of all, prepare a lower cased file name for the case insensitve
|
||||
* serch. Also we have to separate file name from its version field.
|
||||
* First of all, prepare a lower cased file name for the case insensitive
|
||||
* search. Also we have to separate file name from its version field.
|
||||
*/
|
||||
if (dir[1] == DRIVESEP) drive = dir[0];
|
||||
|
||||
@ -3187,7 +3187,7 @@ static int get_version_array(char *dir, char *file, FileName *varray, CurrentVAr
|
||||
svarray->version_no = 1;
|
||||
} else {
|
||||
/*
|
||||
* separater_version guranteeds ver is a numeric
|
||||
* separator_version guarantees ver is a numeric
|
||||
* string.
|
||||
*/
|
||||
svarray->version_no = atoi(ver);
|
||||
@ -3225,8 +3225,8 @@ static int get_version_array(char *dir, char *file, FileName *varray, CurrentVAr
|
||||
struct stat sbuf;
|
||||
|
||||
/*
|
||||
* First of all, prepare a lower cased file name for the case insensitve
|
||||
* serch. Also we have to separate file name from its version field.
|
||||
* First of all, prepare a lower cased file name for the case insensitive
|
||||
* search. Also we have to separate file name from its version field.
|
||||
*/
|
||||
strcpy(lcased_file, file);
|
||||
separate_version(lcased_file, ver, 1);
|
||||
@ -3245,9 +3245,9 @@ static int get_version_array(char *dir, char *file, FileName *varray, CurrentVAr
|
||||
*/
|
||||
|
||||
/*
|
||||
* Cache machaisme is not used now, because of the bug of Sun OS.
|
||||
* Cache mechanism is not used now, because of the bug of Sun OS.
|
||||
* Sometimes just after unlinking a file on a directory, the st_mtime
|
||||
* of the directory does not change. This will make Maiko beleive
|
||||
* of the directory does not change. This will make Maiko believe
|
||||
* cached version array is still valid, although it is already invalid.
|
||||
* sync(2) has no effect on such case.
|
||||
*/
|
||||
@ -3279,7 +3279,7 @@ static int get_version_array(char *dir, char *file, FileName *varray, CurrentVAr
|
||||
svarray->version_no = 0;
|
||||
} else {
|
||||
/*
|
||||
* separater_version guranteeds ver is a numeric
|
||||
* separator_version guarantees ver is a numeric
|
||||
* string.
|
||||
*/
|
||||
svarray->version_no = atoi(ver);
|
||||
@ -3423,7 +3423,7 @@ static int maintain_version(char *file, FileName *varray, int forcep)
|
||||
/*
|
||||
* The versionless file is not linked to any file in varray.
|
||||
* Thus, we have to link the versionless file to the file which
|
||||
* is versioned one higher than the exisiting highest version.
|
||||
* is versioned one higher than the existing highest version.
|
||||
*/
|
||||
FindHighestVersion(varray, entry, max_no);
|
||||
sprintf(ver, "%d", max_no + 1);
|
||||
@ -3485,7 +3485,7 @@ static int maintain_version(char *file, FileName *varray, int forcep)
|
||||
*
|
||||
* Argument: FileName *varray
|
||||
* The version array already filled by
|
||||
* get_version_array routin.
|
||||
* get_version_array routine.
|
||||
* char *file The place where the full file name of the found
|
||||
* versionless file will be stored.
|
||||
* char *dir Directory absolute path following the UNIX
|
||||
@ -3625,7 +3625,7 @@ static int check_vless_link(char *vless, FileName *varray, char *to_file, int *h
|
||||
* has been gathered.
|
||||
* FileName *varray
|
||||
* The version array already filled by
|
||||
* get_version_array routin.
|
||||
* get_version_array routine.
|
||||
* char *afile File name. It might include a version field.
|
||||
* The version field have to be following the
|
||||
* UNIX convention, that is "name.~##~", not
|
||||
@ -3673,7 +3673,7 @@ static int get_old(char *dir, FileName *varray, char *afile, char *vfile)
|
||||
|
||||
if (get_versionless(varray, vless, dir) == 0) {
|
||||
/*
|
||||
* There is no versionless file, but at least one vernsioned
|
||||
* There is no versionless file, but at least one versioned
|
||||
* file exists.
|
||||
*/
|
||||
if (*ver == '\0') {
|
||||
@ -3744,7 +3744,7 @@ static int get_old(char *dir, FileName *varray, char *afile, char *vfile)
|
||||
if (*ver == '\0') {
|
||||
/*
|
||||
* No version is specified. The one higher than an
|
||||
* exisiting maximum version is dealt with as the
|
||||
* existing maximum version is dealt with as the
|
||||
* old version, and it should be a version of the
|
||||
* link missing versionless file.
|
||||
*/
|
||||
@ -3824,7 +3824,7 @@ static int get_old(char *dir, FileName *varray, char *afile, char *vfile)
|
||||
* has been gathered.
|
||||
* FileName *varray
|
||||
* The version array already filled by
|
||||
* get_version_array routin.
|
||||
* get_version_array routine.
|
||||
* char *afile File name. It might include a version field.
|
||||
* The version field have to be following the
|
||||
* UNIX convention, that is "name.~##~", not
|
||||
@ -3872,7 +3872,7 @@ static int get_oldest(char *dir, FileName *varray, char *afile, char *vfile)
|
||||
|
||||
if (get_versionless(varray, vless, dir) == 0) {
|
||||
/*
|
||||
* There is no versionless file, but at least one vernsioned
|
||||
* There is no versionless file, but at least one versioned
|
||||
* file exists.
|
||||
*/
|
||||
if (*ver == '\0') {
|
||||
@ -4020,7 +4020,7 @@ static int get_oldest(char *dir, FileName *varray, char *afile, char *vfile)
|
||||
* has been gathered.
|
||||
* FileName *varray
|
||||
* The version array already filled by
|
||||
* get_version_array routin.
|
||||
* get_version_array routine.
|
||||
* char *afile File name. It might include a version field.
|
||||
* The version field have to be following the
|
||||
* UNIX convention, that is "name.~##~", not
|
||||
@ -4096,7 +4096,7 @@ static int get_new(char *dir, FileName *varray, char *afile, char *vfile)
|
||||
|
||||
if (get_versionless(varray, vless, dir) == 0) {
|
||||
/*
|
||||
* There is no versionless file, but at least one vernsioned
|
||||
* There is no versionless file, but at least one versioned
|
||||
* file exists.
|
||||
*/
|
||||
if (*ver == '\0') {
|
||||
@ -4107,7 +4107,7 @@ static int get_new(char *dir, FileName *varray, char *afile, char *vfile)
|
||||
FindHighestVersion(varray, entry, max_no);
|
||||
sprintf(vbuf, "%d", max_no + 1);
|
||||
/*
|
||||
* We weill use the file name of the exisiting highest
|
||||
* We will use the file name of the existing highest
|
||||
* versioned file as the name of the new file, so that
|
||||
* new file is as the same case as old.
|
||||
*/
|
||||
@ -4191,7 +4191,7 @@ static int get_new(char *dir, FileName *varray, char *afile, char *vfile)
|
||||
if (*ver == '\0') {
|
||||
/*
|
||||
* No version is specified. The two higher than an
|
||||
* exisiting maximum version is dealt with as the
|
||||
* existing maximum version is dealt with as the
|
||||
* new version, because the one higher version is
|
||||
* dealt with as the actual version of the link
|
||||
* missing versionless file.
|
||||
@ -4256,7 +4256,7 @@ static int get_new(char *dir, FileName *varray, char *afile, char *vfile)
|
||||
if (*ver == '\0') {
|
||||
/*
|
||||
* No version is specified. The one higher than the
|
||||
* exisiting highest versioned file in varray is a
|
||||
* existing highest versioned file in varray is a
|
||||
* new file.
|
||||
*/
|
||||
FindHighestVersion(varray, entry, max_no);
|
||||
@ -4314,7 +4314,7 @@ static int get_new(char *dir, FileName *varray, char *afile, char *vfile)
|
||||
* has been gathered.
|
||||
* FileName *varray
|
||||
* The version array already filled by
|
||||
* get_version_array routin.
|
||||
* get_version_array routine.
|
||||
* char *afile File name. It might include a version field.
|
||||
* The version field have to be following the
|
||||
* UNIX convention, that is "name.~##~", not
|
||||
@ -4385,7 +4385,7 @@ static int get_old_new(char *dir, FileName *varray, char *afile, char *vfile)
|
||||
|
||||
if (get_versionless(varray, vless, dir) == 0) {
|
||||
/*
|
||||
* There is no versionless file, but at least one vernsioned
|
||||
* There is no versionless file, but at least one versioned
|
||||
* file exists.
|
||||
*/
|
||||
if (*ver == '\0') {
|
||||
@ -4471,7 +4471,7 @@ static int get_old_new(char *dir, FileName *varray, char *afile, char *vfile)
|
||||
if (*ver == '\0') {
|
||||
/*
|
||||
* No version is specified. The one higher than an
|
||||
* exisiting maximum version is dealt with as the
|
||||
* existing maximum version is dealt with as the
|
||||
* old version, and it should be a version of the
|
||||
* link missing versionless file.
|
||||
*/
|
||||
|
||||
@ -147,7 +147,7 @@ void DSP_Cursor(LispPTR *args, int argnum)
|
||||
#endif /* SUNDISPLAY */
|
||||
|
||||
#ifdef XWINDOW
|
||||
/* For X-Windows, set the cursor the the given location. */
|
||||
/* For X-Windows, set the cursor to the given location. */
|
||||
Set_XCursor((int)(args[0] & 0xFFFF), (int)(args[1] & 0xFFFF));
|
||||
#endif /* XWINDOW */
|
||||
}
|
||||
@ -240,7 +240,7 @@ void flip_cursor() {
|
||||
/* since this is called frequently, and you don't want to have
|
||||
to build a different LDE to run the 2 parts of a Loadup, there is
|
||||
an ifdef AND a test. This way we don't generate
|
||||
extra code for anybody elses building an LDE
|
||||
extra code for anybody else building an LDE
|
||||
except those who want to try building loadups. */
|
||||
|
||||
if (!for_makeinit) {
|
||||
|
||||
@ -80,7 +80,7 @@ static char *id = "$Id: gchtfind.c,v 1.3 1999/05/31 23:35:31 sybalsky Exp $ Copy
|
||||
*/
|
||||
|
||||
/*
|
||||
* NewEntry is never called in the course of the reclaimation.
|
||||
* NewEntry is never called in the course of the reclamation.
|
||||
* Thus STKREF case is not needed.
|
||||
*/
|
||||
#define NewEntry(entry, hiptr, casep, ptr) \
|
||||
@ -99,7 +99,7 @@ static char *id = "$Id: gchtfind.c,v 1.3 1999/05/31 23:35:31 sybalsky Exp $ Copy
|
||||
}
|
||||
|
||||
/*
|
||||
* RecNewEntry is called in the course of the reclaimation.
|
||||
* RecNewEntry is called in the course of the reclamation.
|
||||
* Does not maintain the allocation count.
|
||||
*/
|
||||
#define RecNewEntry(entry, hiptr, casep, ptr) \
|
||||
@ -165,7 +165,7 @@ static char *id = "$Id: gchtfind.c,v 1.3 1999/05/31 23:35:31 sybalsky Exp $ Copy
|
||||
}
|
||||
|
||||
/*
|
||||
* RecModEntry is called in the course of the reclaimation.
|
||||
* RecModEntry is called in the course of the reclamation.
|
||||
* Does not maintain the allocation count.
|
||||
*/
|
||||
#define RecModEntry(entry, contents, ptr, casep, remove) \
|
||||
@ -320,7 +320,7 @@ LispPTR htfind(LispPTR ptr, int casep) {
|
||||
|
||||
/*
|
||||
* Following two tests were moved into GCLOOKUP macro
|
||||
* for efficency.
|
||||
* for efficiency.
|
||||
*/
|
||||
/*
|
||||
if (GetTypeEntry(ptr) & TT_NOREF) return NIL;
|
||||
@ -441,7 +441,7 @@ LispPTR rec_htfind(LispPTR ptr, int casep) {
|
||||
disabled. */
|
||||
/*
|
||||
* Following two tests were moved into GCLOOKUP macro
|
||||
* for efficency.
|
||||
* for efficiency.
|
||||
*/
|
||||
/*
|
||||
if (GetTypeEntry(ptr) & TT_NOREF)
|
||||
|
||||
54
src/ufs.c
54
src/ufs.c
@ -170,7 +170,7 @@ exit_host_filesystem() {
|
||||
* Argument: LispPTR *args args[0]
|
||||
* Full file name in Lisp format.
|
||||
* args[1]
|
||||
* Rcoginition mode. See IRM.
|
||||
* Recognition mode. See IRM.
|
||||
* args[2]
|
||||
* Name area where the recognized full file name
|
||||
* will be stored.
|
||||
@ -201,7 +201,7 @@ LispPTR UFS_getfilename(LispPTR *args)
|
||||
Lisp_errno = (int *)(Addr68k_from_LADDR(args[3]));
|
||||
|
||||
LispStringLength(args[0], len, rval);
|
||||
len += 1; /* Add 1 for tuminating NULL char. */
|
||||
len += 1; /* Add 1 for terminating NULL char. */
|
||||
if (len > MAXPATHLEN) FileNameTooLong(NIL);
|
||||
|
||||
LispStringToCString(args[0], lfname, MAXPATHLEN);
|
||||
@ -237,7 +237,7 @@ LispPTR UFS_getfilename(LispPTR *args)
|
||||
* "New" file means the "not existing" file. UNIX device always
|
||||
* recognizes a not existing file as if, the subsequent OPENFILE will
|
||||
* find the truth.
|
||||
* "Non" reognition is used to recognize a sysout file.
|
||||
* "Non" recognition is used to recognize a sysout file.
|
||||
*/
|
||||
break;
|
||||
}
|
||||
@ -395,7 +395,7 @@ LispPTR UFS_renamefile(LispPTR *args)
|
||||
* Description:
|
||||
*
|
||||
* The implementation of the DIRECTORYNAMEP FDEV method for UNIX device.
|
||||
* Performs the recoginition as well. Accepts the directory representation which
|
||||
* Performs the recognition as well. Accepts the directory representation which
|
||||
* obeys the Xerox Lisp file naming convention. The "true" name which is stored
|
||||
* on the area specified with the second argument also follows the Xerox Lisp
|
||||
* file naming convention, and it includes the initial and trail directory
|
||||
@ -416,7 +416,7 @@ LispPTR UFS_directorynamep(LispPTR *args)
|
||||
|
||||
LispStringLength(args[0], len, rval);
|
||||
len += 1;
|
||||
/* -2 for the initial and trail directory delimitor. */
|
||||
/* -2 for the initial and trail directory delimiter. */
|
||||
if (len > MAXPATHLEN - 2) FileNameTooLong(NIL);
|
||||
|
||||
LispStringToCString(args[0], dirname, MAXPATHLEN);
|
||||
@ -465,7 +465,7 @@ LispPTR UFS_directorynamep(LispPTR *args)
|
||||
* version form. {DSK} device invokes unixpathname
|
||||
* with versionp.
|
||||
* int genp If 1, it indicates unixpathname is called from
|
||||
* directory enmumerateion routine. In this case,
|
||||
* directory enumeration routine. In this case,
|
||||
* trail period which is used to specify an empty
|
||||
* extension field is treated specially.
|
||||
*
|
||||
@ -621,7 +621,7 @@ int unixpathname(char *src, char *dst, int versionp, int genp)
|
||||
} else {
|
||||
/*
|
||||
* In this case, we assume some user's home directory
|
||||
* is specifed in the form "~username".
|
||||
* is specified in the form "~username".
|
||||
*/
|
||||
for (++cp, np = name; *cp != '\0' && *cp != '>';) *np++ = *cp++;
|
||||
*np = '\0';
|
||||
@ -657,7 +657,7 @@ int unixpathname(char *src, char *dst, int versionp, int genp)
|
||||
} else {
|
||||
/*
|
||||
* In this case, we assume some user's home directory
|
||||
* is specifed in the form "~username".
|
||||
* is specified in the form "~username".
|
||||
*/
|
||||
for (++cp, np = name; *cp != '\0' && *cp != '>';) *np++ = *cp++;
|
||||
*dp++ = DIRSEP;
|
||||
@ -674,7 +674,7 @@ int unixpathname(char *src, char *dst, int versionp, int genp)
|
||||
|
||||
/*
|
||||
* At this point, cp is placed at the point from which the source pathname
|
||||
* will be scaned, and dp is placed at the point on dst from which the
|
||||
* will be scanned, and dp is placed at the point on dst from which the
|
||||
* pathname will be copied.
|
||||
*/
|
||||
|
||||
@ -716,7 +716,7 @@ int unixpathname(char *src, char *dst, int versionp, int genp)
|
||||
* The Lisp directory is translated as
|
||||
* like "/users/akina/..~*~" by
|
||||
* unixpathname. Although such
|
||||
* file name representaion makes no sense,
|
||||
* file name representation makes no sense,
|
||||
* to avoid infinite loop, skip the
|
||||
* first period here, as well as down
|
||||
* a newdirflg.
|
||||
@ -825,8 +825,8 @@ int unixpathname(char *src, char *dst, int versionp, int genp)
|
||||
* confused by this case.
|
||||
*
|
||||
* Only case in which genp is 1 is unixpathname is used to convert
|
||||
* a pattern which is used to enumerate directory. In this csae,
|
||||
* for the convinience of the pattern matching routines, we don't
|
||||
* a pattern which is used to enumerate directory. In this case,
|
||||
* for the convenience of the pattern matching routines, we don't
|
||||
* care about the last period character.
|
||||
*/
|
||||
strcpy(fbuf1, lfname);
|
||||
@ -860,12 +860,12 @@ int unixpathname(char *src, char *dst, int versionp, int genp)
|
||||
* Name: lisppathname
|
||||
*
|
||||
* Argument: char *fullname UNIX full pathname.
|
||||
* char *lispname The pathnaem following the Xerox
|
||||
* char *lispname The pathname following the Xerox
|
||||
* Lisp naming convention.
|
||||
* The first argument fullname is assumed
|
||||
* the "true" name of lispname.
|
||||
* The lispname is used to determine which
|
||||
* charcter should be quoted in the result
|
||||
* character should be quoted in the result
|
||||
* Xerox Lisp pathname representation.
|
||||
* int dirp If 1, fullname is a directory. If 0,
|
||||
* fullname is a file.
|
||||
@ -885,7 +885,7 @@ int unixpathname(char *src, char *dst, int versionp, int genp)
|
||||
*
|
||||
* Converts the UNIX file name to Xerox Lisp file name. The fields which might
|
||||
* be included in the result filename are directory, name, extension, and version.
|
||||
* The result file name can use the quotation mark to quote the chracters which
|
||||
* The result file name can use the quotation mark to quote the characters which
|
||||
* are dealt with specially in the Xerox Lisp file naming convention. These
|
||||
* characters include "<", ">", ";", ".", and "'" itself. Notice that "." must be
|
||||
* quoted if it is used as a part of the extension field. Also notice that "<"
|
||||
@ -914,9 +914,9 @@ int lisppathname(char *fullname, char *lispname, int dirp, int versionp)
|
||||
|
||||
if (!dirp) {
|
||||
/*
|
||||
* The characters which are dealt with specialy (i.e. are quoted)
|
||||
* The characters which are dealt with specially (i.e. are quoted)
|
||||
* in the Xerox Lisp file naming convention are all valid in UNIX
|
||||
* file name convetion. So the conversion rule is almost
|
||||
* file name convention. So the conversion rule is almost
|
||||
* straightforward except the "extension" field. Only glancing
|
||||
* the UNIX file name, we cannot determine which period character
|
||||
* should be quoted in the result Xerox Lisp file name when more
|
||||
@ -951,7 +951,7 @@ int lisppathname(char *fullname, char *lispname, int dirp, int versionp)
|
||||
}
|
||||
|
||||
/*
|
||||
* Convertion rule of file name from UNIX to Xerox Lisp.
|
||||
* Conversion rule of file name from UNIX to Xerox Lisp.
|
||||
* UNIX Lisp
|
||||
* / < only if it is used as a root directory
|
||||
* delimiter.
|
||||
@ -1009,7 +1009,7 @@ int lisppathname(char *fullname, char *lispname, int dirp, int versionp)
|
||||
}
|
||||
|
||||
/*
|
||||
* Be careful dealing with the extenstion field. If we encounter with the
|
||||
* Be careful dealing with the extension field. If we encounter with the
|
||||
* period mark which was quoted in the original Lisp file name, we have
|
||||
* to quote it in the result file name.
|
||||
* First we count the period mark included in the Lisp file name, and
|
||||
@ -1064,8 +1064,8 @@ int lisppathname(char *fullname, char *lispname, int dirp, int versionp)
|
||||
*dp = '\0';
|
||||
|
||||
/*
|
||||
* exntensionp indicates whether exentsion field is included in a file name
|
||||
* or not. If extenstion field is not included, we have to add a period
|
||||
* extensionp indicates whether extension field is included in a file name
|
||||
* or not. If extension field is not included, we have to add a period
|
||||
* to specify empty extension field.
|
||||
*/
|
||||
strcpy(fbuf, namebuf);
|
||||
@ -1127,7 +1127,7 @@ int lisppathname(char *fullname, char *lispname, int dirp, int versionp)
|
||||
* Name: quote_fname
|
||||
*
|
||||
* Argument: char *file The root file name in UNIX format. "Root"
|
||||
* file name contains the name, extenstion and
|
||||
* file name contains the name, extension and
|
||||
* version fields. A valid version field is in a
|
||||
* form as ".~##~".
|
||||
*
|
||||
@ -1175,8 +1175,8 @@ int quote_fname(char *file)
|
||||
*dp = '\0';
|
||||
|
||||
/*
|
||||
* exntensionp indicates whether exentsion field is included in a file
|
||||
* name or not. If extenstion field is not included, we have to add a
|
||||
* extensionp indicates whether extension field is included in a file
|
||||
* name or not. If extension field is not included, we have to add a
|
||||
* period to specify empty extension field.
|
||||
*/
|
||||
separate_version(fbuf, ver, 1);
|
||||
@ -1221,7 +1221,7 @@ int quote_fname(char *file)
|
||||
* Name: quote_fname_ufs
|
||||
*
|
||||
* Argument: char *file The root file name in UNIX format. "Root"
|
||||
* file name contains the name, extenstion and
|
||||
* file name contains the name, extension and
|
||||
* version fields. A valid version field is in a
|
||||
* form as ".~##~".
|
||||
*
|
||||
@ -1260,8 +1260,8 @@ int quote_fname_ufs(char *file)
|
||||
*dp = '\0';
|
||||
|
||||
/*
|
||||
* exntensionp indicates whether exentsion field is included in a file
|
||||
* name or not. If extenstion field is not included, we have to add a
|
||||
* extensionp indicates whether extension field is included in a file
|
||||
* name or not. If extension field is not included, we have to add a
|
||||
* period to specify empty extension field.
|
||||
*/
|
||||
cp = fbuf;
|
||||
|
||||
10
src/xinit.c
10
src/xinit.c
@ -234,17 +234,17 @@ void Open_Display(DspInterface dsp)
|
||||
/*********************************************************************/
|
||||
/* */
|
||||
/* X _ i n i t */
|
||||
/* dsp: a display structure to be filled with all the neccessary */
|
||||
/* dsp: a display structure to be filled with all the necessary */
|
||||
/* information. */
|
||||
/* */
|
||||
/* lispbitmap: The bitmapdata that is to be dumped to the screen. */
|
||||
/* width_hint and height_hint: The requested size of the screen. The */
|
||||
/* width and height hints will be obeyed as close as possible */
|
||||
/* with respect to the physicalk limitations. This makes it */
|
||||
/* with respect to the physical limitations. This makes it */
|
||||
/* possible to get a screen that is larger (or smaller) than */
|
||||
/* the physical screen. 0 will give you some default value */
|
||||
/* depth_hint: The requested depth in bits. depth 1 can allways be */
|
||||
/* granted. Any value of 1 or less will yeild depth 1. */
|
||||
/* depth_hint: The requested depth in bits. depth 1 can always be */
|
||||
/* granted. Any value of 1 or less will yield depth 1. */
|
||||
/* */
|
||||
/* Return value: the lispbitmap or 1 if all is ok. else FALSE is */
|
||||
/* returned */
|
||||
@ -262,7 +262,7 @@ DspInterface X_init(DspInterface dsp, char *lispbitmap, int width_hint, int heig
|
||||
|
||||
dsp->identifier = Display_Name; /* This is a hack. The display name */
|
||||
/* has to dealt with in a more */
|
||||
/* gracefull way. */
|
||||
/* graceful way. */
|
||||
|
||||
/* Try to open the X display. If this isn't possible, we just */
|
||||
/* return FALSE. */
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user