Annotation of 43BSDReno/contrib/isode-beta/doc/ftam/initiator.tex, revision 1.1

1.1     ! root        1: % run this through SLiTeX with the appropriate wrapper
        !             2: 
        !             3: \begin{bwslide}
        !             4: \part  {ISSUES IN IMPLEMENTING A CLIENT OF THE VIRTUAL FILESTORE}
        !             5: 
        !             6: \begin{nrtc}\bf
        !             7: \item  AN INTERACTIVE FTAM INITIATOR FOR UNIX
        !             8: 
        !             9: \item  DIRECTORY HANDLING
        !            10: \end{nrtc}
        !            11: \end{bwslide}
        !            12: 
        !            13: 
        !            14: \begin{bwslide}
        !            15: \ctitle        {INITIATORS FOR FTAM}
        !            16: 
        !            17: \begin{nrtc}
        !            18: \item  IN GENERAL, THREE APPROACHES
        !            19: 
        !            20: \item  THE INTERACTIVE APPROACH: USER (OR PROGRAM) EXPLICITLY INVOKES
        !            21:        A PROGRAM TO REQUEST FILE SERVICES
        !            22: 
        !            23: \item  THE APPLICATIONS APPROACH: PROGRAM INVOKES OTHER SERVICES
        !            24:        (e.g., DATABASE ACCESS) WHICH INVOKES FTAM
        !            25: 
        !            26: \item  THE EMBEDDED APPROACH: THE HOST KERNEL USES FTAM AS A PART OF ITS
        !            27:        FILESYSTEM REPETOIRE
        !            28:     \begin{nrtc}
        !            29:     \item      THE USE OF FTAM IS TRANSPARENT TO USERS AND PROGRAMS
        !            30:     \end{nrtc}
        !            31: 
        !            32: \item  THE EMBEDED APPROACH IS THE MOSE USEFUL, BUT ALSO THE MOST COMPLICATED
        !            33: \end{nrtc}
        !            34: \end{bwslide}
        !            35: 
        !            36: 
        !            37: \begin{bwslide}
        !            38: \part* {AN INTERACTIVE FTAM INITIATOR FOR UNIX}%%%\bf
        !            39: 
        !            40: \begin{nrtc}\small
        !            41: \item  IMPORTANT TO DISTINGUISH BETWEEN
        !            42:     \begin{nrtc}
        !            43:     \item      THE USER INTERFACE: HOW THE PROGRAM INTERACTS WITH THE USER
        !            44: 
        !            45:     \item      THE FTAM INTERFACE: HOW THE PROGRAM ACCESS THE FILE SERVICE
        !            46:     \end{nrtc}
        !            47: 
        !            48: \item  A ``FRIENDLY'' APPROACH WAS TAKEN FOR THE USER INTERFACE
        !            49:     \begin{nrtc}
        !            50:     \item      USER COMMANDS TO THE INITIATOR APPEAR TO BE UNIX COMMANDS
        !            51:     \end{nrtc}
        !            52: 
        !            53: \item  SUPPORTS FTAM-3, NBS-2, NBS-9
        !            54:     \begin{nrtc}
        !            55:     \item      THE SAME DOCUMENT TYPES SUPPORTED BY THE RESPONDER
        !            56:     \end{nrtc}
        !            57: 
        !            58: \item  ABOUT 6000 LINES OF C CODE AND 150 LINES OF PEPY CODE
        !            59: \end{nrtc}
        !            60: \end{bwslide}
        !            61: 
        !            62: 
        !            63: \begin{note}\em
        !            64: the initiator, per se, currently runs on berkeley or at\&t unix
        !            65: (although only the berkeley version has been extensively tested)
        !            66: 
        !            67: the user interface was heavily inspired by the berkeley unix ftp client
        !            68: \end{note}
        !            69: 
        !            70: 
        !            71: \begin{bwslide}
        !            72: \ctitle        {COMMAND LOOP}
        !            73: 
        !            74: \begin{nrtc}
        !            75: \item  ONCE INVOKED, PROGRAM PROMPTS AND ACCEPTS COMMANDS
        !            76: 
        !            77: \item  SOME COMMANDS RESULT IN FILE SERVICE ACTIONS
        !            78:     \begin{nrtc}
        !            79:     \item      e.g., ASSOCIATE WITH FILESTORE
        !            80: 
        !            81:     \item      UNEXPECTED DIAGNOSTICS ARE REPORTED TO THE USER
        !            82:     \end{nrtc}
        !            83: 
        !            84: \item  OTHER COMMANDS SET OPTIONS CONTROLLING USE OF FILE SERVICE
        !            85: 
        !            86: \item  OTHER COMMANDS SET OPTIONS CONTROLLING LOCAL SYSTEM
        !            87: \end{nrtc}
        !            88: \end{bwslide}
        !            89: 
        !            90: 
        !            91: \begin{bwslide}
        !            92: \ctitle        {FILESTORE ASSOCIATION COMMANDS}
        !            93: 
        !            94: \begin{nrtc}
        !            95: \item  OPEN host user [account]
        !            96:     \begin{nrtc}
        !            97:     \item      PROMPTS FOR A PASSWORD
        !            98: 
        !            99:     \item      ISSUES AN F-INITIALIZE.REQUEST AND AWAITS THE RESPONSE
        !           100:     \end{nrtc}
        !           101: 
        !           102: \item  CLOSE
        !           103:     \begin{nrtc}
        !           104:     \item      TERMINATES THE ASSOCIATION WITH THE FILESTORE USING
        !           105:                F-TERMINATE.REQUEST
        !           106:     \end{nrtc}
        !           107: 
        !           108: \item  ABORT
        !           109:     \begin{nrtc}
        !           110:     \item      UPON ENCOUNTERING A FATAL ERROR, F-U-ABORT.REQUEST IS USED
        !           111:     \end{nrtc}
        !           112: 
        !           113: \item  STATUS
        !           114:     \begin{nrtc}
        !           115:     \item      REPORTS SUMMARY OF SERVICE PARAMETERS IN EFFECT OVER FTAM
        !           116:                REGIME
        !           117:     \end{nrtc}
        !           118: \end{nrtc}
        !           119: \end{bwslide}
        !           120: 
        !           121: 
        !           122: \begin{bwslide}
        !           123: \ctitle        {EXAMPLE: FILESTORE ASSOCIATION COMMANDS}\small
        !           124: 
        !           125: \begin{verbatim}
        !           126: kr:22-- ftam
        !           127: ftam> open gr
        !           128: user (gr:mrose): mrose
        !           129: password (gr:mrose): 
        !           130: 
        !           131: gr... connected
        !           132: gr> status
        !           133: associated with virtual filestore on "gr" as user "mrose"
        !           134: service level: reliable, service class: transfer-and-management
        !           135: functional units: 0x3b<READ,WRITE,LIMITED,ENHANCED,GROUPING>
        !           136: attribute groups: 0x3<STORAGE,SECURITY>
        !           137: document types:
        !           138:   1.0.8571.6.3  unstructured binary file
        !           139:   1.17.3.6.1    unstructured text file
        !           140:   1.17.3.6.8    file directory file
        !           141: estimated integral FADU size: 65502
        !           142: \end{verbatim}
        !           143: \end{bwslide}
        !           144: 
        !           145: 
        !           146: \begin{bwslide}
        !           147: \ctitle        {FILE TRANSFER COMMANDS}
        !           148: 
        !           149: \begin{nrtc}
        !           150: \item  GET source destination
        !           151:     \begin{nrtc}
        !           152:     \item      RETREIVES A FILE FROM THE FILESTORE
        !           153: 
        !           154:     \item      FILE SERVICES
        !           155:        \begin{nrtc}
        !           156:        \item   F-BEGIN-GROUP F-SELECT F-OPEN(READ) F-END-GROUP
        !           157: 
        !           158:        \item   BULK DATA TRANSFER FOR READ
        !           159: 
        !           160:        \item   F-BEGIN-GROUP F-CLOSE F-DESELECT F-END-GROUP
        !           161:        \end{nrtc}
        !           162:     \end{nrtc}
        !           163: 
        !           164: \item  PUT source destination
        !           165:     \begin{nrtc}
        !           166:     \item      STORES A FILE ON THE FILESTORE
        !           167: 
        !           168:     \item      FILE SERVICES
        !           169:        \begin{nrtc}
        !           170:        \item   F-BEGIN-GROUP F-CREATE(OVERWRITE) F-OPEN(WRITE) F-END-GROUP
        !           171: 
        !           172:        \item   BULK DATA TRANSFER FOR WRITE
        !           173: 
        !           174:        \item   F-BEGIN-GROUP F-CLOSE F-DESELECT F-END-GROUP
        !           175:        \end{nrtc}
        !           176: 
        !           177:     \item      OPTION SETTING DETERMINES OVERWRITE MODE
        !           178:     \end{nrtc}
        !           179: \end{nrtc}
        !           180: \end{bwslide}
        !           181: 
        !           182: 
        !           183: \begin{note}\em
        !           184: need to exercise a fair bit of caution in ordering of local file access for
        !           185: the get command: 
        !           186: 
        !           187: \begin{quote}
        !           188: ideally don't want to open file for write until remote open
        !           189: has succeeded; but if local open fails, still have to do a little bit of bulk
        !           190: data-transfer before backing out.
        !           191: \end{quote}
        !           192: \end{note}
        !           193: 
        !           194: 
        !           195: \begin{bwslide}
        !           196: \ctitle        {FILE TRANSFER COMMANDS (cont.)}
        !           197: 
        !           198: \begin{nrtc}
        !           199: \item  APPEND source destination
        !           200:     \begin{nrtc}
        !           201:     \item      APPENDS TO A FILE IN THE FILESTORE
        !           202: 
        !           203:     \item      FILE SERVICES: AS ABOVE, BUT F-CREATE(EXISTING)
        !           204:     \end{nrtc}
        !           205: 
        !           206: \item  OPTION SETTING DETERMINES EITHER TEXT OR BINARY
        !           207:        (BUT RESPONSE FROM SERVER OVERRIDES THIS)
        !           208: 
        !           209: \item  INTERRUPT FROM USER DURING TRANFSER INVOKES F-CANCEL SERVICE
        !           210: \end{nrtc}
        !           211: \end{bwslide}
        !           212: 
        !           213: 
        !           214: \begin{bwslide}
        !           215: \ctitle        {EXAMPLE: FILE TRANSFER COMMANDS}\small
        !           216: 
        !           217: \begin{verbatim}
        !           218: gr> set type text
        !           219: type       = text       - file transfer mode
        !           220: gr> get manual.dvi manual.dvi
        !           221: ftam: unstructured binary file transfer
        !           222: ftam: 613628 bytes received in 10.33 seconds (58.00 Kbytes/s)
        !           223: gr> get calendar calendar
        !           224: ftam: 2051 bytes received in 0.13 seconds (15.06 Kbytes/s)
        !           225: gr> ls
        !           226: file: .
        !           227: .               ..              .Xdefaults      .mh_profile     bin        
        !           228: calendar        lib             manual.dvi      libisode.a      mhbox
        !           229: gr> get libisode.a libisode.a
        !           230: ftam: unstructured binary file transfer
        !           231: ^C
        !           232: ftam: cancelling transfer
        !           233: ftam: 196506 bytes received in 5.48 seconds (35.00 Kbytes/s)
        !           234: \end{verbatim}
        !           235: \end{bwslide}
        !           236: 
        !           237: 
        !           238: \begin{note}\em
        !           239: this is a good example of document type simplification:
        !           240: 
        !           241: manual.dvi was not available as a text file,
        !           242: hence the responder in the open request returned a simplification of the
        !           243: document type requested
        !           244: \end{note}
        !           245: 
        !           246: 
        !           247: \begin{bwslide}
        !           248: \ctitle        {FILE MANAGEMENT COMMANDS}
        !           249: 
        !           250: \begin{nrtc}
        !           251: \item  MV source destination
        !           252:     \begin{nrtc}
        !           253:     \item      CHANGES THE NAME OF A FILE
        !           254: 
        !           255:     \item      FILE SERVICES
        !           256:        \begin{nrtc}
        !           257:        \item   F-BEGIN-GROUP F-SELECT F-CHANGE-ATTRIBUTE F-DESELECT
        !           258:                F-END-GROUP
        !           259:        \end{nrtc}
        !           260:     \end{nrtc}
        !           261: 
        !           262: \item  RM file
        !           263:     \begin{nrtc}
        !           264:     \item      DELETES A FILE
        !           265: 
        !           266:     \item      FILE SERVICES
        !           267:        \begin{nrtc}
        !           268:        \item   F-BEGIN-GROUP F-SELECT F-DELETE F-END-GROUP
        !           269:        \end{nrtc}
        !           270:     \end{nrtc}
        !           271: \end{nrtc}
        !           272: \end{bwslide}
        !           273: 
        !           274: 
        !           275: \begin{bwslide}
        !           276: \ctitle        {FILE MANAGEMENT COMMANDS (cont.)}
        !           277: 
        !           278: \begin{nrtc}
        !           279: \item  LS file
        !           280:     \begin{nrtc}
        !           281:     \item      LISTS THE ATTRIBUTES OF A FILE (USE DIR FOR LONG LISTING)
        !           282: 
        !           283:     \item      FILE SERVICES
        !           284:        \begin{nrtc}
        !           285:        \item   F-BEGIN-GROUP F-SELECT F-READ-ATTRIBUTE F-DESELECT F-END-GROUP
        !           286:        \end{nrtc}
        !           287: 
        !           288:     \item      THE (APPROPRIATE) FTAM ATTRIBUTES ARE DISPLAYED AS UNIX
        !           289:                ATTRIBUTES
        !           290:     \end{nrtc}
        !           291: \end{nrtc}
        !           292: \end{bwslide}
        !           293: 
        !           294: 
        !           295: \begin{bwslide}
        !           296: \ctitle        {EXAMPLE: FILE MANAGEMENT COMMANDS}\small
        !           297: 
        !           298: \begin{verbatim}
        !           299: gr> mv calendar oldcalendar
        !           300: gr> rm manual.dvi
        !           301: gr> ls .
        !           302: .               ..              .Xdefaults      .mh_profile     bin
        !           303: lib             libisode.a      mhbox           oldcalendar
        !           304: gr> mv oldcalendar calendar
        !           305: gr> ls .
        !           306: .               ..              .Xdefaults      .mh_profile     bin
        !           307: calendar        lib             libisode.a      mhbox
        !           308: \end{verbatim}
        !           309: \end{bwslide}
        !           310: 
        !           311: 
        !           312: \begin{bwslide}
        !           313: \ctitle        {EXAMPLE: FILE MANAGEMENT COMMANDS (cont.)}\small
        !           314: 
        !           315: \begin{verbatim}
        !           316: gr> dir .
        !           317: d mrose    csl          1536 Jun  2 23:25 .
        !           318: d root     wheel         512 May 29 21:50 ..
        !           319: t mrose    csl           563 May 27 13:09 .Xdefaults
        !           320: t mrose    csl          1968 Apr 29 09:49 .mh_profile
        !           321: d mrose    csl          1536 May 29 21:58 bin
        !           322: t mrose    csl          2051 Jun  2 18:23 calendar
        !           323: d mrose    csl           512 May  4 19:13 lib
        !           324: b mrose    csl        691798 Jun  2 23:23 libisode.a
        !           325: d mrose    csl          1024 Jun  2 17:43 mhbox
        !           326: \end{verbatim}
        !           327: \end{bwslide}
        !           328: 
        !           329: 
        !           330: \begin{bwslide}
        !           331: \ctitle        {WHAT THE RESPONDER PROVIDES}\small
        !           332: 
        !           333: \begin{verbatim}
        !           334: read F-READ-ATTRIB-response, context 1
        !           335: {
        !           336:    {
        !           337:       action-result success,
        !           338:       attributes {
        !           339:          { filename { "." } },
        !           340:          { contents-type { document-type-name 1.17.3.6.8 } },
        !           341:          { storage-account "csl" },
        !           342:          { date-and-time-of-creation { actual-values "19870603062745Z" } },
        !           343:          { date-and-time-of-last-modification
        !           344:              { actual-values "19870603062745Z" }
        !           345:          },
        !           346:          { date-and-time-of-last-read-access
        !           347:              { actual-values "19870603062743Z" }
        !           348:          },
        !           349:          { date-and-time-of-last-attribute-modification
        !           350:              { actual-values "19870603062745Z" }
        !           351:          },
        !           352:          { identity-of-creator { actual-values "mrose" } },
        !           353:          { identity-of-last-modifier { actual-values "mrose" } },
        !           354: \end{verbatim}
        !           355: \end{bwslide}
        !           356: 
        !           357: 
        !           358: \begin{bwslide}\small
        !           359: \begin{verbatim}
        !           360:          { identity-of-last-reader { no-value-available "" } },
        !           361:          { identity-of-last-attribute-modifier
        !           362:              { no-value-available "mrose" }
        !           363:          },
        !           364:          { file-availability { actual-values immediate-availability } },
        !           365:          {
        !           366:             permitted-actions {
        !           367:                actual-values { read, insert, replace, extend, erase,
        !           368:                                read-attribute, change-attribute } }
        !           369:          },
        !           370:          { filesize { actual-values 1536 } },
        !           371:          { future-filesize { no-value-available "" } },
        !           372:          { encryption-name { no-value-available "" } },
        !           373:          { legal-qualification { no-value-available "" } }
        !           374:       }
        !           375:    }
        !           376: }
        !           377: \end{verbatim}
        !           378: \end{bwslide}
        !           379: 
        !           380: 
        !           381: \begin{bwslide}
        !           382: \ctitle        {LOCAL ENVIRONMENT COMMANDS (AND MISCELLANY)}
        !           383: 
        !           384: \begin{nrtc}
        !           385: \item  LCD [file]
        !           386:     \begin{nrtc}
        !           387:     \item      CHANGES THE WORKING DIRECTORY ON THE LOCAL SYSTEM
        !           388:     \end{nrtc}
        !           389: 
        !           390: \item  HELP [command]
        !           391: 
        !           392: \item  SET [variable [value]]
        !           393: \end{nrtc}
        !           394: \end{bwslide}
        !           395: 
        !           396: 
        !           397: \begin{note}\em
        !           398: also need protocol exception reporting and tracing
        !           399: 
        !           400: for debugging complete stacks
        !           401: (and resolving episodes of finger-pointing)
        !           402: 
        !           403: good facilities for reporting exceptions and tracing protocol actions
        !           404: are invaluable
        !           405: \end{note}
        !           406: 
        !           407: 
        !           408: \begin{bwslide}
        !           409: \part* {DIRECTORY HANDLING}\bf
        !           410: 
        !           411: \begin{nrtc}
        !           412: \item  WHAT ARE WE MISSING?
        !           413: 
        !           414: \item  SOME KIND OF RUDIMENTARY DIRECTORY FACILITIES
        !           415: 
        !           416: \item  WILDCARDING OF FILENAMES (GLOBBING)
        !           417: \end{nrtc}
        !           418: \end{bwslide}
        !           419: 
        !           420: 
        !           421: \begin{bwslide}
        !           422: \ctitle        {DIRECTORY AND GLOBBING FUNCTIONS}
        !           423: 
        !           424: \begin{nrtc}
        !           425: \item  CD [dir]
        !           426:     \begin{nrtc}
        !           427:     \item      CHANGES THE WORKING DIRECTORY ON THE VIRTUAL FILESTORE
        !           428:     \end{nrtc}
        !           429: 
        !           430: \item  MKDIR dir
        !           431:     \begin{nrtc}
        !           432:     \item      CREATES A DIRECTORY ON THE VIRTUAL FILESTORE
        !           433:     \end{nrtc}
        !           434: 
        !           435: \item  PWD
        !           436:     \begin{nrtc}
        !           437:     \item      PRINTS THE WORKING DIRECTORY ON THE LOCAL SYSTEM AND THE
        !           438:                VIRTUAL FILESTORE
        !           439:     \end{nrtc}
        !           440: 
        !           441: \item  ECHO file $\ldots$
        !           442:     \begin{nrtc}
        !           443:     \item      EXPANDS WILDCARD EXPRESSIONS
        !           444:     \end{nrtc}
        !           445: 
        !           446: \item  PLUS: VIRTUAL FILESTORE FILENAME ARGUMENTS FOR ALL COMMANDS ARE
        !           447:        GLOBBED, DEPENDING ON OPTION SETTING
        !           448: \end{nrtc}
        !           449: \end{bwslide}
        !           450: 
        !           451: 
        !           452: \begin{bwslide}
        !           453: \ctitle        {BUT HOW TO DO THIS?}
        !           454: 
        !           455: \begin{nrtc}
        !           456: \item  MKDIR IS EASY
        !           457:     \begin{nrtc}
        !           458:     \item      F-BEGIN F-CREATE(NBS-9) F-DESELECT F-END
        !           459:     \end{nrtc}
        !           460: 
        !           461: \item  BUT CD AND GLOBBING AREN'T POSSIBLE:
        !           462:     \begin{nrtc}
        !           463:     \item      THE VIRTUAL FILESTORE LACKS A DIRECTORY CONCEPT
        !           464:     \end{nrtc}
        !           465: 
        !           466: \item  SUPPOSITION
        !           467:     \begin{nrtc}
        !           468:     \item      IF WE KNOW THE RULES FOR BUILDING FILENAMES ON THE REMOTE
        !           469:                SYSTEM,
        !           470: 
        !           471:     \item      THEN WE CAN EMULATE THIS CONCEPT IN THE INITIATOR!
        !           472: 
        !           473:     \item      WE CAN ALSO MAKE THE USER INTERFACE SMARTER AS WELL
        !           474:                (BY DEFAULTING MISSING ARGUMENTS)
        !           475:     \end{nrtc}
        !           476: \end{nrtc}
        !           477: \end{bwslide}
        !           478: 
        !           479: 
        !           480: \begin{bwslide}
        !           481: \ctitle        {APPROACH}
        !           482: 
        !           483: \begin{nrtc}
        !           484: \item  LET THE ``REALSTORE'' OPTION DETERMINE HOW FILENAMES ARE BUILT
        !           485: 
        !           486: \item  ON A CD COMMAND
        !           487:     \begin{nrtc}
        !           488:     \item      REMEMBER THE ARGUMENT
        !           489: 
        !           490:     \item      NORMALIZE FUTURE ARGUMENTS USING THIS STRING
        !           491:     \end{nrtc}
        !           492: 
        !           493: \item  FOR GLOBBING
        !           494:     \begin{nrtc}
        !           495:     \item      BASED ON THE REALSTORE, SELECT A GLOBBING ROUTINE WHICH
        !           496:                IS INTEGRATED WITH FTAM
        !           497: 
        !           498:     \item      FOR THE UNIX LOCALSTORE THIS IS TRIVIAL
        !           499:     \end{nrtc}
        !           500: \end{nrtc}
        !           501: \end{bwslide}
        !           502: 
        !           503: 
        !           504: \begin{note}\em
        !           505: the globbing facility in the interactive ftam initiator is
        !           506: based on routines generously supplied by u.c. berkeley
        !           507: \end{note}
        !           508: 
        !           509: 
        !           510: \begin{bwslide}
        !           511: \ctitle        {EXAMPLE: DIRECTORY HANDLING COMMANDS}\small
        !           512: 
        !           513: \begin{verbatim}
        !           514: gr> set realstore unix
        !           515: realstore  = unix       - type of remote realstore
        !           516: gr> ls
        !           517: bin             lib             mhbox
        !           518: calendar        libisode.a      nrtc
        !           519: gr> ls lib
        !           520: MakeUpdEnv      ctype           icons           notes           termcap
        !           521: bfly            emacs           la-template     sl-template     tex82
        !           522: gr> ls lib/*tem*
        !           523: lib/la-template:
        !           524: Makefile        template.bbl    template.tex    text.tex        version.sh
        !           525: 
        !           526: lib/sl-template:
        !           527: Makefile        figure.pic      template.tex
        !           528: gr> cd lib/sl-template
        !           529: gr> pwd
        !           530: local directory: /f/iso/ftam2
        !           531: virtual filestore directory: lib/sl-template
        !           532: gr> ls
        !           533: Makefile        figure.pic      template.tex
        !           534: \end{verbatim}
        !           535: \end{bwslide}
        !           536: 
        !           537: 
        !           538: \begin{bwslide}
        !           539: \ctitle        {THE REALSTORE CONTROVERSY}
        !           540: 
        !           541: \begin{nrtc}
        !           542: \item  THIS IS AN $M*N$ (RATHER THAN $M+N\/$) APPROACH
        !           543:     \begin{nrtc}
        !           544:     \item      THE INITIATOR ON ALL LOCAL SYSTEMS MUST POTENTIALLY KNOW ABOUT
        !           545:                ALL LOCAL SYSTEMS HOSTING A VIRTUAL FILESTORE
        !           546:     \end{nrtc}
        !           547: 
        !           548: \item  NEEDLESS TO SAY THIS IS CONTRARY TO THE OSI PHILOSOPHY
        !           549:     \begin{nrtc}
        !           550:     \item      IT'S PROBABLY WORSE THAN THE PRIVATE ATTRIBUTE GROUP IN
        !           551:                THE FILESTORE
        !           552:     \end{nrtc}
        !           553: 
        !           554: \item  IT'S ALSO AMAZINGLY USEFUL\\ (THE FOREWARD PROGRESS ARGUMENT)
        !           555: 
        !           556: \item  THE BEST SOLUTION, HOWEVER, WOULD BE FOR FTAM TO BE FIXED
        !           557: \end{nrtc}
        !           558: \end{bwslide}
        !           559: 
        !           560: 
        !           561: \begin{bwslide}
        !           562: \part* {SUMMARY}\bf
        !           563: 
        !           564: \begin{nrtc}
        !           565: \item  AN INTERACTIVE FTAM CLIENT WITH REASONABLE CAPABILITIES CAN BE
        !           566:        IMPLEMENTED IN A STRAIGHT-FORWARD FASHION
        !           567: 
        !           568: \item  DIRECTORY HANDLING CAN BE IMPLEMENTED, BUT AT A CONCEPTUAL COST
        !           569: \end{nrtc}
        !           570: \end{bwslide}

unix.superglobalmegacorp.com

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