Annotation of 42BSD/ucb/lisp/lisplib/manual/ch5.r, revision 1.1.1.1

1.1       root        1: 
                      2: 
                      3: 
                      4: 
                      5: 
                      6: 
                      7: 
                      8:                          CHAPTER  5
                      9: 
                     10: 
                     11:                         Input/Output
                     12: 
                     13: 
                     14: 
                     15: 
                     16:      The following functions are used to read from and write
                     17: to  external  devices  (e.g.  files)  and  programs (through
                     18: pipes).  All I/O goes through the lisp data type called  the
                     19: port.  A port may be open for either reading or writing, but
                     20: usually not both simultaneously (see _f_i_l_e_o_p_e_n ).  There  are
                     21: only  a  limited  number  of ports (20) and they will not be
                     22: reclaimed unless they are _c_l_o_s_ed.  All ports  are  reclaimed
                     23: by  a _r_e_s_e_t_i_o call, but this drastic step won't be necessary
                     24: if the program closes what it uses.
                     25: 
                     26:      If a port argument is not supplied to a function  which
                     27: requires  one  or  if  a  bad port argument (such as nil) is
                     28: given, then FRANZ LISP will use the default  port  according
                     29: to this scheme: If input is being done then the default port
                     30: is the value of the symbol piport and  if  output  is  being
                     31: done  then  the  default  port  is  the  value of the symbol
                     32: poport.  Furthermore, if the value of piport  or  poport  is
                     33: not a valid port, then the standard input or standard output
                     34: will be used, respectively.
                     35: 
                     36:      The standard input and standard output are usually  the
                     37: keyboard  and terminal display unless your job is running in
                     38: the background and its input or output  is  connected  to  a
                     39: pipe.   All  output  which  goes to the standard output will
                     40: also go to the port ptport if it is a  valid  port.   Output
                     41: destined for the standard output will not reach the standard
                     42: output if the symbol ^w is non nil (although it  will  still
                     43: go to ptport if ptport is a valid port).
                     44: 
                     45:      Some of the  functions  listed  below  reference  files
                     46: directly.   FRANZ  LISP  has borrowed a convenient shorthand
                     47: notation from /_b_i_n/_c_s_h, concerning naming files.  If a  file
                     48: name begins with ~ (tilde), and the symbol tilde-expansion
                     49: 
                     50: is bound to  something  other  than  nil,  then  FRANZ  LISP
                     51: expands  the  file  name.  It takes the string of characters
                     52: between the leading tilde, and the first slash  as  a  user-
                     53: name.   Then,  that  initial  segment  of  the  filename  is
                     54: replaced by the home directory of the user.  The null  user-
                     55: name is taken to be the current user.
                     56: 
                     57:      Having gone to the effort  of  searching  the  password
                     58: file,  FRANZ  LISP  remembers the user directory, in case it
                     59: gets asked to do so again.  Tilde-expansion is performed  in
                     60: the   following   functions:   _c_f_a_s_l,  _c_h_d_i_r,  _f_a_s_l,  _f_f_a_s_l,
                     61: 
                     62: 
                     63: Input/Output                                             5-1
                     64: 
                     65: 
                     66: 
                     67: 
                     68: 
                     69: 
                     70: 
                     71: Input/Output                                             5-2
                     72: 
                     73: 
                     74: _f_i_l_e_o_p_e_n,  _i_n_f_i_l_e,  _l_o_a_d,   _o_u_t_f_i_l_e,   _p_r_o_b_e_f,   _s_y_s:_a_c_c_e_s_s,
                     75: _s_y_s:_u_n_l_i_n_k.
                     76: 
                     77: (cfasl    'st_file    'st_entry    'st_funcname    ['st_disc
                     78: ['st_library]])
                     79: 
                     80:      RETURNS: t
                     81: 
                     82:      SIDE EFFECT: This is used to load in a foreign function
                     83:                   (see  8.4).   The  object  file st_file is
                     84:                   loaded into  the  lisp  system.   St_entry
                     85:                   should  be an entry point in the file just
                     86:                   loaded.  The function binding of the  sym-
                     87:                   bol  s_funcname  will  be  set to point to
                     88:                   st_entry, so that when the  lisp  function
                     89:                   s_funcname  is  called,  st_entry  will be
                     90:                   run.  st_disc  is  the  discipline  to  be
                     91:                   given  to  s_funcname. st_disc defaults to
                     92:                   "subroutine" if it is not given or  if  it
                     93:                   is  given  as  nil.  If st_library is non-
                     94:                   null, then after st_file  is  loaded,  the
                     95:                   libraries  given  in  st_library  will  be
                     96:                   searched to resolve  external  references.
                     97:                   The form of st_library should be something
                     98:                   like "-lS -lm".  The C library  (" -lc " )
                     99:                   is  always searched so when loading in a C
                    100:                   file you probably won't need to specify  a
                    101:                   library.   For  Fortran  files, you should
                    102:                   specify "-lF77" and if you are  doing  any
                    103:                   I/O,  the  library  entry should be "-lI77
                    104:                   -lF77".   For  Pascal  files   "-lpc"   is
                    105:                   required.
                    106: 
                    107:      NOTE: This function may be used to load the  output  of
                    108:            the  assembler, C compiler, Fortran compiler, and
                    109:            Pascal compiler  but NOT the lisp  compiler  (use
                    110:            _f_a_s_l  for  that).   If  a  file has more than one
                    111:            entry point, then use _g_e_t_a_d_d_r_e_s_s  to  locate  and
                    112:            setup other foreign functions.
                    113:            It is an error to load in a file which has a glo-
                    114:            bal  entry  point  of  the  same name as a global
                    115:            entry point in the running lisp.  As soon as  you
                    116:            load  in  a  file  with  _c_f_a_s_l,  its global entry
                    117:            points become part of the  lisp's  entry  points.
                    118:            Thus  you  cannot  _c_f_a_s_l  in  the same file twice
                    119:            unless you use _r_e_m_o_v_e_a_d_d_r_e_s_s  to  change  certain
                    120:            global entry points to local entry points.
                    121: 
                    122: 
                    123: 
                    124: 
                    125: 
                    126: 9
                    127: 
                    128: 9                                      Printed: July 25, 1983
                    129: 
                    130: 
                    131: 
                    132: 
                    133: 
                    134: 
                    135: 
                    136: Input/Output                                             5-3
                    137: 
                    138: 
                    139: (close 'p_port)
                    140: 
                    141:      RETURNS: t
                    142: 
                    143:      SIDE EFFECT: the specified port is drained and  closed,
                    144:                   releasing the port.
                    145: 
                    146:      NOTE: The standard defaults are not used in  this  case
                    147:            since  you probably never want to close the stan-
                    148:            dard output or standard input.
                    149: 
                    150: (cprintf 'st_format 'xfst_val ['p_port])
                    151: 
                    152:      RETURNS: xfst_val
                    153: 
                    154:      SIDE EFFECT: The UNIX formatted output function  printf
                    155:                   is  called  with  arguments  st_format and
                    156:                   xfst_val.  If xfst_val is  a  symbol  then
                    157:                   its  print  name is passed to printf.  The
                    158:                   format string may contain characters which
                    159:                   are just printed literally and it may con-
                    160:                   tain special formatting commands  preceded
                    161:                   by  a  percent  sign.  The complete set of
                    162:                   formatting characters is described in  the
                    163:                   UNIX  manual.  Some useful ones are %d for
                    164:                   printing a fixnum in decimal, %f or %e for
                    165:                   printing  a  flonum, and %s for printing a
                    166:                   character string (or print name of a  sym-
                    167:                   bol).
                    168: 
                    169:      EXAMPLE: (_c_p_r_i_n_t_f "_P_i _e_q_u_a_l_s %_f"  _3._1_4_1_5_9)  prints  `Pi
                    170:               equals 3.14159'
                    171: 
                    172: (drain ['p_port])
                    173: 
                    174:      RETURNS: nil
                    175: 
                    176:      SIDE EFFECT: If this is an output port then the charac-
                    177:                   ters  in the output buffer are all sent to
                    178:                   the device.  If this is an input port then
                    179:                   all  pending  characters are flushed.  The
                    180:                   default port  for  this  function  is  the
                    181:                   default output port.
                    182: 
                    183: 
                    184: 
                    185: 
                    186: 
                    187: 
                    188: 
                    189: 
                    190: 
                    191: 9
                    192: 
                    193: 9                                      Printed: July 25, 1983
                    194: 
                    195: 
                    196: 
                    197: 
                    198: 
                    199: 
                    200: 
                    201: Input/Output                                             5-4
                    202: 
                    203: 
                    204: (ex [s_filename])
                    205: (vi [s_filename])
                    206: (exl [s_filename])
                    207: (vil [s_filename])
                    208: 
                    209:      RETURNS:
                    210: 
                    211:      SIDE EFFECT: The lisp system starts up an editor on the
                    212:                   file  named  as the argument.  It will try
                    213:                   appending .l to the file if it can't  find
                    214:                   it.   The  functions _e_x_l and _v_i_l will load
                    215:                   the file  after  you  finish  editing  it.
                    216:                   These  functions  will  also  remember the
                    217:                   name of the file  so  that  on  subsequent
                    218:                   invocations, you don't need to provide the
                    219:                   argument.
                    220: 
                    221:      NOTE: These functions do not evaluate their argument.
                    222: 
                    223: (fasl 'st_name ['st_mapf ['g_warn]])
                    224: 
                    225:      WHERE:   st_mapf and g_warn default to nil.
                    226: 
                    227:      RETURNS: t if the function succeeded, nil otherwise.
                    228: 
                    229:      SIDE EFFECT: this function is designed to  load  in  an
                    230:                   object file generated by the lisp compiler
                    231:                   Liszt.  File names for object  files  usu-
                    232:                   ally end in `.o', so _f_a_s_l will append `.o'
                    233:                   to st_name (if it is not already present).
                    234:                   If st_mapf is non nil, then it is the name
                    235:                   of the map file to create.  _F_a_s_l writes in
                    236:                   the  map  file  the names and addresses of
                    237:                   the functions it loads and defines.   Nor-
                    238:                   mally  the map file is created (i.e. trun-
                    239:                   cated    if    it    exists),    but    if
                    240:                   (_s_s_t_a_t_u_s _a_p_p_e_n_d_m_a_p _t) is done then the map
                    241:                   file will be appended.  If g_warn  is  non
                    242:                   nil  and if a function is loaded from  the
                    243:                   file which  is  already  defined,  then  a
                    244:                   warning message will be printed.
                    245: 
                    246:      NOTE: _f_a_s_l only looks in the current directory for  the
                    247:            file  to  load. The function _l_o_a_d looks through a
                    248:            user-supplied search path and will call  _f_a_s_l  if
                    249:            it  finds  a  file  with the same root name and a
                    250:            `.o' extension.  In  most cases the user would be
                    251:            better  off  using  the function _l_o_a_d rather than
                    252:            calling _f_a_s_l directly.
                    253: 
                    254: 
                    255: 
                    256: 9
                    257: 
                    258: 9                                      Printed: July 25, 1983
                    259: 
                    260: 
                    261: 
                    262: 
                    263: 
                    264: 
                    265: 
                    266: Input/Output                                             5-5
                    267: 
                    268: 
                    269: (ffasl  'st_file  'st_entry   'st_funcname   ['st_discipline
                    270: ['st_library]])
                    271: 
                    272:      RETURNS: the binary object created.
                    273: 
                    274:      SIDE EFFECT: the Fortran object file st_file is  loaded
                    275:                   into  the lisp system.  St_entry should be
                    276:                   an entry point in the file just loaded.  A
                    277:                   binary  object  will  be  created  and its
                    278:                   entry  field  will  be  set  to  point  to
                    279:                   st_entry.   The  discipline  field  of the
                    280:                   binary will be  set  to  st_discipline  or
                    281:                   "subroutine" by default.  If st_library is
                    282:                   present and non-null, then  after  st_file
                    283:                   is   loaded,   the   libraries   given  in
                    284:                   st_library will  be  searched  to  resolve
                    285:                   external    references.    The   form   of
                    286:                   st_library should be something  like  "-lS
                    287:                   -ltermcap".   In  any  case,  the standard
                    288:                   Fortran libraries will be searched also to
                    289:                   resolve external references.
                    290: 
                    291:      NOTE: in F77 on Unix, the entry point for  the  fortran
                    292:            function foo is named `_foo_'.
                    293: 
                    294: (filepos 'p_port ['x_pos])
                    295: 
                    296:      RETURNS: the current position in the file if  x_pos  is
                    297:               not given or else x_pos if x_pos is given.
                    298: 
                    299:      SIDE EFFECT: If x_pos is given, the  next  byte  to  be
                    300:                   read  or  written  to  the port will be at
                    301:                   position x_pos.
                    302: 
                    303: (filestat 'st_filename)
                    304: 
                    305:      RETURNS: a vector containing various numbers which  the
                    306:               UNIX  operating  system  assigns to files.  if
                    307:               the file doesn't exist, an error  is  invoked.
                    308:               Use _p_r_o_b_e_f to determine if the file exists.
                    309: 
                    310:      NOTE: The individual entries can be accesed by mnemonic
                    311:            functions of the form filestat:_f_i_e_l_d, where field
                    312:            may be  any  of  atime,  ctime,  dev,  gid,  ino,
                    313:            mode,mtime,  nlink,  rdev,  size, type, uid.  See
                    314:            the UNIX programmers manual for a  more  detailed
                    315:            description of these quantities.
                    316: 
                    317: 
                    318: 
                    319: 
                    320: 
                    321: 9
                    322: 
                    323: 9                                      Printed: July 25, 1983
                    324: 
                    325: 
                    326: 
                    327: 
                    328: 
                    329: 
                    330: 
                    331: Input/Output                                             5-6
                    332: 
                    333: 
                    334: (flatc 'g_form ['x_max])
                    335: 
                    336:      RETURNS: the number of  characters  required  to  print
                    337:               g_form using _p_a_t_o_m.  If x_max is given, and if
                    338:               _f_l_a_t_c determines that it will return  a  value
                    339:               greater  than  x_max,  then  it  gives  up and
                    340:               returns the current  value  it  has  computed.
                    341:               This  is  useful if you just want to see if an
                    342:               expression is larger than a certain size.
                    343: 
                    344: (flatsize 'g_form ['x_max])
                    345: 
                    346:      RETURNS: the number of  characters  required  to  print
                    347:               g_form  using  _p_r_i_n_t.  The meaning of x_max is
                    348:               the same as for flatc.
                    349: 
                    350:      NOTE: Currently this just _e_x_p_l_o_d_e's g_form  and  checks
                    351:            its length.
                    352: 
                    353: (fileopen 'st_filename 'st_mode)
                    354: 
                    355:      RETURNS: a port for reading or  writing  (depending  on
                    356:               st_mode) the file st_name.
                    357: 
                    358:      SIDE EFFECT: the given file is opened  (or  created  if
                    359:                   opened  for  writing  and  it  doesn't yet
                    360:                   exist).
                    361: 
                    362:      NOTE: this function call provides a direct interface to
                    363:            the  operating system's fopen function.  The mode
                    364:            may be more than just "r" for read, "w" for write
                    365:            or "a" for append.  The modes "r+", "w+" and "a+"
                    366:            permit both reading and writing on  a  port  pro-
                    367:            vided  that  _f_s_e_e_k  is  done  between  changes in
                    368:            direction.  See the UNIX  manual  description  of
                    369:            fopen  for  more  details.  This routine does not
                    370:            look through a search path for a given file.
                    371: 
                    372: (fseek 'p_port 'x_offset 'x_flag)
                    373: 
                    374:      RETURNS: the position in the file after the function is
                    375:               performed.
                    376: 
                    377:      SIDE EFFECT: this  function  positions  the  read/write
                    378:                   pointer before a certain byte in the file.
                    379:                   If x_flag is 0 then the pointer is set  to
                    380:                   x_offset  bytes  from the beginning of the
                    381:                   file.  If x_flag is 1 then the pointer  is
                    382:                   set  to  x_offset  bytes  from the current
                    383:                   location in the file.  If x_flag is 2 then
                    384:                   the  pointer is set to x_offset bytes from
                    385:                   the end of the file.
                    386: 9
                    387: 
                    388: 9                                      Printed: July 25, 1983
                    389: 
                    390: 
                    391: 
                    392: 
                    393: 
                    394: 
                    395: 
                    396: Input/Output                                             5-7
                    397: 
                    398: 
                    399: (infile 's_filename)
                    400: 
                    401:      RETURNS: a port ready to read s_filename.
                    402: 
                    403:      SIDE EFFECT: this tries to open s_filename  and  if  it
                    404:                   cannot  or if there are no ports available
                    405:                   it gives an error message.
                    406: 
                    407:      NOTE: to allow your program to continue on a  file-not-
                    408:            found error, you can use something like:
                    409:            (_c_o_n_d ((_n_u_l_l (_s_e_t_q _m_y_p_o_r_t  (_c_a_r  (_e_r_r_s_e_t  (_i_n_f_i_l_e
                    410:            _n_a_m_e) _n_i_l))))
                    411:                        (_p_a_t_o_m '"_c_o_u_l_d_n'_t _o_p_e_n _t_h_e _f_i_l_e")))
                    412:            which will set myport to the port to read from if
                    413:            the  file  exists  or  will print a message if it
                    414:            couldn't open it and also set myport to nil.   To
                    415:            simply  determine  if  a  file exists, there is a
                    416:            function named _p_r_o_b_e_f.
                    417: 
                    418: (load 's_filename ['st_map ['g_warn]])
                    419: 
                    420:      RETURNS: t
                    421: 
                    422:      NOTE: The function of _l_o_a_d has changed  since  previous
                    423:            releases of FRANZ LISP and the following descrip-
                    424:            tion should be read carefully.
                    425: 
                    426:      SIDE EFFECT: _l_o_a_d now serves the function of both  _f_a_s_l
                    427:                   and the old _l_o_a_d.  _L_o_a_d will search a user
                    428:                   defined search path for a lisp  source  or
                    429:                   object  file  with the filename s_filename
                    430:                   (with the extension  .l  or  .o  added  as
                    431:                   appropriate).   The search path which _l_o_a_d
                    432:                   uses is the value of  (_s_t_a_t_u_s _l_o_a_d-_s_e_a_r_c_h-
                    433:                   _p_a_t_h).  The default is (|.| /usr/lib/lisp)
                    434:                   which means look in the current  directory
                    435:                   first  and  then  /usr/lib/lisp.  The file
                    436:                   which _l_o_a_d looks for depends on  the  last
                    437:                   two    characters   of   s_filename.    If
                    438:                   s_filename ends with ".l" then  _l_o_a_d  will
                    439:                   only  look  for a file name s_filename and
                    440:                   will assume that  this  is  a  FRANZ  LISP
                    441:                   source file.  If s_filename ends with ".o"
                    442:                   then _l_o_a_d will only look for a file  named
                    443:                   s_filename  and will assume that this is a
                    444:                   FRANZ LISP object file to  be  _f_a_s_led  in.
                    445:                   Otherwise,   _l_o_a_d   will  first  look  for
                    446:                   s_filename.o,   then   s_filename.l    and
                    447:                   finally  s_filename  itself.   If it finds
                    448:                   s_filename.o it will assume that  this  is
                    449:                   an  object  file, otherwise it will assume
                    450:                   that it is a source file.  An object  file
                    451:                   is  loaded using _f_a_s_l and a source file is
                    452: 
                    453: 
                    454:                                       Printed: July 25, 1983
                    455: 
                    456: 
                    457: 
                    458: 
                    459: 
                    460: 
                    461: 
                    462: Input/Output                                             5-8
                    463: 
                    464: 
                    465:                   loaded by reading and evaluating each form
                    466:                   in   the  file.   The  optional  arguments
                    467:                   st_map  and  g_warn  are  passed  to  _f_a_s_l
                    468:                   should _f_a_s_l be called.
                    469: 
                    470:      NOTE: _l_o_a_d requires a port to open the file s_filename.
                    471:            It  then  lambda  binds the symbol piport to this
                    472:            port and reads and evaluates the forms.
                    473: 
                    474: (makereadtable ['s_flag])
                    475: 
                    476:      WHERE:   if s_flag is not present it is assumed  to  be
                    477:               nil.
                    478: 
                    479:      RETURNS: a readtable equal to the original readtable if
                    480:               s_flag  is  non-null,  or  else  equal  to the
                    481:               current  readtable.   See  chapter  7  for   a
                    482:               description of readtables and their uses.
                    483: 
                    484: (msg [l_option ...] ['g_msg ...])
                    485: 
                    486:      NOTE: This function is intended for printing short mes-
                    487:            sages.  Any of the arguments or options presented
                    488:            can be used any number of times,  in  any  order.
                    489:            The  messages  themselves  (g_msg) are evaluated,
                    490:            and then they are transmitted  to  _p_a_t_o_m.   Typi-
                    491:            cally,  they are strings, which evaluate to them-
                    492:            selves.  The options are interpreted specially:
                    493: 
                    494: 
                    495:     ____________________________________________________
                    496: 
                    497:     _m_s_g _O_p_t_i_o_n _S_u_m_m_a_r_y
                    498: 
                    499:     (_P _p__p_o_r_t_n_a_m_e)          causes subsequent output to go to the port p_portname
                    500:                                     (port should be opened previously)
                    501: 
                    502:     _B                       print a single blank.
                    503: 
                    504:     (_B '_n__b)                evaluate n_b and print that many blanks.
                    505: 
                    506:     _N                       print a single by calling _t_e_r_p_r.
                    507: 
                    508:     (_N '_n__n)                evaluate n_n and transmit
                    509:                                     that many newlines to the stream.
                    510: 
                    511:     _D                       _d_r_a_i_n the current port.
                    512:     ____________________________________________________
                    513: 
                    514: 
                    515: 
                    516: 
                    517: 9
                    518: 
                    519: 9                                      Printed: July 25, 1983
                    520: 
                    521: 
                    522: 
                    523: 
                    524: 
                    525: 
                    526: 
                    527: Input/Output                                             5-9
                    528: 
                    529: 
                    530: (nwritn ['p_port])
                    531: 
                    532:      RETURNS: the number of characters in the buffer of  the
                    533:               given port but not yet written out to the file
                    534:               or device.  The buffer  is  flushed  automati-
                    535:               cally when filled, or when _t_e_r_p_r is called.
                    536: 
                    537: (outfile 's_filename ['st_type])
                    538: 
                    539:      RETURNS: a port or nil
                    540: 
                    541:      SIDE EFFECT: this opens a port to write s_filename.  If
                    542:                   st_type is given and if it is  a symbol or
                    543:                   string whose name begins  with  `a',  then
                    544:                   the  file  will  be opened in append mode,
                    545:                   that is the current contents will  not  be
                    546:                   lost  and the next data will be written at
                    547:                   the end of the file.  Otherwise, the  file
                    548:                   opened  is  truncated  by  _o_u_t_f_i_l_e  if  it
                    549:                   existed beforehand.  If there are no  free
                    550:                   ports, outfile returns nil.  If one cannot
                    551:                   write on  s_filename,  an  error  is  sig-
                    552:                   nalled.
                    553: 
                    554: (patom 'g_exp ['p_port])
                    555: 
                    556:      RETURNS: g_exp
                    557: 
                    558:      SIDE EFFECT: g_exp is printed to the given port or  the
                    559:                   default  port.   If  g_exp  is a symbol or
                    560:                   string, the print name is printed  without
                    561:                   any escape characters around special char-
                    562:                   acters in the print name.  If g_exp  is  a
                    563:                   list  then  _p_a_t_o_m  has  the same effect as
                    564:                   _p_r_i_n_t.
                    565: 
                    566: (pntlen 'xfs_arg)
                    567: 
                    568:      RETURNS: the  number  of  characters  needed  to  print
                    569:               xfs_arg.
                    570: 
                    571: (portp 'g_arg)
                    572: 
                    573:      RETURNS: t iff g_arg is a port.
                    574: 
                    575: 
                    576: 
                    577: 
                    578: 
                    579: 
                    580: 
                    581: 
                    582: 9
                    583: 
                    584: 9                                      Printed: July 25, 1983
                    585: 
                    586: 
                    587: 
                    588: 
                    589: 
                    590: 
                    591: 
                    592: Input/Output                                            5-10
                    593: 
                    594: 
                    595: (pp [l_option] s_name1 ...)
                    596: 
                    597:      RETURNS: t
                    598: 
                    599:      SIDE EFFECT: If s_name_i has a function binding,  it  is
                    600:                   pretty-printed, otherwise if s_name_i has a
                    601:                   value then that is  pretty-printed.   Nor-
                    602:                   mally  the  output  of  the pretty-printer
                    603:                   goes to the standard output  port  poport.
                    604:                   The options allow you to redirect it.
                    605: 
                    606: 
                    607:     ____________________________________________________
                    608: 
                    609:     _P_P _O_p_t_i_o_n _S_u_m_m_a_r_y
                    610: 
                    611:     (_F _s__f_i_l_e_n_a_m_e)          direct future printing to s_filename
                    612: 
                    613:     (_P _p__p_o_r_t_n_a_m_e)          causes output to go to the port p_portname
                    614:                                     (port should be opened previously)
                    615: 
                    616:     (_E _g__e_x_p_r_e_s_s_i_o_n)                evaluate g_expression and don't print
                    617:     ____________________________________________________
                    618: 
                    619: 
                    620: 
                    621: 
                    622: (princ 'g_arg ['p_port])
                    623: 
                    624:      EQUIVALENT TO: patom.
                    625: 
                    626: (print 'g_arg ['p_port])
                    627: 
                    628:      RETURNS: nil
                    629: 
                    630:      SIDE EFFECT: prints g_arg on the  port  p_port  or  the
                    631:                   default port.
                    632: 
                    633: (probef 'st_file)
                    634: 
                    635:      RETURNS: t iff the file st_file exists.
                    636: 
                    637:      NOTE: Just because it exists doesn't mean you can  read
                    638:            it.
                    639: 
                    640: 
                    641: 
                    642: 
                    643: 
                    644: 
                    645: 
                    646: 
                    647: 9
                    648: 
                    649: 9                                      Printed: July 25, 1983
                    650: 
                    651: 
                    652: 
                    653: 
                    654: 
                    655: 
                    656: 
                    657: Input/Output                                            5-11
                    658: 
                    659: 
                    660: (pp-form 'g_form ['p_port])
                    661: 
                    662:      RETURNS: t
                    663: 
                    664:      SIDE EFFECT: g_form  is  pretty-printed  to  the   port
                    665:                   p_port (or poport if p_port is not given).
                    666:                   This is the  function which _p_p  uses.  _p_p-
                    667:                   _f_o_r_m  does  not  look for function defini-
                    668:                   tions or  values  of  variables,  it  just
                    669:                   prints out the form it is given.
                    670: 
                    671:      NOTE: This is useful as a top-level-printer, c.f.  _t_o_p-
                    672:            _l_e_v_e_l in Chapter 6.
                    673: 
                    674: (ratom ['p_port ['g_eof]])
                    675: 
                    676:      RETURNS: the next atom read from the given  or  default
                    677:               port.   On end of file, g_eof (default nil) is
                    678:               returned.
                    679: 
                    680: (read ['p_port ['g_eof]])
                    681: 
                    682:      RETURNS: the next lisp expression read from  the  given
                    683:               or  default  port.   On  end  of  file,  g_eof
                    684:               (default nil) is returned.
                    685: 
                    686:      NOTE: An error will occur if the reader is given an ill
                    687:            formed  expression.  The most common error is too
                    688:            many right parentheses (note  that  this  is  not
                    689:            considered an error in Maclisp).
                    690: 
                    691: (readc ['p_port ['g_eof]])
                    692: 
                    693:      RETURNS: the next character  read  from  the  given  or
                    694:               default  port.  On end of file, g_eof (default
                    695:               nil) is returned.
                    696: 
                    697: (readlist 'l_arg)
                    698: 
                    699:      RETURNS: the lisp expression  read  from  the  list  of
                    700:               characters in l_arg.
                    701: 
                    702: 
                    703: 
                    704: 
                    705: 
                    706: 
                    707: 
                    708: 
                    709: 
                    710: 
                    711: 
                    712: 9
                    713: 
                    714: 9                                      Printed: July 25, 1983
                    715: 
                    716: 
                    717: 
                    718: 
                    719: 
                    720: 
                    721: 
                    722: Input/Output                                            5-12
                    723: 
                    724: 
                    725: (removeaddress 's_name1 ['s_name2 ...])
                    726: 
                    727:      RETURNS: nil
                    728: 
                    729:      SIDE EFFECT: the entries for the s_name_i  in  the  Lisp
                    730:                   symbol  table are removed.  This is useful
                    731:                   if you wish to _c_f_a_s_l or _f_f_a_s_l  in  a  file
                    732:                   twice, since it is illegal for a symbol in
                    733:                   the file you are loading to already  exist
                    734:                   in the lisp symbol table.
                    735: 
                    736: (resetio)
                    737: 
                    738:      RETURNS: nil
                    739: 
                    740:      SIDE EFFECT: all ports except the standard input,  out-
                    741:                   put and error are closed.
                    742: 
                    743: (setsyntax 's_symbol 's_synclass ['ls_func])
                    744: 
                    745:      RETURNS: t
                    746: 
                    747:      SIDE EFFECT: this sets the code for s_symbol to sx_code
                    748:                   in  the  current readtable.  If s_synclass
                    749:                   is _m_a_c_r_o or _s_p_l_i_c_i_n_g then ls_func  is  the
                    750:                   associated  function.   See  Chapter  7 on
                    751:                   the reader for more details.
                    752: 
                    753: (sload 's_file)
                    754: 
                    755:      SIDE EFFECT: the file s_file (in the current directory)
                    756:                   is  opened  for  reading  and each form is
                    757:                   read, printed and evaluated.  If the  form
                    758:                   is  recognizable as a function definition,
                    759:                   only its name will be  printed,  otherwise
                    760:                   the whole form is printed.
                    761: 
                    762:      NOTE: This function is useful when a  file  refuses  to
                    763:            load because of a syntax error and you would like
                    764:            to narrow down where the error is.
                    765: 
                    766: (tab 'x_col ['p_port])
                    767: 
                    768:      SIDE EFFECT: enough spaces are printed to put the  cur-
                    769:                   sor  on  column  x_col.   If the cursor is
                    770:                   beyond x_col to start  with,  a  _t_e_r_p_r  is
                    771:                   done first.
                    772: 
                    773: 
                    774: 
                    775: 
                    776: 
                    777: 9
                    778: 
                    779: 9                                      Printed: July 25, 1983
                    780: 
                    781: 
                    782: 
                    783: 
                    784: 
                    785: 
                    786: 
                    787: Input/Output                                            5-13
                    788: 
                    789: 
                    790: (terpr ['p_port])
                    791: 
                    792:      RETURNS: nil
                    793: 
                    794:      SIDE EFFECT: a terminate line   character  sequence  is
                    795:                   sent  to  the  given  port  or the default
                    796:                   port.  This will also drain the port.
                    797: 
                    798: (terpri ['p_port])
                    799: 
                    800:      EQUIVALENT TO: terpr.
                    801: 
                    802: (tilde-expand 'st_filename)
                    803: 
                    804:      RETURNS: a symbol whose pname is the tilde-expansion of
                    805:               the  argument,  (as discussed at the beginning
                    806:               of this chapter).  If the  argument  does  not
                    807:               begin  with  a  tilde,  the argument itself is
                    808:               returned.
                    809: 
                    810: (tyi ['p_port])
                    811: 
                    812:      RETURNS: the fixnum representation of the next  charac-
                    813:               ter read.  On end of file, -1 is returned.
                    814: 
                    815: (tyipeek ['p_port])
                    816: 
                    817:      RETURNS: the fixnum representation of the next  charac-
                    818:               ter to be read.
                    819: 
                    820:      NOTE: This does not actually  read  the  character,  it
                    821:            just peeks at it.
                    822: 
                    823: (tyo 'x_char ['p_port])
                    824: 
                    825:      RETURNS: x_char.
                    826: 
                    827:      SIDE EFFECT: the character whose fixnum  representation
                    828:                   is  x_code,  is  printed as a on the given
                    829:                   output port or the default output port.
                    830: 
                    831: (untyi 'x_char ['p_port])
                    832: 
                    833:      SIDE EFFECT: x_char is put back in the input buffer  so
                    834:                   a  subsequent  _t_y_i  or  _r_e_a_d  will read it
                    835:                   first.
                    836: 
                    837:      NOTE: a maximum of one character may be put back.
                    838: 
                    839: 
                    840: 
                    841: 
                    842: 9
                    843: 
                    844: 9                                      Printed: July 25, 1983
                    845: 
                    846: 
                    847: 
                    848: 
                    849: 
                    850: 
                    851: 
                    852: Input/Output                                            5-14
                    853: 
                    854: 
                    855: (username-to-dir 'st_name)
                    856: 
                    857:      RETURNS: the home directory of  the  given  user.   The
                    858:               result   is  stored,  to  avoid  unnecessarily
                    859:               searching the password file.
                    860: 
                    861: (zapline)
                    862: 
                    863:      RETURNS: nil
                    864: 
                    865:      SIDE EFFECT: all characters up  to  and  including  the
                    866:                   line  termination  character  are read and
                    867:                   discarded from  the  last  port  used  for
                    868:                   input.
                    869: 
                    870:      NOTE: this is used as the macro function for the  semi-
                    871:            colon character when it acts as a comment charac-
                    872:            ter.
                    873: 
                    874: 
                    875: 
                    876: 
                    877: 
                    878: 
                    879: 
                    880: 
                    881: 
                    882: 
                    883: 
                    884: 
                    885: 
                    886: 
                    887: 
                    888: 
                    889: 
                    890: 
                    891: 
                    892: 
                    893: 
                    894: 
                    895: 
                    896: 
                    897: 
                    898: 
                    899: 
                    900: 
                    901: 
                    902: 
                    903: 
                    904: 
                    905: 
                    906: 
                    907: 9
                    908: 
                    909: 9                                      Printed: July 25, 1983
                    910: 
                    911: 
                    912: 

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.