Annotation of 42BSD/ucb/lisp/lisplib/manual/ch5.r, revision 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.