home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1994 October / usenetsourcesnewsgroupsinfomagicoctober1994disk2.iso / misc / volume41 / wwfs / part10 < prev    next >
Text File  |  1994-01-17  |  93KB  |  4,267 lines

  1. Newsgroups: comp.sources.misc
  2. From: youki-k@is.aist-nara.ac.jp (Youki Kadobayashi)
  3. Subject: v41i095:  wwfs - WorldWide File System, Part10/22
  4. Message-ID: <1994Jan17.202204.19804@sparky.sterling.com>
  5. X-Md4-Signature: b6775569d5a05c8626c91e871778d1ec
  6. Sender: kent@sparky.sterling.com (Kent Landfield)
  7. Organization: Nara Institute of Science and Technology, Japan
  8. Date: Mon, 17 Jan 1994 20:22:04 GMT
  9. Approved: kent@sparky.sterling.com
  10.  
  11. Submitted-by: youki-k@is.aist-nara.ac.jp (Youki Kadobayashi)
  12. Posting-number: Volume 41, Issue 95
  13. Archive-name: wwfs/part10
  14. Environment: UNIX, inet
  15.  
  16. #! /bin/sh
  17. # This is a shell archive.  Remove anything before this line, then feed it
  18. # into a shell via "sh file" or similar.  To overwrite existing files,
  19. # type "sh file -c".
  20. # Contents:  csd/nfs_start.c doc/beyond.ps.B
  21. #   mosaic/Mosaic-2.1+wwfs.diff
  22. # Wrapped by kent@sparky on Sun Jan 16 17:48:33 1994
  23. PATH=/bin:/usr/bin:/usr/ucb:/usr/local/bin:/usr/lbin:$PATH ; export PATH
  24. echo If this archive is complete, you will see the following message:
  25. echo '          "shar: End of archive 10 (of 22)."'
  26. if test -f 'csd/nfs_start.c' -a "${1}" != "-c" ; then 
  27.   echo shar: Will not clobber existing file \"'csd/nfs_start.c'\"
  28. else
  29.   echo shar: Extracting \"'csd/nfs_start.c'\" \(7323 characters\)
  30.   sed "s/^X//" >'csd/nfs_start.c' <<'END_OF_FILE'
  31. X/* 
  32. X * WorldWide File System
  33. X * Copyright (c) 1992,1993 Youki Kadobayashi
  34. X * Copyright (c) 1992,1993 Osaka University
  35. X * All rights reserved.
  36. X *
  37. X * Permission to use, copy, modify and distribute this software and its
  38. X * documentation is hereby granted, provided that the following conditions
  39. X * are met:
  40. X * 1. Both the copyright notice and this permission notice appear in
  41. X *    all copies of the software, derivative works or modified versions,
  42. X *    and any portions thereof, and that both notices appear in
  43. X *    supporting documentation.
  44. X * 2. All advertising materials mentioning features or use of this software
  45. X *    must display the following acknowledgement:
  46. X *      This product includes software developed by the Osaka University
  47. X *      and its contributors.
  48. X * 3. Neither the name of the University nor the names of its contributors
  49. X *    may be used to endorse or promote products derived from this software
  50. X *    without specific prior written permission.
  51. X *
  52. X * THIS SOFTWARE IS PROVIDED BY THE DEVELOPER ``AS IS'' AND OSAKA
  53. X * UNIVERSITY DISCLAIMS ANY LIABILITY OF ANY KIND FOR ANY DAMAGES
  54. X * WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE.
  55. X *
  56. X * Osaka University requests users of this software to return to
  57. X *
  58. X *  Youki Kadobayashi
  59. X *  Department of Information and Computer Sciences
  60. X *  Osaka University, Toyonaka 560, Osaka, Japan
  61. X *
  62. X * any improvements or extensions that they make and grant Osaka
  63. X * University the rights to redistribute these changes.
  64. X */
  65. X/* nonblocking NFS and TCP */
  66. Xstatic char *AtFSid = "$Header: nfs_start.c[109.0] Wed Nov 24 03:47:14 1993 youki-k@is.aist-nara.ac.jp saved $";
  67. X
  68. X#include <sys/types.h>
  69. X#include <errno.h>
  70. X#include <setjmp.h>
  71. X#include <signal.h>
  72. X#include "wfs.h"
  73. X#include "util.h"
  74. X#include "global.h"
  75. X
  76. Xextern jmp_buf select_intr;
  77. Xextern void nfs_program_2();
  78. Xextern void cs_program_1();
  79. X
  80. XSVCXPRT *nfsxprt;
  81. XSVCXPRT *csxprt;
  82. Xfd_set    read_fdset, write_fdset, except_fdset;
  83. X
  84. X#define MASKED_SIGS \
  85. X    (sigmask(SIGINT)|sigmask(SIGTERM)|sigmask(SIGHUP))
  86. X
  87. Xextern qelem so_head;
  88. Xqelem so_head = { &so_head, &so_head };
  89. X
  90. Xchar *sobuf[WF_MAX_SO];
  91. X
  92. Xtypedef struct soq {
  93. X    qelem    q;
  94. X    int    so;
  95. X    func    funcp;
  96. X    void    *p;
  97. X} soq;
  98. X
  99. Xsoq soq_ary[WF_MAX_SO];
  100. X
  101. Xvoid
  102. Xso_register(so, flag)
  103. Xint so;
  104. Xint flag;
  105. X{
  106. X    if (flag & WF_SO_READ)
  107. X        FD_SET(so, &read_fdset);
  108. X    if (flag & WF_SO_WRITE)
  109. X        FD_SET(so, &write_fdset);
  110. X    if (flag & WF_SO_EXCEPT)
  111. X        FD_SET(so, &except_fdset);
  112. X}
  113. X
  114. Xvoid
  115. Xso_unregister(so, flag)
  116. Xint so;
  117. Xint flag;
  118. X{
  119. X    if (flag & WF_SO_READ)
  120. X        FD_CLR(so, &read_fdset);
  121. X    if (flag & WF_SO_WRITE)
  122. X        FD_CLR(so, &write_fdset);
  123. X    if (flag & WF_SO_EXCEPT)
  124. X        FD_CLR(so, &except_fdset);
  125. X}
  126. X
  127. Xvoid
  128. Xfd_union(destfdp, srcfdp)
  129. Xfd_set *destfdp, *srcfdp;
  130. X{
  131. X    int i;
  132. X    for (i = 0; i < (sizeof(fd_set) / sizeof(fd_mask)); ++i) {
  133. X        destfdp->fds_bits[i] |= srcfdp->fds_bits[i];
  134. X    }
  135. X}
  136. X
  137. Xvoid
  138. Xso_callback(so, funcp, p)
  139. Xint so;
  140. Xfunc funcp;
  141. Xvoid *p;
  142. X{
  143. X    soq *sop = &soq_ary[so];
  144. X#ifndef PERFECTLY_CORRECT
  145. X    if (soq_ary[so].so) {
  146. X        dlog("so_callback: not cleared");
  147. X        return;
  148. X    }
  149. X#endif
  150. X    sop->so = so;
  151. X    sop->funcp = funcp;
  152. X    sop->p = p;
  153. X    q_insert(&sop->q, LAST(soq, &so_head));
  154. X}
  155. X
  156. Xvoid
  157. Xso_clear(so)
  158. Xint so;
  159. X{
  160. X    soq *sop = &soq_ary[so];
  161. X#ifndef PERFECTLY_CORRECT
  162. X    if (soq_ary[so].so == 0) {
  163. X        dlog("so_clear: already cleared");
  164. X        return;
  165. X    }
  166. X#endif
  167. X    soq_ary[so].so = 0;
  168. X    q_remove(&sop->q);
  169. X}
  170. X
  171. Xchar *
  172. Xso_getbuf(so)
  173. Xint so;
  174. X{
  175. X    if (! sobuf[so]) {
  176. X        sobuf[so] = (char *) malloc(NFS_MAXDATA+1);
  177. X    }
  178. X    return sobuf[so];
  179. X}
  180. X
  181. Xstatic int
  182. Xdo_select(smask, fds, readfdp, writefdp, exceptfdp, tvp)
  183. Xint smask, fds;
  184. Xfd_set *readfdp, *writefdp, *exceptfdp;
  185. Xstruct timeval *tvp;
  186. X{
  187. X    int sig;
  188. X    int nsel;
  189. X    if (sig = setjmp(select_intr)) {
  190. X        select_intr_valid = 0;
  191. X        /* Got a signal */
  192. X        switch (sig) {
  193. X        case SIGINT:
  194. X        case SIGTERM:
  195. X            if (cs_state != Finishing) {
  196. X                cs_state = Finishing;
  197. X                /* attempt to terminate other threads */
  198. X                csd_stop();
  199. X            }
  200. X            break;
  201. X        }
  202. X        nsel = -1;
  203. X        errno = EINTR;
  204. X    } else {
  205. X        select_intr_valid = 1;
  206. X        /*
  207. X         * Invalidate the current clock value
  208. X         */
  209. X        now = 0;
  210. X        /*
  211. X         * Allow interrupts.
  212. X         * If a signal occurs, then it will cause longjump up above.
  213. X         */
  214. X        (void) sigsetmask(smask);
  215. X        /*
  216. X         * Wait for input
  217. X         */
  218. X        nsel = select(fds, readfdp, writefdp, exceptfdp,
  219. X                  tvp->tv_sec ? tvp : (struct timeval *) 0);
  220. X    }
  221. X    (void) sigblock(MASKED_SIGS);        /* Disallow interrupts */
  222. X    return nsel;
  223. X}
  224. X
  225. Xserv_state
  226. Xcsd_run()
  227. X{
  228. X    fd_set readfds, writefds, exceptfds;
  229. X    struct timeval tvv;
  230. X    int nsel;
  231. X    int smask = sigblock(MASKED_SIGS);
  232. X
  233. X    next_softclock = gettime();
  234. X    cs_state = Run;
  235. X
  236. X    while ((int)cs_state <= (int)Finishing) {
  237. X        /*
  238. X         * notify tasks
  239. X         */
  240. X        if (task_notify_todo)
  241. X            do_task_notify();
  242. X
  243. X        /*
  244. X         * compute timeout tvv
  245. X         */
  246. X        realtime();
  247. X        if (next_softclock <= now) {
  248. X            if (cs_state == Finishing) {
  249. X                /* XXX */;
  250. X            }
  251. X            tvv.tv_sec = softclock();
  252. X        } else {
  253. X            tvv.tv_sec = next_softclock - now;
  254. X        }
  255. X        tvv.tv_usec = 0;
  256. X
  257. X        /*
  258. X         * set fd masks
  259. X         */
  260. X        bzero(&readfds, sizeof(readfds));
  261. X#ifdef RPC_4
  262. X        bcopy(&svc_fdset, &readfds, sizeof(svc_fdset));
  263. X#else
  264. X        bcopy(&svc_fds, &readfds, sizeof(svc_fds));
  265. X#endif
  266. X        fd_union(&readfds, &read_fdset);
  267. X        bcopy(&write_fdset, &writefds, sizeof(writefds));
  268. X        bcopy(&except_fdset, &exceptfds, sizeof(exceptfds));
  269. X
  270. X        /*
  271. X         * Wait for events to occur
  272. X         */
  273. X        nsel = do_select(smask, WF_MAX_SO /* XXX */,
  274. X                 &readfds, &writefds, &exceptfds, &tvv);
  275. X        switch (nsel) {
  276. X        case -1:
  277. X            /*
  278. X             * select was interrupted
  279. X             */
  280. X            if (errno != EINTR) {
  281. X                dlog("select: errno = %d", errno);
  282. X#if 0
  283. X                dump_fdset("select readfds", &readfds);
  284. X                dump_fdset("select writefds", &writefds);
  285. X#endif
  286. X            }
  287. X            break;
  288. X        case 0:
  289. X            /*
  290. X             * select timeout
  291. X             */
  292. X            /* nothing */;
  293. X            break;
  294. X        default:
  295. X            if ((int)cs_state < (int)Finishing) {
  296. X                /*
  297. X                 * process queued socket jobs
  298. X                 */
  299. X                soq *sop, *sop2;
  300. X                ITER2(sop, sop2, soq, &so_head) {
  301. X                    if (FD_ISSET(sop->so, &readfds)
  302. X                        || FD_ISSET(sop->so, &writefds)
  303. X                        || FD_ISSET(sop->so, &exceptfds)) {
  304. X                        FD_CLR(sop->so, &readfds);
  305. X                        (*sop->funcp)(sop->p);
  306. X                        --nsel;
  307. X                    }
  308. X                }
  309. X            }
  310. X            /*
  311. X             * process RPC jobs
  312. X             */
  313. X            if (nsel) {
  314. X#ifdef RPC_4
  315. X                svc_getreqset(&readfds);
  316. X#else
  317. X                svc_getreq(readfds.fds_bits[0]);
  318. X#endif /* RPC_4 */
  319. X            }
  320. X            break;
  321. X        }
  322. X        if (cs_state == Finishing && conn_count() == 0) {
  323. X            cs_state = Quit;
  324. X            break;
  325. X        }
  326. X    }
  327. X    (void) sigsetmask(smask);
  328. X
  329. X    if (cs_state == Quit)
  330. X        cs_state = Done;
  331. X    return cs_state;
  332. X}
  333. X
  334. Xint
  335. Xcsd_rpc()
  336. X{
  337. X    int so;
  338. X    int ret;
  339. X    unsigned short port;
  340. X
  341. X    /*
  342. X     * create socket
  343. X     */
  344. X    so = socket(AF_INET, SOCK_DGRAM, 0);
  345. X    if (so < 0) {
  346. X        perror("Can't create socket");
  347. X        return 1;
  348. X    }
  349. X
  350. X    /*
  351. X     * bind NFS port
  352. X     */
  353. X    ret = bind_resv_port(so, &port);
  354. X    cs_nfsport = port;
  355. X    if (ret) {
  356. X        syslog(LOG_CRIT, "couldn't bind reserved port");
  357. X        return 1;
  358. X    }
  359. X
  360. X    /*
  361. X     * create RPC stub
  362. X     */
  363. X    nfsxprt = svcudp_create(so);
  364. X    csxprt = svcudp_create(so);
  365. X    if (nfsxprt == NULL || csxprt == NULL) {
  366. X        syslog(LOG_CRIT, "cannot create rpc/udp service");
  367. X        return 2;
  368. X    }
  369. X
  370. X    /*
  371. X     * register NFS port
  372. X     */
  373. X    if (! svc_register(nfsxprt, NFS_PROGRAM, NFS_VERSION,
  374. X               nfs_program_2, 0)) {
  375. X        syslog(LOG_CRIT, "unable to register NFS_PROGRAM");
  376. X        return 3;
  377. X    }
  378. X
  379. X    /*
  380. X     * register CS port
  381. X     */
  382. X    pmap_unset(CS_PROGRAM, CS_VERSION);
  383. X    if (! svc_register(csxprt, CS_PROGRAM, CS_VERSION,
  384. X               cs_program_1, IPPROTO_UDP)) {
  385. X        syslog(LOG_CRIT, "unable to register CS_PROGRAM");
  386. X        return 3;
  387. X    }
  388. X
  389. X    return 0;
  390. X}
  391. X
  392. END_OF_FILE
  393.   if test 7323 -ne `wc -c <'csd/nfs_start.c'`; then
  394.     echo shar: \"'csd/nfs_start.c'\" unpacked with wrong size!
  395.   fi
  396.   # end of 'csd/nfs_start.c'
  397. fi
  398. if test -f 'doc/beyond.ps.B' -a "${1}" != "-c" ; then 
  399.   echo shar: Will not clobber existing file \"'doc/beyond.ps.B'\"
  400. else
  401.   echo shar: Extracting \"'doc/beyond.ps.B'\" \(46189 characters\)
  402.   sed "s/^X//" >'doc/beyond.ps.B' <<'END_OF_FILE'
  403. X10 r (can)s
  404. X100 1860 p (be)s
  405. X14 r (delegated)s
  406. X14 r (to)s
  407. X15 r (the)s
  408. X14 r (operating)s
  409. X14 r (system)s
  410. X14 r (or)s
  411. X14 r (a)s
  412. X15 r (client)s
  413. X14 r (library)s
  414. X-3 r (.)s
  415. X19 r (However)s
  416. X-2 r (,)s
  417. X14 r (it)s
  418. X14 r (is)s
  419. X14 r (impractical)s
  420. X14 r (to)s
  421. X15 r (combine)s
  422. X14 r (a)s
  423. X14 r (\256lesystem)s
  424. X100 1927 p (and)s
  425. X14 r (the)s
  426. X14 r (underlying)s
  427. X14 r (system)s
  428. X14 r (if)s
  429. X14 r (great)s
  430. X13 r (dissimilarity)s
  431. X14 r (is)s
  432. X14 r (present)s
  433. X14 r (between)s
  434. X14 r (the)s
  435. X14 r (two.)s
  436. X19 r (Disguising)s
  437. X13 r (resource)s
  438. X14 r (discovery)s
  439. X100 1993 p (systems)s
  440. X17 r (or)s
  441. X16 r (database)s
  442. X17 r (systems)s
  443. X17 r (as)s
  444. X16 r (an)s
  445. X17 r (NFS)s
  446. X17 r (server)s
  447. X16 r (would)s
  448. X17 r (be)s
  449. X17 r (impractical)s
  450. X16 r (since)s
  451. X17 r (these)s
  452. X17 r (systems)s
  453. X16 r (are)s
  454. X17 r (far)s
  455. X17 r (different)s
  456. X100 2060 p (from)s
  457. X11 r (NFS,)s
  458. X10 r (while)s
  459. X11 r (combination)s
  460. X10 r (of)s
  461. X11 r (NFS)s
  462. X10 r (and)s
  463. X11 r (FTP)s
  464. X10 r (was)s
  465. X11 r (possible)s
  466. X10 r (since)s
  467. X11 r (the)s
  468. X10 r (only)s
  469. X11 r (difference)s
  470. X9 r (was)s
  471. X11 r (the)s
  472. X10 r (possible)s
  473. X11 r (delay)s
  474. X100 2126 p (in)s
  475. X13 r (the)s
  476. Xf84 SF
  477. X14 r (open)s
  478. Xf80 SF
  479. X13 r (system)s
  480. X14 r (call.)s
  481. X18 r (It)s
  482. X13 r (is)s
  483. X14 r (possible)s
  484. X13 r (to)s
  485. X14 r (interpret)s
  486. X13 r (pathname)s
  487. X13 r (as)s
  488. X14 r (a)s
  489. X13 r (query)s
  490. X14 r (expression,)s
  491. X13 r (as)s
  492. X14 r (David)s
  493. X13 r (K.)s
  494. X13 r (Gifford)s
  495. X13 r (et.)s
  496. X100 2192 p (al.)s
  497. X11 r (did)s
  498. X11 r (with)s
  499. X10 r (SFS[5],)s
  500. X12 r (but)s
  501. X11 r (it)s
  502. X10 r (is)s
  503. X11 r (questionable)s
  504. X11 r (that)s
  505. X11 r (such)s
  506. X11 r (an)s
  507. X10 r (interface)s
  508. X11 r (can)s
  509. X11 r (convey)s
  510. X11 r (the)s
  511. X10 r (real)s
  512. X11 r (intent)s
  513. X11 r (of)s
  514. X11 r (server)s
  515. X11 r (response.)s
  516. Xf99 SF
  517. X100 2379 p (5)s
  518. X80 r (T)s
  519. X-7 r (oward)s
  520. X19 r (seamless)s
  521. X20 r (integration)s
  522. Xf80 SF
  523. X100 2502 p (Based)s
  524. X12 r (on)s
  525. X13 r (the)s
  526. X12 r (experience)s
  527. X12 r (described)s
  528. X12 r (in)s
  529. X13 r (the)s
  530. X12 r (previous)s
  531. X12 r (section,)s
  532. X13 r (WWFS)s
  533. X12 r (Research)s
  534. X12 r (Group)s
  535. X12 r (has)s
  536. X13 r (been)s
  537. X12 r (enhancing)s
  538. X12 r (the)s
  539. X100 2569 p (functionality)s
  540. X13 r (of)s
  541. X12 r (WWFS)s
  542. X13 r (to)s
  543. X12 r (realize)s
  544. X13 r (a)s
  545. X12 r (seamlessly)s
  546. X13 r (integrated)s
  547. X12 r (information)s
  548. X13 r (sharing)s
  549. X12 r (system.)s
  550. X18 r (The)s
  551. X13 r (author)s
  552. X12 r (has)s
  553. X13 r (been)s
  554. X100 2635 p (attempting)s
  555. X13 r (to)s
  556. X13 r (provide)s
  557. X13 r (such)s
  558. X13 r (a)s
  559. X13 r (system)s
  560. X13 r (by)s
  561. X13 r (amplifying)s
  562. X13 r (the)s
  563. X13 r (notion)s
  564. X13 r (of)s
  565. X13 r (volume)s
  566. X13 r (and)s
  567. X13 r (by)s
  568. X13 r (extending)s
  569. X13 r (the)s
  570. X13 r (protocol)s
  571. X13 r (set.)s
  572. Xf95 SF
  573. X100 2793 p (5.1)s
  574. X66 r (Integration)s
  575. X17 r (by)s
  576. X17 r (volumes)s
  577. Xf80 SF
  578. X100 2897 p (As)s
  579. X18 r (discussed)s
  580. X19 r (in)s
  581. X18 r (Section)s
  582. X18 r (2)s
  583. X19 r (and)s
  584. X18 r (3,)s
  585. X20 r (it)s
  586. X18 r (is)s
  587. X18 r (desirable)s
  588. X19 r (to)s
  589. X18 r (blend)s
  590. X18 r (advantageous)s
  591. X19 r (characteristics)s
  592. X18 r (of)s
  593. X18 r (\256lesystems)s
  594. X19 r (and)s
  595. X100 2963 p (database)s
  596. X14 r (systems)s
  597. X14 r (so)s
  598. X14 r (that)s
  599. X13 r (users)s
  600. X14 r (can)s
  601. X14 r (easily)s
  602. X14 r (navigate)s
  603. X14 r (through)s
  604. X14 r (vast)s
  605. X13 r (web)s
  606. X14 r (of)s
  607. X14 r (information.)s
  608. X183 3030 p (I)s
  609. X9 r (have)s
  610. X9 r (undertaken)s
  611. X10 r (some)s
  612. X9 r (efforts)s
  613. X8 r (to)s
  614. X9 r (improve)s
  615. X10 r (the)s
  616. X9 r (current)s
  617. X9 r (annoying)s
  618. X9 r (situation)s
  619. X10 r (by)s
  620. X9 r (introducing)s
  621. X9 r (\252auto-mounting\272)s
  622. X100 3096 p (feature)s
  623. X15 r (and)s
  624. X15 r (the)s
  625. X15 r (notion)s
  626. X15 r (of)s
  627. X15 r (volume,)s
  628. X15 r (but)s
  629. X15 r (it)s
  630. X15 r (currently)s
  631. X15 r (do)s
  632. X14 r (not)s
  633. X15 r (show)s
  634. X15 r (substantial)s
  635. X15 r (improvements)s
  636. X15 r (over)s
  637. X15 r (hierarchical)s
  638. X100 3163 p (naming)s
  639. X14 r (scheme,)s
  640. X14 r (primarily)s
  641. X14 r (because)s
  642. X13 r (there)s
  643. X14 r (is)s
  644. X14 r (no)s
  645. X14 r (support)s
  646. X14 r (for)s
  647. X14 r (volume)s
  648. X13 r (in)s
  649. X14 r (the)s
  650. X14 r (Internet)s
  651. X14 r (ftp)s
  652. X14 r (archives.)s
  653. X183 3229 p (Suppose)s
  654. X12 r (the)s
  655. X11 r (notion)s
  656. X12 r (of)s
  657. X11 r (volume)s
  658. X12 r (was)s
  659. X11 r (rejected)s
  660. X12 r (by)s
  661. X11 r (an)s
  662. X12 r (authoritative)s
  663. X11 r (body)s
  664. X-3 r (,)s
  665. X11 r (what)s
  666. X12 r (shall)s
  667. X11 r (be)s
  668. X12 r (adopted)s
  669. X11 r (instead?)s
  670. X18 r (For)s
  671. X100 3295 p (the)s
  672. X17 r (three)s
  673. X17 r (players)s
  674. X17 r (in)s
  675. X17 r (the)s
  676. X17 r (ISS)s
  677. X17 r (to)s
  678. X17 r (interoperate,)s
  679. X17 r (some)s
  680. X17 r (kind)s
  681. X17 r (of)s
  682. X17 r (information)s
  683. X17 r (must)s
  684. X17 r (be)s
  685. X17 r (exchanged)s
  686. X17 r (between)s
  687. X17 r (them.)s
  688. X100 3362 p (Granularity)s
  689. X12 r (and)s
  690. X13 r (scalability)s
  691. X12 r (dominates)s
  692. X12 r (the)s
  693. X13 r (choice)s
  694. X12 r (here.)s
  695. X18 r (The)s
  696. X12 r (unit)s
  697. X12 r (of)s
  698. X13 r (information)s
  699. X12 r (exchange)s
  700. X12 r (can)s
  701. X13 r (be)s
  702. X12 r (a)s
  703. X12 r (\256le)s
  704. X13 r (and)s
  705. X12 r (it)s
  706. X100 3428 p (is)s
  707. X12 r (the)s
  708. X13 r (most)s
  709. X12 r (\257exible)s
  710. X12 r (choice)s
  711. X13 r (indeed,)s
  712. X12 r (but)s
  713. X12 r (how)s
  714. X13 r (ef\256ciently)s
  715. X11 r (\256les)s
  716. X12 r (can)s
  717. X13 r (be)s
  718. X12 r (shared)s
  719. X12 r (totally)s
  720. X13 r (independently)s
  721. X12 r (in)s
  722. X12 r (the)s
  723. X13 r (whole)s
  724. X100 3495 p (Internet?)s
  725. X19 r (The)s
  726. X14 r (unit)s
  727. X15 r (can)s
  728. X14 r (be)s
  729. X14 r (a)s
  730. X14 r (directory)s
  731. X-3 r (,)s
  732. X14 r (but)s
  733. X14 r (how)s
  734. X14 r (can)s
  735. X14 r (we)s
  736. X14 r (give)s
  737. X14 r (each)s
  738. X14 r (of)s
  739. X15 r (them)s
  740. X14 r (an)s
  741. X14 r (unique)s
  742. X14 r (name?)s
  743. X19 r (Admittedly)s
  744. X-2 r (,)s
  745. X13 r (the)s
  746. X100 3561 p (concept)s
  747. X12 r (of)s
  748. X12 r (volume)s
  749. X12 r (is)s
  750. X12 r (obscure)s
  751. X12 r (in)s
  752. X12 r (that)s
  753. X12 r (it)s
  754. X13 r (does)s
  755. X12 r (not)s
  756. X12 r (de\256ne)s
  757. X12 r (any)s
  758. X12 r (mechanically)s
  759. X12 r (identi\256ed)s
  760. X12 r (boundary)s
  761. X12 r (\(Figure)s
  762. X12 r (5\),)s
  763. X13 r (but)s
  764. X100 3627 p (how)s
  765. X13 r (clear)s
  766. X14 r (is)s
  767. X13 r (the)s
  768. X14 r (boundary)s
  769. X13 r (of)s
  770. X13 r (\252software)s
  771. X14 r (distribution\272?)s
  772. X18 r (After)s
  773. X13 r (all,)s
  774. X14 r (the)s
  775. X13 r (boundary)s
  776. X14 r (of)s
  777. X13 r (shared)s
  778. X13 r (information)s
  779. X14 r (cannot)s
  780. X100 3694 p (be)s
  781. X14 r (mechanically)s
  782. X14 r (de\256ned.)s
  783. X1261 3946 p (5)s
  784. XEP
  785. X
  786. X%%Page: 6 6
  787. XBP
  788. X1042 260 p 1.000 @beginspecial
  789. X@epsf
  790. X0.800000 @vscale
  791. X0.800000 @hscale
  792. X204.000000 545.000000 309.000000 666.000000 @bbox
  793. X@setspecial
  794. X%%BeginDocument: vol_bound.eps
  795. X%!PS-Adobe-2.0 EPSF-1.2
  796. X%%DocumentFonts: Helvetica
  797. X%%BoundingBox: 204 545 309 666
  798. X%%EndComments
  799. X
  800. X50 dict begin
  801. X
  802. X/arrowHeight 8 def
  803. X/arrowWidth 4 def
  804. X/none null def
  805. X/numGraphicParameters 17 def
  806. X/stringLimit 65535 def
  807. X
  808. X/Begin {
  809. Xsave
  810. XnumGraphicParameters dict begin
  811. X} def
  812. X
  813. X/End {
  814. Xend
  815. Xrestore
  816. X} def
  817. X
  818. X/SetB {
  819. Xdup type /nulltype eq {
  820. Xpop
  821. Xfalse /brushRightArrow idef
  822. Xfalse /brushLeftArrow idef
  823. Xtrue /brushNone idef
  824. X} {
  825. X/brushDashOffset idef
  826. X/brushDashArray idef
  827. X0 ne /brushRightArrow idef
  828. X0 ne /brushLeftArrow idef
  829. X/brushWidth idef
  830. Xfalse /brushNone idef
  831. X} ifelse
  832. X} def
  833. X
  834. X/SetCFg {
  835. X/fgblue idef
  836. X/fggreen idef
  837. X/fgred idef
  838. X} def
  839. X
  840. X/SetCBg {
  841. X/bgblue idef
  842. X/bggreen idef
  843. X/bgred idef
  844. X} def
  845. X
  846. X/SetF {
  847. X/printSize idef
  848. X/printFont idef
  849. X} def
  850. X
  851. X/SetP {
  852. Xdup type /nulltype eq {
  853. Xpop true /patternNone idef
  854. X} {
  855. X/patternGrayLevel idef
  856. XpatternGrayLevel -1 eq {
  857. X/patternString idef
  858. X} if
  859. Xfalse /patternNone idef
  860. X} ifelse
  861. X} def
  862. X
  863. X/BSpl {
  864. X0 begin
  865. Xstorexyn
  866. Xnewpath
  867. Xn 1 gt {
  868. X0 0 0 0 0 0 1 1 true subspline
  869. Xn 2 gt {
  870. X0 0 0 0 1 1 2 2 false subspline
  871. X1 1 n 3 sub {
  872. X/i exch def
  873. Xi 1 sub dup i dup i 1 add dup i 2 add dup false subspline
  874. X} for
  875. Xn 3 sub dup n 2 sub dup n 1 sub dup 2 copy false subspline
  876. X} if
  877. Xn 2 sub dup n 1 sub dup 2 copy 2 copy false subspline
  878. XpatternNone not brushLeftArrow not brushRightArrow not and and { ifill } if
  879. XbrushNone not { istroke } if
  880. X0 0 1 1 leftarrow
  881. Xn 2 sub dup n 1 sub dup rightarrow
  882. X} if
  883. Xend
  884. X} dup 0 4 dict put def
  885. X
  886. X/Circ {
  887. Xnewpath
  888. X0 360 arc
  889. XpatternNone not { ifill } if
  890. XbrushNone not { istroke } if
  891. X} def
  892. X
  893. X/CBSpl {
  894. X0 begin
  895. Xdup 2 gt {
  896. Xstorexyn
  897. Xnewpath
  898. Xn 1 sub dup 0 0 1 1 2 2 true subspline
  899. X1 1 n 3 sub {
  900. X/i exch def
  901. Xi 1 sub dup i dup i 1 add dup i 2 add dup false subspline
  902. X} for
  903. Xn 3 sub dup n 2 sub dup n 1 sub dup 0 0 false subspline
  904. Xn 2 sub dup n 1 sub dup 0 0 1 1 false subspline
  905. XpatternNone not { ifill } if
  906. XbrushNone not { istroke } if
  907. X} {
  908. XPoly
  909. X} ifelse
  910. Xend
  911. X} dup 0 4 dict put def
  912. X
  913. X
  914. X/RRect { CBSpl } def
  915. X
  916. X/Elli {
  917. X0 begin
  918. Xnewpath
  919. X4 2 roll
  920. Xtranslate
  921. Xscale
  922. X0 0 1 0 360 arc
  923. XpatternNone not { ifill } if
  924. XbrushNone not { istroke } if
  925. Xend
  926. X} dup 0 1 dict put def
  927. X
  928. X/Line {
  929. X0 begin
  930. X2 storexyn
  931. Xnewpath
  932. Xx 0 get y 0 get moveto
  933. Xx 1 get y 1 get lineto
  934. XbrushNone not { istroke } if
  935. X0 0 1 1 leftarrow
  936. X0 0 1 1 rightarrow
  937. Xend
  938. X} dup 0 4 dict put def
  939. X
  940. X/MLine {
  941. X0 begin
  942. Xstorexyn
  943. Xnewpath
  944. Xn 1 gt {
  945. Xx 0 get y 0 get moveto
  946. X1 1 n 1 sub {
  947. X/i exch def
  948. Xx i get y i get lineto
  949. X} for
  950. XpatternNone not brushLeftArrow not brushRightArrow not and and { ifill } if
  951. XbrushNone not { istroke } if
  952. X0 0 1 1 leftarrow
  953. Xn 2 sub dup n 1 sub dup rightarrow
  954. X} if
  955. Xend
  956. X} dup 0 4 dict put def
  957. X
  958. X/Poly {
  959. X3 1 roll
  960. Xnewpath
  961. Xmoveto
  962. X-1 add
  963. X{ lineto } repeat
  964. Xclosepath
  965. XpatternNone not { ifill } if
  966. XbrushNone not { istroke } if
  967. X} def
  968. X
  969. X/Rect {
  970. X0 begin
  971. X/t exch def
  972. X/r exch def
  973. X/b exch def
  974. X/l exch def
  975. Xnewpath
  976. Xl b moveto
  977. Xl t lineto
  978. Xr t lineto
  979. Xr b lineto
  980. Xclosepath
  981. XpatternNone not { ifill } if
  982. XbrushNone not { istroke } if
  983. Xend
  984. X} dup 0 4 dict put def
  985. X
  986. X/WhiteBg 1 def
  987. X/HollowBg 0 def
  988. X/Text { ishow } def
  989. X
  990. X/idef {
  991. Xdup where { pop pop pop } { exch def } ifelse
  992. X} def
  993. X
  994. X/ifill {
  995. X0 begin
  996. Xgsave
  997. XpatternGrayLevel -1 ne {
  998. Xfgred bgred fgred sub patternGrayLevel mul add
  999. Xfggreen bggreen fggreen sub patternGrayLevel mul add
  1000. Xfgblue bgblue fgblue sub patternGrayLevel mul add setrgbcolor
  1001. Xeofill
  1002. X} {
  1003. Xeoclip
  1004. XoriginalCTM setmatrix
  1005. Xpathbbox /t exch def /r exch def /b exch def /l exch def
  1006. X/w r l sub ceiling cvi def
  1007. X/h t b sub ceiling cvi def
  1008. X/imageByteWidth w 8 div ceiling cvi def
  1009. X/imageHeight h def
  1010. Xbgred bggreen bgblue setrgbcolor
  1011. Xeofill
  1012. Xfgred fggreen fgblue setrgbcolor
  1013. Xw 0 gt h 0 gt and {
  1014. Xl b translate w h scale
  1015. Xw h true [w 0 0 h neg 0 h] { patternproc } imagemask
  1016. X} if
  1017. X} ifelse
  1018. Xgrestore
  1019. Xend
  1020. X} dup 0 8 dict put def
  1021. X
  1022. X/istroke {
  1023. Xgsave
  1024. XbrushDashOffset -1 eq {
  1025. X[] 0 setdash
  1026. X1 setgray
  1027. X} {
  1028. XbrushDashArray brushDashOffset setdash
  1029. Xfgred fggreen fgblue setrgbcolor
  1030. X} ifelse
  1031. XbrushWidth setlinewidth
  1032. XoriginalCTM setmatrix
  1033. Xstroke
  1034. Xgrestore
  1035. X} def
  1036. X
  1037. X/xdescender {
  1038. Xbegin 0
  1039. XFontType 0 eq
  1040. X{ FDepVector dup length 1 sub get xdescender }
  1041. X{ [FontBBox] 1 get } ifelse
  1042. XFontMatrix transform exch pop end
  1043. X} def
  1044. X/ishow {
  1045. X0 begin
  1046. Xgsave
  1047. Xfgred fggreen fgblue setrgbcolor
  1048. XWhiteBg eq /drawBg exch def
  1049. X/fontDict printFont findfont printSize scalefont dup setfont def
  1050. X/descender fontDict xdescender def
  1051. X/vertoffset 0 descender sub printSize sub printFont /Courier ne
  1052. XprintFont /Courier-Bold ne and { 1 add } if def {
  1053. XdrawBg {
  1054. Xnewpath 0 vertoffset descender add moveto
  1055. Xdup stringwidth pop dup 0 rlineto
  1056. X0 printSize rlineto 0 exch sub 0 rlineto
  1057. Xclosepath currentgray 1 setgray fill    setgray } if
  1058. X0 vertoffset moveto show
  1059. X/vertoffset vertoffset printSize sub def
  1060. X} forall
  1061. Xgrestore
  1062. Xend
  1063. X} dup 0 4 dict put def
  1064. X
  1065. X/patternproc {
  1066. X0 begin
  1067. X/patternByteLength patternString length def
  1068. X/patternHeight patternByteLength 8 mul sqrt cvi def
  1069. X/patternWidth patternHeight def
  1070. X/patternByteWidth patternWidth 8 idiv def
  1071. X/imageByteMaxLength imageByteWidth imageHeight mul
  1072. XstringLimit patternByteWidth sub min def
  1073. X/imageMaxHeight imageByteMaxLength imageByteWidth idiv patternHeight idiv
  1074. XpatternHeight mul patternHeight max def
  1075. X/imageHeight imageHeight imageMaxHeight sub store
  1076. X/imageString imageByteWidth imageMaxHeight mul patternByteWidth add string def
  1077. X0 1 imageMaxHeight 1 sub {
  1078. X/y exch def
  1079. X/patternRow y patternByteWidth mul patternByteLength mod def
  1080. X/patternRowString patternString patternRow patternByteWidth getinterval def
  1081. X/imageRow y imageByteWidth mul def
  1082. X0 patternByteWidth imageByteWidth 1 sub {
  1083. X/x exch def
  1084. XimageString imageRow x add patternRowString putinterval
  1085. X} for
  1086. X} for
  1087. XimageString
  1088. Xend
  1089. X} dup 0 12 dict put def
  1090. X
  1091. X/min {
  1092. Xdup 3 2 roll dup 4 3 roll lt { exch } if pop
  1093. X} def
  1094. X
  1095. X/max {
  1096. Xdup 3 2 roll dup 4 3 roll gt { exch } if pop
  1097. X} def
  1098. X
  1099. X/arrowhead {
  1100. X0 begin
  1101. Xtransform originalCTM itransform
  1102. X/taily exch def
  1103. X/tailx exch def
  1104. Xtransform originalCTM itransform
  1105. X/tipy exch def
  1106. X/tipx exch def
  1107. X/dy tipy taily sub def
  1108. X/dx tipx tailx sub def
  1109. X/angle dx 0 ne dy 0 ne or { dy dx atan } { 90 } ifelse def
  1110. Xgsave
  1111. XoriginalCTM setmatrix
  1112. Xtipx tipy translate
  1113. Xangle rotate
  1114. Xnewpath
  1115. X0 0 moveto
  1116. XarrowHeight neg arrowWidth 2 div lineto
  1117. XarrowHeight neg arrowWidth 2 div neg lineto
  1118. Xclosepath
  1119. XpatternNone not {
  1120. XoriginalCTM setmatrix
  1121. X/padtip arrowHeight 2 exp 0.25 arrowWidth 2 exp mul add sqrt brushWidth mul
  1122. XarrowWidth div def
  1123. X/padtail brushWidth 2 div def
  1124. Xtipx tipy translate
  1125. Xangle rotate
  1126. Xpadtip 0 translate
  1127. XarrowHeight padtip add padtail add arrowHeight div dup scale
  1128. Xarrowheadpath
  1129. Xifill
  1130. X} if
  1131. XbrushNone not {
  1132. XoriginalCTM setmatrix
  1133. Xtipx tipy translate
  1134. Xangle rotate
  1135. Xarrowheadpath
  1136. Xistroke
  1137. X} if
  1138. Xgrestore
  1139. Xend
  1140. X} dup 0 9 dict put def
  1141. X
  1142. X/arrowheadpath {
  1143. Xnewpath
  1144. X0 0 moveto
  1145. XarrowHeight neg arrowWidth 2 div lineto
  1146. XarrowHeight neg arrowWidth 2 div neg lineto
  1147. Xclosepath
  1148. X} def
  1149. X
  1150. X/leftarrow {
  1151. X0 begin
  1152. Xy exch get /taily exch def
  1153. Xx exch get /tailx exch def
  1154. Xy exch get /tipy exch def
  1155. Xx exch get /tipx exch def
  1156. XbrushLeftArrow { tipx tipy tailx taily arrowhead } if
  1157. Xend
  1158. X} dup 0 4 dict put def
  1159. X
  1160. X/rightarrow {
  1161. X0 begin
  1162. Xy exch get /tipy exch def
  1163. Xx exch get /tipx exch def
  1164. Xy exch get /taily exch def
  1165. Xx exch get /tailx exch def
  1166. XbrushRightArrow { tipx tipy tailx taily arrowhead } if
  1167. Xend
  1168. X} dup 0 4 dict put def
  1169. X
  1170. X/midpoint {
  1171. X0 begin
  1172. X/y1 exch def
  1173. X/x1 exch def
  1174. X/y0 exch def
  1175. X/x0 exch def
  1176. Xx0 x1 add 2 div
  1177. Xy0 y1 add 2 div
  1178. Xend
  1179. X} dup 0 4 dict put def
  1180. X
  1181. X/thirdpoint {
  1182. X0 begin
  1183. X/y1 exch def
  1184. X/x1 exch def
  1185. X/y0 exch def
  1186. X/x0 exch def
  1187. Xx0 2 mul x1 add 3 div
  1188. Xy0 2 mul y1 add 3 div
  1189. Xend
  1190. X} dup 0 4 dict put def
  1191. X
  1192. X/subspline {
  1193. X0 begin
  1194. X/movetoNeeded exch def
  1195. Xy exch get /y3 exch def
  1196. Xx exch get /x3 exch def
  1197. Xy exch get /y2 exch def
  1198. Xx exch get /x2 exch def
  1199. Xy exch get /y1 exch def
  1200. Xx exch get /x1 exch def
  1201. Xy exch get /y0 exch def
  1202. Xx exch get /x0 exch def
  1203. Xx1 y1 x2 y2 thirdpoint
  1204. X/p1y exch def
  1205. X/p1x exch def
  1206. Xx2 y2 x1 y1 thirdpoint
  1207. X/p2y exch def
  1208. X/p2x exch def
  1209. Xx1 y1 x0 y0 thirdpoint
  1210. Xp1x p1y midpoint
  1211. X/p0y exch def
  1212. X/p0x exch def
  1213. Xx2 y2 x3 y3 thirdpoint
  1214. Xp2x p2y midpoint
  1215. X/p3y exch def
  1216. X/p3x exch def
  1217. XmovetoNeeded { p0x p0y moveto } if
  1218. Xp1x p1y p2x p2y p3x p3y curveto
  1219. Xend
  1220. X} dup 0 17 dict put def
  1221. X
  1222. X/storexyn {
  1223. X/n exch def
  1224. X/y n array def
  1225. X/x n array def
  1226. Xn 1 sub -1 0 {
  1227. X/i exch def
  1228. Xy i 3 2 roll put
  1229. Xx i 3 2 roll put
  1230. X} for
  1231. X} def
  1232. X
  1233. X%%EndProlog
  1234. X
  1235. X%I Idraw 9 Grid 8 
  1236. X
  1237. X
  1238. XBegin
  1239. X%I b u
  1240. X%I cfg u
  1241. X%I cbg u
  1242. X%I f u
  1243. X%I k u
  1244. X%I p u
  1245. X%I t
  1246. X[ .8 0 0 .8 0 0 ] concat
  1247. X/originalCTM matrix currentmatrix def
  1248. X
  1249. XBegin %I CBSpl
  1250. X%I b 65535
  1251. X1 0 0 [] 0 SetB
  1252. X%I cfg Black
  1253. X0 0 0 SetCFg
  1254. X%I cbg White
  1255. X1 1 1 SetCBg
  1256. X%I p
  1257. X1 SetP
  1258. X%I t
  1259. X[ 1 0 0 1 102 188 ] concat
  1260. X%I 6
  1261. X224 643
  1262. X282 513
  1263. X274 506
  1264. X163 506
  1265. X156 514
  1266. X209 643
  1267. X6 CBSpl
  1268. XEnd
  1269. X
  1270. XBegin %I Elli
  1271. X%I b 13107
  1272. X2 0 0 [2 2 2 2 2 2 2 2] 15 SetB
  1273. X%I cfg Black
  1274. X0 0 0 SetCFg
  1275. X%I cbg White
  1276. X1 1 1 SetCBg
  1277. Xnone SetP %I p n
  1278. X%I t
  1279. X[ 1 0 0 1 102 188 ] concat
  1280. X%I
  1281. X242 519 22 22 Elli
  1282. XEnd
  1283. X
  1284. XBegin %I Elli
  1285. X%I b 13107
  1286. X2 0 0 [2 2 2 2 2 2 2 2] 15 SetB
  1287. X%I cfg Black
  1288. X0 0 0 SetCFg
  1289. X%I cbg White
  1290. X1 1 1 SetCBg
  1291. Xnone SetP %I p n
  1292. X%I t
  1293. X[ 1 0 0 1 47 187 ] concat
  1294. X%I
  1295. X242 519 22 22 Elli
  1296. XEnd
  1297. X
  1298. XBegin %I Text
  1299. X%I cfg Black
  1300. X0 0 0 SetCFg
  1301. X%I f *-helvetica-medium-r-*-120-*
  1302. X/Helvetica 12 SetF
  1303. X%I t
  1304. X[ 1 0 0 1 301 759 ] concat
  1305. X%I
  1306. X[
  1307. X(usr.bin)
  1308. X] WhiteBg Text
  1309. XEnd
  1310. X
  1311. XBegin %I Text
  1312. X%I cfg Black
  1313. X0 0 0 SetCFg
  1314. X%I f *-helvetica-medium-r-*-120-*
  1315. X/Helvetica 12 SetF
  1316. X%I t
  1317. X[ 1 0 0 1 276 712 ] concat
  1318. X%I
  1319. X[
  1320. X(make)
  1321. X] WhiteBg Text
  1322. XEnd
  1323. X
  1324. XBegin %I Text
  1325. X%I cfg Black
  1326. X0 0 0 SetCFg
  1327. X%I f *-helvetica-medium-r-*-120-*
  1328. X/Helvetica 12 SetF
  1329. X%I t
  1330. X[ 1 0 0 1 333 711 ] concat
  1331. X%I
  1332. X[
  1333. X(rdist)
  1334. X] WhiteBg Text
  1335. XEnd
  1336. X
  1337. XBegin %I Line
  1338. X%I b 65535
  1339. X1 0 0 [] 0 SetB
  1340. X%I cfg Black
  1341. X0 0 0 SetCFg
  1342. X%I cbg White
  1343. X1 1 1 SetCBg
  1344. X%I p
  1345. X< ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff
  1346. X  ffffffff > -1 SetP
  1347. X%I t
  1348. X[ 1 0 0 1 102 188 ] concat
  1349. X%I
  1350. X218 555 235 530 Line
  1351. XEnd
  1352. X
  1353. XBegin %I Line
  1354. X%I b 65535
  1355. X1 0 0 [] 0 SetB
  1356. X%I cfg Black
  1357. X0 0 0 SetCFg
  1358. X%I cbg White
  1359. X1 1 1 SetCBg
  1360. X%I p
  1361. X< ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff
  1362. X  ffffffff > -1 SetP
  1363. X%I t
  1364. X[ 1 0 0 1 102 188 ] concat
  1365. X%I
  1366. X208 556 194 529 Line
  1367. XEnd
  1368. X
  1369. XBegin %I Text
  1370. X%I cfg Black
  1371. X0 0 0 SetCFg
  1372. X%I f *-helvetica-medium-r-*-120-*
  1373. X/Helvetica 12 SetF
  1374. X%I t
  1375. X[ 1 0 0 1 303 798 ] concat
  1376. X%I
  1377. X[
  1378. X(tahoe)
  1379. X] WhiteBg Text
  1380. XEnd
  1381. X
  1382. XBegin %I Line
  1383. X%I b 65535
  1384. X1 0 0 [] 0 SetB
  1385. X%I cfg Black
  1386. X0 0 0 SetCFg
  1387. X%I cbg White
  1388. X1 1 1 SetCBg
  1389. X%I p
  1390. X< ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff
  1391. X  ffffffff > -1 SetP
  1392. X%I t
  1393. X[ 1 0 0 1 98 187 ] concat
  1394. X%I
  1395. X218 597 218 576 Line
  1396. XEnd
  1397. X
  1398. XEnd %I eop
  1399. X
  1400. Xshowpage
  1401. X
  1402. X
  1403. Xend
  1404. X%%EndDocument
  1405. X@endspecial
  1406. Xf80 SF
  1407. X100 975 p (Figure)s
  1408. X19 r (5:)s
  1409. Xf82 SF
  1410. X28 r (The)s
  1411. X19 r (boundary)s
  1412. X19 r (of)s
  1413. X19 r (volume)s
  1414. X19 r (cannot)s
  1415. X18 r (be)s
  1416. X19 r (de\256ned)s
  1417. X19 r (mechanically)s
  1418. X-1 r (.)s
  1419. Xf80 SF
  1420. X32 r (In)s
  1421. X19 r (this)s
  1422. X19 r (example,)s
  1423. X20 r (volume)s
  1424. X19 r (\252tahoe\272)s
  1425. X100 1041 p (contains)s
  1426. X14 r (subdirectories)s
  1427. X14 r (\252make\272)s
  1428. X14 r (and)s
  1429. X13 r (\252rdist\272,)s
  1430. X14 r (which)s
  1431. X14 r (in)s
  1432. X14 r (turn)s
  1433. X14 r (can)s
  1434. X14 r (be)s
  1435. X13 r (de\256ned)s
  1436. X14 r (as)s
  1437. X14 r (new)s
  1438. X14 r (volumes.)s
  1439. X183 1215 p (Based)s
  1440. X17 r (on)s
  1441. X18 r (these)s
  1442. X17 r (considerations,)s
  1443. X18 r (volume)s
  1444. X18 r (will)s
  1445. X17 r (become)s
  1446. X17 r (the)s
  1447. X17 r (common)s
  1448. X18 r (vocabulary)s
  1449. X17 r (exchanged)s
  1450. X17 r (between)s
  1451. X18 r (the)s
  1452. X100 1282 p (resource)s
  1453. X17 r (location,)s
  1454. X17 r (access,)s
  1455. X18 r (and)s
  1456. X17 r (reorganization)s
  1457. X16 r (systems)s
  1458. X17 r (in)s
  1459. X17 r (the)s
  1460. X16 r (WWFS)s
  1461. X17 r (framework.)s
  1462. X28 r (The)s
  1463. X17 r (bene\256t)s
  1464. X16 r (of)s
  1465. X17 r (adopting)s
  1466. X100 1348 p (volume)s
  1467. X14 r (for)s
  1468. X14 r (resource)s
  1469. X14 r (location)s
  1470. X13 r (and)s
  1471. X14 r (access)s
  1472. X14 r (interface)s
  1473. X14 r (has)s
  1474. X14 r (been)s
  1475. X14 r (discussed)s
  1476. X13 r (in)s
  1477. X14 r (my)s
  1478. X14 r (previous)s
  1479. X14 r (paper[3].)s
  1480. X183 1415 p (V)s
  1481. X-6 r (olume)s
  1482. X9 r (can)s
  1483. X10 r (bene\256t)s
  1484. X11 r (\256lesystem)s
  1485. X10 r (and)s
  1486. X10 r (resource)s
  1487. X11 r (reorganization)s
  1488. X9 r (system)s
  1489. X10 r (as)s
  1490. X11 r (well.)s
  1491. X17 r (It)s
  1492. X10 r (would)s
  1493. X10 r (be)s
  1494. X11 r (feasible)s
  1495. X10 r (to)s
  1496. X10 r (collect)s
  1497. X100 1481 p (and)s
  1498. X13 r (summarize)s
  1499. X14 r (feedbacks)s
  1500. X13 r (for)s
  1501. X13 r (each)s
  1502. X13 r (volume,)s
  1503. X14 r (while)s
  1504. X13 r (collecting)s
  1505. X13 r (feedbacks)s
  1506. X14 r (for)s
  1507. X13 r (every)s
  1508. X13 r (\256le)s
  1509. X13 r (would)s
  1510. X14 r (be)s
  1511. X13 r (impractical,)s
  1512. X100 1547 p (since)s
  1513. X14 r (it)s
  1514. X14 r (is)s
  1515. X14 r (dif\256cult)s
  1516. X12 r (to)s
  1517. X14 r (generate)s
  1518. X14 r (meaningful)s
  1519. X14 r (report)s
  1520. X14 r (from)s
  1521. X14 r (meaningless)s
  1522. X13 r (collection)s
  1523. X14 r (of)s
  1524. X14 r (feedbacks.)s
  1525. X183 1614 p (The)s
  1526. X12 r (resulting)s
  1527. X11 r (statistics)s
  1528. X12 r (report)s
  1529. X11 r (can)s
  1530. X12 r (be)s
  1531. X11 r (e-mailed)s
  1532. X12 r (to)s
  1533. X11 r (the)s
  1534. X12 r (responsible)s
  1535. X11 r (archive)s
  1536. X12 r (administrator)s
  1537. X11 r (so)s
  1538. X12 r (that)s
  1539. X11 r (comments)s
  1540. X100 1680 p (from)s
  1541. X17 r (archive)s
  1542. X16 r (users)s
  1543. X17 r (can)s
  1544. X16 r (be)s
  1545. X17 r (re\257ected,)s
  1546. X17 r (different)s
  1547. X16 r (archiving)s
  1548. X17 r (scheme)s
  1549. X16 r (can)s
  1550. X17 r (be)s
  1551. X17 r (compared)s
  1552. X16 r (from)s
  1553. X17 r (objective)s
  1554. X16 r (point)s
  1555. X17 r (of)s
  1556. X100 1747 p (view)s
  1557. X-3 r (,)s
  1558. X13 r (and)s
  1559. X14 r (ultimately)s
  1560. X-3 r (,)s
  1561. X13 r (the)s
  1562. X14 r (quality)s
  1563. X14 r (of)s
  1564. X14 r (electronic)s
  1565. X14 r (archives)s
  1566. X13 r (can)s
  1567. X14 r (be)s
  1568. X14 r (improved)s
  1569. X14 r (easily)s
  1570. X-3 r (.)s
  1571. X183 1813 p (Implementation)s
  1572. X11 r (of)s
  1573. X11 r (\252forti\256ed\272)s
  1574. X11 r (volume,)s
  1575. X11 r (as)s
  1576. X11 r (exhibited)s
  1577. X11 r (in)s
  1578. X11 r (Figures)s
  1579. X10 r (3)s
  1580. X11 r (and)s
  1581. X11 r (4,)s
  1582. X12 r (would)s
  1583. X10 r (make)s
  1584. X11 r (mirroring)s
  1585. X11 r (even)s
  1586. X11 r (more)s
  1587. X100 1880 p (practical)s
  1588. X14 r (way)s
  1589. X14 r (to)s
  1590. X14 r (facilitate)s
  1591. X14 r (archive)s
  1592. X14 r (administration,)s
  1593. X14 r (since)s
  1594. X13 r (it)s
  1595. X14 r (provides)s
  1596. X14 r (ability)s
  1597. X14 r (to)s
  1598. X14 r (manipulate)s
  1599. X14 r (namespaces)s
  1600. X14 r (while)s
  1601. X100 1946 p (automating)s
  1602. X11 r (the)s
  1603. X12 r (management)s
  1604. X11 r (of)s
  1605. X12 r (replicated)s
  1606. X11 r (information.)s
  1607. X18 r (In)s
  1608. X11 r (other)s
  1609. X12 r (words,)s
  1610. X12 r (the)s
  1611. X11 r (forti\256ed)s
  1612. X12 r (volume)s
  1613. X11 r (will)s
  1614. X12 r (enable)s
  1615. X11 r (sep-)s
  1616. X100 2012 p (aration)s
  1617. X13 r (of)s
  1618. X13 r (storage)s
  1619. X14 r (space)s
  1620. X13 r (replication)s
  1621. X13 r (and)s
  1622. X13 r (namespace)s
  1623. X14 r (replication.)s
  1624. X18 r (V)s
  1625. X-5 r (arious)s
  1626. X12 r (experiments)s
  1627. X13 r (with)s
  1628. X13 r (different)s
  1629. X13 r (naming)s
  1630. X100 2079 p (schemes)s
  1631. X14 r (can)s
  1632. X14 r (be)s
  1633. X14 r (evaluated)s
  1634. X13 r (with)s
  1635. X14 r (fairness,)s
  1636. X14 r (thanks)s
  1637. X14 r (to)s
  1638. X14 r (the)s
  1639. X14 r (statistics)s
  1640. X13 r (reports.)s
  1641. Xf95 SF
  1642. X100 2237 p (5.2)s
  1643. X66 r (Integration)s
  1644. X17 r (by)s
  1645. X17 r (pr)s
  1646. X-1 r (otocols)s
  1647. Xf80 SF
  1648. X100 2340 p (The)s
  1649. X19 r (new)s
  1650. X19 r (concepts)s
  1651. X18 r (introduced)s
  1652. X19 r (in)s
  1653. X19 r (the)s
  1654. X19 r (WWFS,)s
  1655. X19 r (such)s
  1656. X19 r (as)s
  1657. X18 r (access)s
  1658. X19 r (policy)s
  1659. X-2 r (,)s
  1660. X19 r (volume,)s
  1661. X20 r (and)s
  1662. X18 r (management)s
  1663. X19 r (of)s
  1664. X19 r (cache,)s
  1665. X100 2407 p (necessitates)s
  1666. X14 r (design)s
  1667. X14 r (and)s
  1668. X14 r (implementation)s
  1669. X13 r (of)s
  1670. X14 r (a)s
  1671. X14 r (new)s
  1672. X14 r (protocol)s
  1673. X14 r (that)s
  1674. X14 r (supports)s
  1675. X13 r (operations)s
  1676. X14 r (for)s
  1677. X14 r (these)s
  1678. X14 r (objects.)s
  1679. X183 2473 p (Also,)s
  1680. X14 r (a)s
  1681. X13 r (new)s
  1682. X14 r (protocol)s
  1683. X14 r (was)s
  1684. X13 r (necessary)s
  1685. X14 r (that)s
  1686. X13 r (can)s
  1687. X14 r (\256ll)s
  1688. X14 r (semantic)s
  1689. X13 r (gap)s
  1690. X14 r (between)s
  1691. X14 r (NFS)s
  1692. X13 r (and)s
  1693. X14 r (FTP)s
  1694. X-5 r (,)s
  1695. X12 r (which)s
  1696. X14 r (enable)s
  1697. X14 r (CS)s
  1698. X100 2540 p (to)s
  1699. X14 r (mimic)s
  1700. X14 r (the)s
  1701. X14 r (normal)s
  1702. X13 r (behavior)s
  1703. X14 r (of)s
  1704. Xf84 SF
  1705. X14 r (open)s
  1706. Xf80 SF
  1707. X14 r (system)s
  1708. X14 r (call)s
  1709. X14 r (with)s
  1710. X13 r (help)s
  1711. X14 r (of)s
  1712. X14 r (client)s
  1713. X14 r (library)s
  1714. X-3 r (.)s
  1715. X183 2606 p (Considering)s
  1716. X15 r (these)s
  1717. X15 r (fundamental)s
  1718. X15 r (need)s
  1719. X14 r (for)s
  1720. X15 r (new)s
  1721. X15 r (protocols)s
  1722. X15 r (and)s
  1723. X15 r (a)s
  1724. X15 r (number)s
  1725. X15 r (of)s
  1726. X15 r (other)s
  1727. X14 r (possible)s
  1728. X15 r (improvements,)s
  1729. X100 2673 p (I)s
  1730. X19 r (have)s
  1731. X18 r (designed)s
  1732. X19 r (a)s
  1733. X18 r (new)s
  1734. X19 r (protocol)s
  1735. X18 r (architecture)s
  1736. X19 r (for)s
  1737. X18 r (WWFS)s
  1738. X19 r (as)s
  1739. X18 r (a)s
  1740. X19 r (whole.)s
  1741. X32 r (Client-CS)s
  1742. X19 r (interaction)s
  1743. X18 r (is)s
  1744. X19 r (performed)s
  1745. X100 2739 p (via)s
  1746. X13 r (user)s
  1747. X13 r (interface)s
  1748. X14 r (protocol)s
  1749. X13 r (\(UIP\),)s
  1750. X13 r (resource)s
  1751. X13 r (access)s
  1752. X13 r (protocol)s
  1753. X14 r (\(RAP\))s
  1754. X13 r (and)s
  1755. X13 r (resource)s
  1756. X13 r (reorganize)s
  1757. X12 r (protocol)s
  1758. X14 r (\(ROP\),)s
  1759. X100 2805 p (whereas)s
  1760. X10 r (CS-CS,)s
  1761. X11 r (CS-\256leserver)s
  1762. X10 r (interaction)s
  1763. X10 r (is)s
  1764. X11 r (performed)s
  1765. X10 r (via)s
  1766. X11 r (resource)s
  1767. X10 r (query)s
  1768. X10 r (protocol)s
  1769. X11 r (\(RQP\),)s
  1770. X10 r (resource)s
  1771. X10 r (transfer)s
  1772. X100 2872 p (protocol)s
  1773. X17 r (\(R)s
  1774. X-2 r (TP\))s
  1775. X16 r (and)s
  1776. X17 r (ROP)s
  1777. X18 r (\(Figure)s
  1778. X17 r (6\).)s
  1779. X28 r (RAP)s
  1780. X17 r (and)s
  1781. X18 r (R)s
  1782. X-3 r (TP)s
  1783. X17 r (can)s
  1784. X17 r (be)s
  1785. X17 r (existing)s
  1786. X17 r (protocols)s
  1787. X17 r (such)s
  1788. X18 r (as)s
  1789. X17 r (NFS)s
  1790. X17 r (and)s
  1791. X17 r (FTP)s
  1792. X-5 r (,)s
  1793. X16 r (but)s
  1794. X100 2938 p (there)s
  1795. X14 r (are)s
  1796. X14 r (much)s
  1797. X14 r (room)s
  1798. X13 r (for)s
  1799. X14 r (improvements)s
  1800. X14 r (in)s
  1801. X14 r (these)s
  1802. X14 r (protocols,)s
  1803. X14 r (as)s
  1804. X13 r (suggested)s
  1805. X14 r (by)s
  1806. X14 r (WWFTP[6].)s
  1807. X183 3005 p (W)s
  1808. X-1 r (ith)s
  1809. X8 r (this)s
  1810. X9 r (protocol)s
  1811. X10 r (architecture,)s
  1812. X10 r (design)s
  1813. X9 r (and)s
  1814. X9 r (implementation)s
  1815. X9 r (of)s
  1816. X10 r (an)s
  1817. X9 r (UIP)s
  1818. X9 r (and)s
  1819. X9 r (an)s
  1820. X10 r (R)s
  1821. X-3 r (TP)s
  1822. X9 r (is)s
  1823. X9 r (in)s
  1824. X9 r (progress.)s
  1825. X17 r (WWFTP)s
  1826. X100 3071 p (is)s
  1827. X12 r (an)s
  1828. X11 r (implementation)s
  1829. X12 r (of)s
  1830. X11 r (R)s
  1831. X-2 r (TP)s
  1832. X-6 r (,)s
  1833. X10 r (which)s
  1834. X12 r (is)s
  1835. X11 r (primarily)s
  1836. X12 r (aimed)s
  1837. X11 r (at)s
  1838. X12 r (seamless)s
  1839. X11 r (integration)s
  1840. X12 r (of)s
  1841. X11 r (distributed)s
  1842. X12 r (\256le)s
  1843. X11 r (system)s
  1844. X12 r (and)s
  1845. X100 3137 p (the)s
  1846. X14 r (Internet)s
  1847. X13 r (ftp)s
  1848. X14 r (archives.)s
  1849. X18 r (WWFTP)s
  1850. X14 r (supports)s
  1851. X14 r (ef\256cient)s
  1852. X12 r (\256le)s
  1853. X14 r (transfer)s
  1854. X14 r (over)s
  1855. X13 r (high-speed)s
  1856. X14 r (networks)s
  1857. X13 r (and)s
  1858. X14 r (long-delay)s
  1859. X100 3204 p (communication)s
  1860. X19 r (lines,)s
  1861. X20 r (archive)s
  1862. X19 r (replication)s
  1863. X18 r (and)s
  1864. X19 r (interaction)s
  1865. X19 r (with)s
  1866. X19 r (multi-stage)s
  1867. X19 r (\256le)s
  1868. X18 r (transfer)s
  1869. X19 r (software.)s
  1870. X34 r (Design)s
  1871. X100 3270 p (and)s
  1872. X14 r (implementation)s
  1873. X13 r (of)s
  1874. X14 r (multi-threaded)s
  1875. X13 r (WWFTP)s
  1876. X14 r (server)s
  1877. X13 r (is)s
  1878. X14 r (in)s
  1879. X14 r (progress.)s
  1880. X18 r (CS)s
  1881. X14 r (will)s
  1882. X13 r (support)s
  1883. X14 r (WWFTP)s
  1884. X13 r (in)s
  1885. X14 r (the)s
  1886. X13 r (next)s
  1887. X100 3337 p (major)s
  1888. X14 r (release.)s
  1889. X183 3403 p (WWUIP)s
  1890. X14 r (is)s
  1891. X15 r (an)s
  1892. X14 r (implementation)s
  1893. X14 r (of)s
  1894. X15 r (UIP)s
  1895. X-6 r (,)s
  1896. X14 r (which)s
  1897. X14 r (complements)s
  1898. X14 r (NFS)s
  1899. X15 r (by)s
  1900. X14 r (providing)s
  1901. X14 r (support)s
  1902. X15 r (for)s
  1903. X14 r (different)s
  1904. X13 r (be-)s
  1905. X100 3470 p (havior)s
  1906. X14 r (resulting)s
  1907. X13 r (from)s
  1908. X14 r (the)s
  1909. X13 r (characteristics)s
  1910. X14 r (of)s
  1911. X14 r (underlying)s
  1912. X13 r (services)s
  1913. X14 r (\(e.g.,)s
  1914. X13 r (ftp)s
  1915. X14 r (archives\))s
  1916. X14 r (and)s
  1917. X13 r (by)s
  1918. X14 r (providing)s
  1919. X13 r (opera-)s
  1920. X100 3536 p (tions)s
  1921. X13 r (for)s
  1922. X12 r (newly)s
  1923. X13 r (introduced)s
  1924. X13 r (objects)s
  1925. X12 r (\(e.g.,)s
  1926. X13 r (access)s
  1927. X13 r (policy)s
  1928. X12 r (and)s
  1929. X13 r (volume\).)s
  1930. X18 r (WWUIP)s
  1931. X13 r (server)s
  1932. X12 r (has)s
  1933. X13 r (been)s
  1934. X13 r (implemented)s
  1935. X100 3602 p (in)s
  1936. X11 r (CS,)s
  1937. X11 r (and)s
  1938. X12 r (has)s
  1939. X11 r (been)s
  1940. X11 r (experimented)s
  1941. X11 r (and)s
  1942. X11 r (used)s
  1943. X12 r (by)s
  1944. X11 r (several)s
  1945. X11 r (WWUIP)s
  1946. X11 r (clients.)s
  1947. X18 r (The)s
  1948. X11 r (development)s
  1949. X11 r (of)s
  1950. X12 r (WWUIP)s
  1951. X11 r (client)s
  1952. X100 3669 p (library)s
  1953. X13 r (is)s
  1954. X14 r (in)s
  1955. X14 r (progress,)s
  1956. X13 r (in)s
  1957. X14 r (parallel)s
  1958. X13 r (with)s
  1959. X14 r (adaptation)s
  1960. X13 r (of)s
  1961. X14 r (usual)s
  1962. X13 r (UNIX)s
  1963. X14 r (commands)s
  1964. X13 r (such)s
  1965. X14 r (as)s
  1966. Xf84 SF
  1967. X13 r (ls)s
  1968. Xf80 SF
  1969. X(,)s
  1970. Xf84 SF
  1971. X14 r (more)s
  1972. Xf80 SF
  1973. X13 r (and)s
  1974. Xf84 SF
  1975. X14 r (tar)s
  1976. Xf80 SF
  1977. X(.)s
  1978. X18 r (A)s
  1979. X100 3735 p (graphical)s
  1980. X14 r (\256lesystem)s
  1981. X14 r (browser)s
  1982. X14 r (for)s
  1983. X13 r (CS)s
  1984. X14 r (has)s
  1985. X14 r (been)s
  1986. X14 r (developed)s
  1987. X14 r (using)s
  1988. X14 r (Tk[7].)s
  1989. X1261 3946 p (6)s
  1990. XEP
  1991. X
  1992. X%%Page: 7 7
  1993. XBP
  1994. X479 260 p 1.000 @beginspecial
  1995. X@epsf
  1996. X0.800000 @vscale
  1997. X0.800000 @hscale
  1998. X79.000000 532.000000 437.000000 645.000000 @bbox
  1999. X@setspecial
  2000. X%%BeginDocument: proto_arch.eps
  2001. X%!PS-Adobe-2.0 EPSF-1.2
  2002. X%%DocumentFonts: Helvetica
  2003. X%%BoundingBox: 79 532 437 645
  2004. X%%EndComments
  2005. X
  2006. X50 dict begin
  2007. X
  2008. X/arrowHeight 8 def
  2009. X/arrowWidth 4 def
  2010. X/none null def
  2011. X/numGraphicParameters 17 def
  2012. X/stringLimit 65535 def
  2013. X
  2014. X/Begin {
  2015. Xsave
  2016. XnumGraphicParameters dict begin
  2017. X} def
  2018. X
  2019. X/End {
  2020. Xend
  2021. Xrestore
  2022. X} def
  2023. X
  2024. X/SetB {
  2025. Xdup type /nulltype eq {
  2026. Xpop
  2027. Xfalse /brushRightArrow idef
  2028. Xfalse /brushLeftArrow idef
  2029. Xtrue /brushNone idef
  2030. X} {
  2031. X/brushDashOffset idef
  2032. X/brushDashArray idef
  2033. X0 ne /brushRightArrow idef
  2034. X0 ne /brushLeftArrow idef
  2035. X/brushWidth idef
  2036. Xfalse /brushNone idef
  2037. X} ifelse
  2038. X} def
  2039. X
  2040. X/SetCFg {
  2041. X/fgblue idef
  2042. X/fggreen idef
  2043. X/fgred idef
  2044. X} def
  2045. X
  2046. X/SetCBg {
  2047. X/bgblue idef
  2048. X/bggreen idef
  2049. X/bgred idef
  2050. X} def
  2051. X
  2052. X/SetF {
  2053. X/printSize idef
  2054. X/printFont idef
  2055. X} def
  2056. X
  2057. X/SetP {
  2058. Xdup type /nulltype eq {
  2059. Xpop true /patternNone idef
  2060. X} {
  2061. X/patternGrayLevel idef
  2062. XpatternGrayLevel -1 eq {
  2063. X/patternString idef
  2064. X} if
  2065. Xfalse /patternNone idef
  2066. X} ifelse
  2067. X} def
  2068. X
  2069. X/BSpl {
  2070. X0 begin
  2071. Xstorexyn
  2072. Xnewpath
  2073. Xn 1 gt {
  2074. X0 0 0 0 0 0 1 1 true subspline
  2075. Xn 2 gt {
  2076. X0 0 0 0 1 1 2 2 false subspline
  2077. X1 1 n 3 sub {
  2078. X/i exch def
  2079. Xi 1 sub dup i dup i 1 add dup i 2 add dup false subspline
  2080. X} for
  2081. Xn 3 sub dup n 2 sub dup n 1 sub dup 2 copy false subspline
  2082. X} if
  2083. Xn 2 sub dup n 1 sub dup 2 copy 2 copy false subspline
  2084. XpatternNone not brushLeftArrow not brushRightArrow not and and { ifill } if
  2085. XbrushNone not { istroke } if
  2086. X0 0 1 1 leftarrow
  2087. Xn 2 sub dup n 1 sub dup rightarrow
  2088. X} if
  2089. Xend
  2090. X} dup 0 4 dict put def
  2091. X
  2092. X/Circ {
  2093. Xnewpath
  2094. X0 360 arc
  2095. XpatternNone not { ifill } if
  2096. XbrushNone not { istroke } if
  2097. X} def
  2098. X
  2099. X/CBSpl {
  2100. X0 begin
  2101. Xdup 2 gt {
  2102. Xstorexyn
  2103. Xnewpath
  2104. Xn 1 sub dup 0 0 1 1 2 2 true subspline
  2105. X1 1 n 3 sub {
  2106. X/i exch def
  2107. Xi 1 sub dup i dup i 1 add dup i 2 add dup false subspline
  2108. X} for
  2109. Xn 3 sub dup n 2 sub dup n 1 sub dup 0 0 false subspline
  2110. Xn 2 sub dup n 1 sub dup 0 0 1 1 false subspline
  2111. XpatternNone not { ifill } if
  2112. XbrushNone not { istroke } if
  2113. X} {
  2114. XPoly
  2115. X} ifelse
  2116. Xend
  2117. X} dup 0 4 dict put def
  2118. X
  2119. X
  2120. X/RRect { CBSpl } def
  2121. X
  2122. X/Elli {
  2123. X0 begin
  2124. Xnewpath
  2125. X4 2 roll
  2126. Xtranslate
  2127. Xscale
  2128. X0 0 1 0 360 arc
  2129. XpatternNone not { ifill } if
  2130. XbrushNone not { istroke } if
  2131. Xend
  2132. X} dup 0 1 dict put def
  2133. X
  2134. X/Line {
  2135. X0 begin
  2136. X2 storexyn
  2137. Xnewpath
  2138. Xx 0 get y 0 get moveto
  2139. Xx 1 get y 1 get lineto
  2140. XbrushNone not { istroke } if
  2141. X0 0 1 1 leftarrow
  2142. X0 0 1 1 rightarrow
  2143. Xend
  2144. X} dup 0 4 dict put def
  2145. X
  2146. X/MLine {
  2147. X0 begin
  2148. Xstorexyn
  2149. Xnewpath
  2150. Xn 1 gt {
  2151. Xx 0 get y 0 get moveto
  2152. X1 1 n 1 sub {
  2153. X/i exch def
  2154. Xx i get y i get lineto
  2155. X} for
  2156. XpatternNone not brushLeftArrow not brushRightArrow not and and { ifill } if
  2157. XbrushNone not { istroke } if
  2158. X0 0 1 1 leftarrow
  2159. Xn 2 sub dup n 1 sub dup rightarrow
  2160. X} if
  2161. Xend
  2162. X} dup 0 4 dict put def
  2163. X
  2164. X/Poly {
  2165. X3 1 roll
  2166. Xnewpath
  2167. Xmoveto
  2168. X-1 add
  2169. X{ lineto } repeat
  2170. Xclosepath
  2171. XpatternNone not { ifill } if
  2172. XbrushNone not { istroke } if
  2173. X} def
  2174. X
  2175. X/Rect {
  2176. X0 begin
  2177. X/t exch def
  2178. X/r exch def
  2179. X/b exch def
  2180. X/l exch def
  2181. Xnewpath
  2182. Xl b moveto
  2183. Xl t lineto
  2184. Xr t lineto
  2185. Xr b lineto
  2186. Xclosepath
  2187. XpatternNone not { ifill } if
  2188. XbrushNone not { istroke } if
  2189. Xend
  2190. X} dup 0 4 dict put def
  2191. X
  2192. X/WhiteBg 1 def
  2193. X/HollowBg 0 def
  2194. X/Text { ishow } def
  2195. X
  2196. X/idef {
  2197. Xdup where { pop pop pop } { exch def } ifelse
  2198. X} def
  2199. X
  2200. X/ifill {
  2201. X0 begin
  2202. Xgsave
  2203. XpatternGrayLevel -1 ne {
  2204. Xfgred bgred fgred sub patternGrayLevel mul add
  2205. Xfggreen bggreen fggreen sub patternGrayLevel mul add
  2206. Xfgblue bgblue fgblue sub patternGrayLevel mul add setrgbcolor
  2207. Xeofill
  2208. X} {
  2209. Xeoclip
  2210. XoriginalCTM setmatrix
  2211. Xpathbbox /t exch def /r exch def /b exch def /l exch def
  2212. X/w r l sub ceiling cvi def
  2213. X/h t b sub ceiling cvi def
  2214. X/imageByteWidth w 8 div ceiling cvi def
  2215. X/imageHeight h def
  2216. Xbgred bggreen bgblue setrgbcolor
  2217. Xeofill
  2218. Xfgred fggreen fgblue setrgbcolor
  2219. Xw 0 gt h 0 gt and {
  2220. Xl b translate w h scale
  2221. Xw h true [w 0 0 h neg 0 h] { patternproc } imagemask
  2222. X} if
  2223. X} ifelse
  2224. Xgrestore
  2225. Xend
  2226. X} dup 0 8 dict put def
  2227. X
  2228. X/istroke {
  2229. Xgsave
  2230. XbrushDashOffset -1 eq {
  2231. X[] 0 setdash
  2232. X1 setgray
  2233. X} {
  2234. XbrushDashArray brushDashOffset setdash
  2235. Xfgred fggreen fgblue setrgbcolor
  2236. X} ifelse
  2237. XbrushWidth setlinewidth
  2238. XoriginalCTM setmatrix
  2239. Xstroke
  2240. Xgrestore
  2241. X} def
  2242. X
  2243. X/xdescender {
  2244. Xbegin 0
  2245. XFontType 0 eq
  2246. X{ FDepVector dup length 1 sub get xdescender }
  2247. X{ [FontBBox] 1 get } ifelse
  2248. XFontMatrix transform exch pop end
  2249. X} def
  2250. X/ishow {
  2251. X0 begin
  2252. Xgsave
  2253. Xfgred fggreen fgblue setrgbcolor
  2254. XWhiteBg eq /drawBg exch def
  2255. X/fontDict printFont findfont printSize scalefont dup setfont def
  2256. X/descender fontDict xdescender def
  2257. X/vertoffset 0 descender sub printSize sub printFont /Courier ne
  2258. XprintFont /Courier-Bold ne and { 1 add } if def {
  2259. XdrawBg {
  2260. Xnewpath 0 vertoffset descender add moveto
  2261. Xdup stringwidth pop dup 0 rlineto
  2262. X0 printSize rlineto 0 exch sub 0 rlineto
  2263. Xclosepath currentgray 1 setgray fill    setgray } if
  2264. X0 vertoffset moveto show
  2265. X/vertoffset vertoffset printSize sub def
  2266. X} forall
  2267. Xgrestore
  2268. Xend
  2269. X} dup 0 4 dict put def
  2270. X
  2271. X/patternproc {
  2272. X0 begin
  2273. X/patternByteLength patternString length def
  2274. X/patternHeight patternByteLength 8 mul sqrt cvi def
  2275. X/patternWidth patternHeight def
  2276. X/patternByteWidth patternWidth 8 idiv def
  2277. X/imageByteMaxLength imageByteWidth imageHeight mul
  2278. XstringLimit patternByteWidth sub min def
  2279. X/imageMaxHeight imageByteMaxLength imageByteWidth idiv patternHeight idiv
  2280. XpatternHeight mul patternHeight max def
  2281. X/imageHeight imageHeight imageMaxHeight sub store
  2282. X/imageString imageByteWidth imageMaxHeight mul patternByteWidth add string def
  2283. X0 1 imageMaxHeight 1 sub {
  2284. X/y exch def
  2285. X/patternRow y patternByteWidth mul patternByteLength mod def
  2286. X/patternRowString patternString patternRow patternByteWidth getinterval def
  2287. X/imageRow y imageByteWidth mul def
  2288. X0 patternByteWidth imageByteWidth 1 sub {
  2289. X/x exch def
  2290. XimageString imageRow x add patternRowString putinterval
  2291. X} for
  2292. X} for
  2293. XimageString
  2294. Xend
  2295. X} dup 0 12 dict put def
  2296. X
  2297. X/min {
  2298. Xdup 3 2 roll dup 4 3 roll lt { exch } if pop
  2299. X} def
  2300. X
  2301. X/max {
  2302. Xdup 3 2 roll dup 4 3 roll gt { exch } if pop
  2303. X} def
  2304. X
  2305. X/arrowhead {
  2306. X0 begin
  2307. Xtransform originalCTM itransform
  2308. X/taily exch def
  2309. X/tailx exch def
  2310. Xtransform originalCTM itransform
  2311. X/tipy exch def
  2312. X/tipx exch def
  2313. X/dy tipy taily sub def
  2314. X/dx tipx tailx sub def
  2315. X/angle dx 0 ne dy 0 ne or { dy dx atan } { 90 } ifelse def
  2316. Xgsave
  2317. XoriginalCTM setmatrix
  2318. Xtipx tipy translate
  2319. Xangle rotate
  2320. Xnewpath
  2321. X0 0 moveto
  2322. XarrowHeight neg arrowWidth 2 div lineto
  2323. XarrowHeight neg arrowWidth 2 div neg lineto
  2324. Xclosepath
  2325. XpatternNone not {
  2326. XoriginalCTM setmatrix
  2327. X/padtip arrowHeight 2 exp 0.25 arrowWidth 2 exp mul add sqrt brushWidth mul
  2328. XarrowWidth div def
  2329. X/padtail brushWidth 2 div def
  2330. Xtipx tipy translate
  2331. Xangle rotate
  2332. Xpadtip 0 translate
  2333. XarrowHeight padtip add padtail add arrowHeight div dup scale
  2334. Xarrowheadpath
  2335. Xifill
  2336. X} if
  2337. XbrushNone not {
  2338. XoriginalCTM setmatrix
  2339. Xtipx tipy translate
  2340. Xangle rotate
  2341. Xarrowheadpath
  2342. Xistroke
  2343. X} if
  2344. Xgrestore
  2345. Xend
  2346. X} dup 0 9 dict put def
  2347. X
  2348. X/arrowheadpath {
  2349. Xnewpath
  2350. X0 0 moveto
  2351. XarrowHeight neg arrowWidth 2 div lineto
  2352. XarrowHeight neg arrowWidth 2 div neg lineto
  2353. Xclosepath
  2354. X} def
  2355. X
  2356. X/leftarrow {
  2357. X0 begin
  2358. Xy exch get /taily exch def
  2359. Xx exch get /tailx exch def
  2360. Xy exch get /tipy exch def
  2361. Xx exch get /tipx exch def
  2362. XbrushLeftArrow { tipx tipy tailx taily arrowhead } if
  2363. Xend
  2364. X} dup 0 4 dict put def
  2365. X
  2366. X/rightarrow {
  2367. X0 begin
  2368. Xy exch get /tipy exch def
  2369. Xx exch get /tipx exch def
  2370. Xy exch get /taily exch def
  2371. Xx exch get /tailx exch def
  2372. XbrushRightArrow { tipx tipy tailx taily arrowhead } if
  2373. Xend
  2374. X} dup 0 4 dict put def
  2375. X
  2376. X/midpoint {
  2377. X0 begin
  2378. X/y1 exch def
  2379. X/x1 exch def
  2380. X/y0 exch def
  2381. X/x0 exch def
  2382. Xx0 x1 add 2 div
  2383. Xy0 y1 add 2 div
  2384. Xend
  2385. X} dup 0 4 dict put def
  2386. X
  2387. X/thirdpoint {
  2388. X0 begin
  2389. X/y1 exch def
  2390. X/x1 exch def
  2391. X/y0 exch def
  2392. X/x0 exch def
  2393. Xx0 2 mul x1 add 3 div
  2394. Xy0 2 mul y1 add 3 div
  2395. Xend
  2396. X} dup 0 4 dict put def
  2397. X
  2398. X/subspline {
  2399. X0 begin
  2400. X/movetoNeeded exch def
  2401. Xy exch get /y3 exch def
  2402. Xx exch get /x3 exch def
  2403. Xy exch get /y2 exch def
  2404. Xx exch get /x2 exch def
  2405. Xy exch get /y1 exch def
  2406. Xx exch get /x1 exch def
  2407. Xy exch get /y0 exch def
  2408. Xx exch get /x0 exch def
  2409. Xx1 y1 x2 y2 thirdpoint
  2410. X/p1y exch def
  2411. X/p1x exch def
  2412. Xx2 y2 x1 y1 thirdpoint
  2413. X/p2y exch def
  2414. X/p2x exch def
  2415. Xx1 y1 x0 y0 thirdpoint
  2416. Xp1x p1y midpoint
  2417. X/p0y exch def
  2418. X/p0x exch def
  2419. Xx2 y2 x3 y3 thirdpoint
  2420. Xp2x p2y midpoint
  2421. X/p3y exch def
  2422. X/p3x exch def
  2423. XmovetoNeeded { p0x p0y moveto } if
  2424. Xp1x p1y p2x p2y p3x p3y curveto
  2425. Xend
  2426. X} dup 0 17 dict put def
  2427. X
  2428. X/storexyn {
  2429. X/n exch def
  2430. X/y n array def
  2431. X/x n array def
  2432. Xn 1 sub -1 0 {
  2433. X/i exch def
  2434. Xy i 3 2 roll put
  2435. Xx i 3 2 roll put
  2436. X} for
  2437. X} def
  2438. X
  2439. X%%EndProlog
  2440. X
  2441. X%I Idraw 9 Grid 8 
  2442. X
  2443. X
  2444. XBegin
  2445. X%I b u
  2446. X%I cfg u
  2447. X%I cbg u
  2448. X%I f u
  2449. X%I k u
  2450. X%I p u
  2451. X%I t
  2452. X[ .8 0 0 .8 0 0 ] concat
  2453. X/originalCTM matrix currentmatrix def
  2454. X
  2455. XBegin %I Pict
  2456. X%I b u
  2457. X%I cfg u
  2458. X%I cbg u
  2459. X%I f u
  2460. X%I k u
  2461. X%I p u
  2462. X%I t
  2463. X[ 1 0 0 1 -3 11 ] concat
  2464. X
  2465. XBegin %I Elli
  2466. X%I b 65535
  2467. X1 0 0 [] 0 SetB
  2468. X%I cfg Black
  2469. X0 0 0 SetCFg
  2470. X%I cbg White
  2471. X1 1 1 SetCBg
  2472. X%I p
  2473. X1 SetP
  2474. X%I t
  2475. X[ 1 0 0 1 100.5 286.5 ] concat
  2476. X%I
  2477. X222 440 28 20 Elli
  2478. XEnd
  2479. X
  2480. XBegin %I Text
  2481. X%I cfg Black
  2482. X0 0 0 SetCFg
  2483. X%I f *-helvetica-medium-r-*-120-*
  2484. X/Helvetica 12 SetF
  2485. X%I t
  2486. X[ 1 0 0 1 305 735 ] concat
  2487. X%I
  2488. X[
  2489. X(Cluster)
  2490. X(Server)
  2491. X] WhiteBg Text
  2492. XEnd
  2493. X
  2494. XEnd %I eop
  2495. X
  2496. XBegin %I Pict
  2497. X%I b u
  2498. X%I cfg u
  2499. X%I cbg u
  2500. X%I f u
  2501. X%I k u
  2502. X%I p u
  2503. X%I t u
  2504. X
  2505. XBegin %I Elli
  2506. X%I b 65535
  2507. X1 0 0 [] 0 SetB
  2508. X%I cfg Black
  2509. X0 0 0 SetCFg
  2510. X%I cbg White
  2511. X1 1 1 SetCBg
  2512. X%I p
  2513. X1 SetP
  2514. X%I t
  2515. X[ 1 0 0 1 104.5 284.5 ] concat
  2516. X%I
  2517. X365 505 76 16 Elli
  2518. XEnd
  2519. X
  2520. XBegin %I Text
  2521. X%I cfg Black
  2522. X0 0 0 SetCFg
  2523. X%I f *-helvetica-medium-r-*-120-*
  2524. X/Helvetica 12 SetF
  2525. X%I t
  2526. X[ 1 0 0 1 403.5 793 ] concat
  2527. X%I
  2528. X[
  2529. X(Volume location server)
  2530. X] WhiteBg Text
  2531. XEnd
  2532. X
  2533. XEnd %I eop
  2534. X
  2535. XBegin %I Pict
  2536. X%I b u
  2537. X%I cfg u
  2538. X%I cbg u
  2539. X%I f u
  2540. X%I k u
  2541. X%I p u
  2542. X%I t u
  2543. X
  2544. XBegin %I Elli
  2545. X%I b 65535
  2546. X1 0 0 [] 0 SetB
  2547. X%I cfg Black
  2548. X0 0 0 SetCFg
  2549. X%I cbg White
  2550. X1 1 1 SetCBg
  2551. X%I p
  2552. X1 SetP
  2553. X%I t
  2554. X[ 1 0 0 1 104.5 233.5 ] concat
  2555. X%I
  2556. X365 505 76 16 Elli
  2557. XEnd
  2558. X
  2559. XBegin %I Text
  2560. X%I cfg Black
  2561. X0 0 0 SetCFg
  2562. X%I f *-helvetica-medium-r-*-120-*
  2563. X/Helvetica 12 SetF
  2564. X%I t
  2565. X[ 1 0 0 1 403.5 742 ] concat
  2566. X%I
  2567. X[
  2568. X(File server)
  2569. X] WhiteBg Text
  2570. XEnd
  2571. X
  2572. XEnd %I eop
  2573. X
  2574. XBegin %I Pict
  2575. X%I b u
  2576. X%I cfg u
  2577. X%I cbg u
  2578. X%I f u
  2579. X%I k u
  2580. X%I p u
  2581. X%I t u
  2582. X
  2583. XBegin %I Elli
  2584. X%I b 65535
  2585. X1 0 0 [] 0 SetB
  2586. X%I cfg Black
  2587. X0 0 0 SetCFg
  2588. X%I cbg White
  2589. X1 1 1 SetCBg
  2590. X%I p
  2591. X1 SetP
  2592. X%I t
  2593. X[ 1 0 0 1 104.5 177.5 ] concat
  2594. X%I
  2595. X365 505 76 16 Elli
  2596. XEnd
  2597. X
  2598. XBegin %I Text
  2599. X%I cfg Black
  2600. X0 0 0 SetCFg
  2601. X%I f *-helvetica-medium-r-*-120-*
  2602. X/Helvetica 12 SetF
  2603. X%I t
  2604. X[ 1 0 0 1 403.5 686 ] concat
  2605. X%I
  2606. X[
  2607. X(Volume statistics server)
  2608. X] WhiteBg Text
  2609. XEnd
  2610. X
  2611. XEnd %I eop
  2612. X
  2613. XBegin %I Pict
  2614. X%I b u
  2615. X%I cfg u
  2616. X%I cbg u
  2617. X%I f u
  2618. X%I k u
  2619. X%I p u
  2620. X%I t
  2621. X[ 1 0 0 1 -25.5 19.5 ] concat
  2622. X
  2623. XBegin %I Rect
  2624. X%I b 65535
  2625. X1 0 0 [] 0 SetB
  2626. X%I cfg Black
  2627. X0 0 0 SetCFg
  2628. X%I cbg White
  2629. X1 1 1 SetCBg
  2630. X%I p
  2631. X1 SetP
  2632. X%I t
  2633. X[ 1 0 0 1 102 188 ] concat
  2634. X%I
  2635. X24 493 144 563 Rect
  2636. XEnd
  2637. X
  2638. XBegin %I Text
  2639. X%I cfg Black
  2640. X0 0 0 SetCFg
  2641. X%I f *-helvetica-medium-r-*-120-*
  2642. X/Helvetica 12 SetF
  2643. X%I t
  2644. X[ 1 0 0 1 137 727 ] concat
  2645. X%I
  2646. X[
  2647. X(Client)
  2648. X(programs)
  2649. X] WhiteBg Text
  2650. XEnd
  2651. X
  2652. XBegin %I Text
  2653. X%I cfg Black
  2654. X0 0 0 SetCFg
  2655. X%I f *-helvetica-medium-r-*-120-*
  2656. X/Helvetica 12 SetF
  2657. X%I t
  2658. X[ 1 0 0 1 198 742 ] concat
  2659. X%I
  2660. X[
  2661. X(Library)
  2662. X] WhiteBg Text
  2663. XEnd
  2664. X
  2665. XBegin %I Text
  2666. X%I cfg Black
  2667. X0 0 0 SetCFg
  2668. X%I f *-helvetica-medium-r-*-120-*
  2669. X/Helvetica 12 SetF
  2670. X%I t
  2671. X[ 1 0 0 1 198 719.5 ] concat
  2672. X%I
  2673. X[
  2674. X(Kernel)
  2675. X] WhiteBg Text
  2676. XEnd
  2677. X
  2678. XBegin %I Text
  2679. X%I cfg Black
  2680. X0 0 0 SetCFg
  2681. X%I f *-helvetica-medium-r-*-120-*
  2682. X/Helvetica 12 SetF
  2683. X%I t
  2684. X[ 1 0 0 1 198 697.5 ] concat
  2685. X%I
  2686. X[
  2687. X(Library)
  2688. X] WhiteBg Text
  2689. XEnd
  2690. X
  2691. XBegin %I Line
  2692. X%I b 65535
  2693. X1 0 0 [] 0 SetB
  2694. X%I cfg Black
  2695. X0 0 0 SetCFg
  2696. X%I cbg White
  2697. X1 1 1 SetCBg
  2698. X%I p
  2699. X< ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff
  2700. X  ffffffff > -1 SetP
  2701. X%I t
  2702. X[ .5 0 0 .5 159.5 590.5 ] concat
  2703. X%I
  2704. X65 321 65 181 Line
  2705. XEnd
  2706. X
  2707. XBegin %I Line
  2708. X%I b 65535
  2709. X1 0 0 [] 0 SetB
  2710. X%I cfg Black
  2711. X0 0 0 SetCFg
  2712. X%I cbg White
  2713. X1 1 1 SetCBg
  2714. X%I p
  2715. X< ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff
  2716. X  ffffffff > -1 SetP
  2717. X%I t
  2718. X[ .5 0 0 .5 160 591 ] concat
  2719. X%I
  2720. X65 274 171 274 Line
  2721. XEnd
  2722. X
  2723. XBegin %I Line
  2724. X%I b 65535
  2725. X1 0 0 [] 0 SetB
  2726. X%I cfg Black
  2727. X0 0 0 SetCFg
  2728. X%I cbg White
  2729. X1 1 1 SetCBg
  2730. X%I p
  2731. X< ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff
  2732. X  ffffffff > -1 SetP
  2733. X%I t
  2734. X[ .5 0 0 .5 160 567 ] concat
  2735. X%I
  2736. X65 274 171 274 Line
  2737. XEnd
  2738. X
  2739. XEnd %I eop
  2740. X
  2741. XBegin %I Text
  2742. X%I cfg Black
  2743. X0 0 0 SetCFg
  2744. X%I f *-helvetica-medium-r-*-120-*
  2745. X/Helvetica 12 SetF
  2746. X%I t
  2747. X[ 1 0 0 1 252 767 ] concat
  2748. X%I
  2749. X[
  2750. X(UIP)
  2751. X] WhiteBg Text
  2752. XEnd
  2753. X
  2754. XBegin %I Text
  2755. X%I cfg Black
  2756. X0 0 0 SetCFg
  2757. X%I f *-helvetica-medium-r-*-120-*
  2758. X/Helvetica 12 SetF
  2759. X%I t
  2760. X[ 1 0 0 1 252 748.5 ] concat
  2761. X%I
  2762. X[
  2763. X(RAP)
  2764. X] WhiteBg Text
  2765. XEnd
  2766. X
  2767. XBegin %I Text
  2768. X%I cfg Black
  2769. X0 0 0 SetCFg
  2770. X%I f *-helvetica-medium-r-*-120-*
  2771. X/Helvetica 12 SetF
  2772. X%I t
  2773. X[ 1 0 0 1 252 731 ] concat
  2774. X%I
  2775. X[
  2776. X(ROP)
  2777. X] WhiteBg Text
  2778. XEnd
  2779. X
  2780. XBegin %I Text
  2781. X%I cfg Black
  2782. X0 0 0 SetCFg
  2783. X%I f *-helvetica-medium-r-*-120-*
  2784. X/Helvetica 12 SetF
  2785. X%I t
  2786. X[ 1 0 0 1 362 715.5 ] concat
  2787. X%I
  2788. X[
  2789. X(ROP)
  2790. X] WhiteBg Text
  2791. XEnd
  2792. X
  2793. XBegin %I Text
  2794. X%I cfg Black
  2795. X0 0 0 SetCFg
  2796. X%I f *-helvetica-medium-r-*-120-*
  2797. X/Helvetica 12 SetF
  2798. X%I t
  2799. X[ 1 0 0 1 362 751.5 ] concat
  2800. X%I
  2801. X[
  2802. X(RTP)
  2803. X] WhiteBg Text
  2804. XEnd
  2805. X
  2806. XBegin %I Text
  2807. X%I cfg Black
  2808. X0 0 0 SetCFg
  2809. X%I f *-helvetica-medium-r-*-120-*
  2810. X/Helvetica 12 SetF
  2811. X%I t
  2812. X[ 1 0 0 1 362 791.5 ] concat
  2813. X%I
  2814. X[
  2815. X(RQP)
  2816. X] WhiteBg Text
  2817. XEnd
  2818. X
  2819. XBegin %I Line
  2820. X%I b 65535
  2821. X1 0 0 [] 0 SetB
  2822. X%I cfg Black
  2823. X0 0 0 SetCFg
  2824. X%I cbg White
  2825. X1 1 1 SetCBg
  2826. X%I p
  2827. X< ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff
  2828. X  ffffffff > -1 SetP
  2829. X%I t
  2830. X[ 1 0 0 1 177 387 ] concat
  2831. X%I
  2832. X215 398 164 367 Line
  2833. XEnd
  2834. X
  2835. XBegin %I Line
  2836. X%I b 65535
  2837. X1 0 0 [] 0 SetB
  2838. X%I cfg Black
  2839. X0 0 0 SetCFg
  2840. X%I cbg White
  2841. X1 1 1 SetCBg
  2842. X%I p
  2843. X< ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff
  2844. X  ffffffff > -1 SetP
  2845. X%I t
  2846. X[ 1 0 0 1 177 387 ] concat
  2847. X%I
  2848. X173 351 215 351 Line
  2849. XEnd
  2850. X
  2851. XBegin %I Line
  2852. X%I b 65535
  2853. X1 0 0 [] 0 SetB
  2854. X%I cfg Black
  2855. X0 0 0 SetCFg
  2856. X%I cbg White
  2857. X1 1 1 SetCBg
  2858. X%I p
  2859. X< ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff
  2860. X  ffffffff > -1 SetP
  2861. X%I t
  2862. X[ 1 0 0 1 177 387 ] concat
  2863. X%I
  2864. X164 334 213 299 Line
  2865. XEnd
  2866. X
  2867. XBegin %I Line
  2868. X%I b 65535
  2869. X1 0 0 [] 0 SetB
  2870. X%I cfg Black
  2871. X0 0 0 SetCFg
  2872. X%I cbg White
  2873. X1 1 1 SetCBg
  2874. X%I p
  2875. X< ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff
  2876. X  ffffffff > -1 SetP
  2877. X%I t
  2878. X[ .5 0 0 .5 79.5 553.5 ] concat
  2879. X%I
  2880. X421 369 286 369 Line
  2881. XEnd
  2882. X
  2883. XBegin %I Line
  2884. X%I b 65535
  2885. X1 0 0 [] 0 SetB
  2886. X%I cfg Black
  2887. X0 0 0 SetCFg
  2888. X%I cbg White
  2889. X1 1 1 SetCBg
  2890. X%I p
  2891. X< ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff
  2892. X  ffffffff > -1 SetP
  2893. X%I t
  2894. X[ .5 0 0 .5 79.5 553.5 ] concat
  2895. X%I
  2896. X431 344 286 317 Line
  2897. XEnd
  2898. X
  2899. XBegin %I Line
  2900. X%I b 65535
  2901. X1 0 0 [] 0 SetB
  2902. X%I cfg Black
  2903. X0 0 0 SetCFg
  2904. X%I cbg White
  2905. X1 1 1 SetCBg
  2906. X%I p
  2907. X< ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff
  2908. X  ffffffff > -1 SetP
  2909. X%I t
  2910. X[ .5 0 0 .5 79.5 553.5 ] concat
  2911. X%I
  2912. X434 395 286 415 Line
  2913. XEnd
  2914. X
  2915. XEnd %I eop
  2916. X
  2917. Xshowpage
  2918. X
  2919. X
  2920. Xend
  2921. X%%EndDocument
  2922. X@endspecial
  2923. Xf80 SF
  2924. X100 939 p (Figure)s
  2925. X19 r (6:)s
  2926. Xf82 SF
  2927. X29 r (WWFS)s
  2928. X19 r (protocol)s
  2929. X19 r (architecture.)s
  2930. Xf80 SF
  2931. X35 r (Client-CS)s
  2932. X19 r (interaction)s
  2933. X19 r (is)s
  2934. X19 r (performed)s
  2935. X19 r (via)s
  2936. X19 r (user)s
  2937. X19 r (interface)s
  2938. X20 r (protocol)s
  2939. X100 1006 p (\(UIP\),)s
  2940. X16 r (resource)s
  2941. X15 r (access)s
  2942. X16 r (protocol)s
  2943. X16 r (\(RAP\))s
  2944. X15 r (and)s
  2945. X16 r (resource)s
  2946. X16 r (reorganize)s
  2947. X15 r (protocol)s
  2948. X15 r (\(ROP\).)s
  2949. X16 r (CS-CS,)s
  2950. X16 r (CS-\256leserver)s
  2951. X15 r (in-)s
  2952. X100 1072 p (teraction)s
  2953. X12 r (is)s
  2954. X12 r (performed)s
  2955. X12 r (via)s
  2956. X12 r (resource)s
  2957. X12 r (query)s
  2958. X12 r (protocol)s
  2959. X12 r (\(RQP\),)s
  2960. X12 r (resource)s
  2961. X12 r (transfer)s
  2962. X12 r (protocol)s
  2963. X12 r (\(R)s
  2964. X-2 r (TP\))s
  2965. X11 r (and)s
  2966. X12 r (ROP)s
  2967. X-6 r (.)s
  2968. X11 r (In)s
  2969. X12 r (the)s
  2970. X100 1139 p (current)s
  2971. X14 r (implementation,)s
  2972. X14 r (NFS)s
  2973. X14 r (is)s
  2974. X13 r (used)s
  2975. X14 r (as)s
  2976. X14 r (an)s
  2977. X14 r (RAP)s
  2978. X14 r (and)s
  2979. X14 r (FTP)s
  2980. X13 r (is)s
  2981. X14 r (used)s
  2982. X14 r (as)s
  2983. X14 r (an)s
  2984. X14 r (R)s
  2985. X-3 r (TP)s
  2986. X-6 r (.)s
  2987. X183 1317 p (Hopefully)s
  2988. X-3 r (,)s
  2989. X10 r (the)s
  2990. X9 r (development)s
  2991. X10 r (of)s
  2992. X9 r (WWUIP)s
  2993. X9 r (and)s
  2994. X10 r (WWFTP)s
  2995. X9 r (will)s
  2996. X10 r (help)s
  2997. X9 r (the)s
  2998. X9 r (seamless)s
  2999. X10 r (integration)s
  3000. X9 r (of)s
  3001. X10 r (client,)s
  3002. X10 r (CS)s
  3003. X9 r (and)s
  3004. X100 1383 p (\256le)s
  3005. X14 r (server)s
  3006. X-2 r (,)s
  3007. X13 r (that)s
  3008. X14 r (eventually)s
  3009. X14 r (will)s
  3010. X13 r (contribute)s
  3011. X14 r (to)s
  3012. X14 r (the)s
  3013. X14 r (integration)s
  3014. X13 r (of)s
  3015. X14 r (resource)s
  3016. X14 r (location,)s
  3017. X13 r (access)s
  3018. X14 r (and)s
  3019. X14 r (reorganization)s
  3020. X100 1450 p (mechanisms.)s
  3021. Xf99 SF
  3022. X100 1636 p (6)s
  3023. X80 r (Conclusion)s
  3024. Xf80 SF
  3025. X100 1759 p (The)s
  3026. X16 r (advent)s
  3027. X17 r (of)s
  3028. X16 r (a)s
  3029. X16 r (worldwide)s
  3030. X16 r (\256le)s
  3031. X17 r (system)s
  3032. X16 r (revealed)s
  3033. X16 r (that)s
  3034. X16 r (the)s
  3035. X17 r (hierarchical)s
  3036. X16 r (naming)s
  3037. X16 r (scheme)s
  3038. X17 r (cannot)s
  3039. X16 r (be)s
  3040. X16 r (straightly)s
  3041. X100 1826 p (expanded)s
  3042. X17 r (over)s
  3043. X16 r (the)s
  3044. X17 r (Internet,)s
  3045. X17 r (and)s
  3046. X16 r (that)s
  3047. X17 r (operational)s
  3048. X17 r (semantics)s
  3049. X16 r (of)s
  3050. X17 r (NFS)s
  3051. X16 r (no)s
  3052. X17 r (longer)s
  3053. X16 r (suf\256ces.)s
  3054. X26 r (For)s
  3055. X16 r (these)s
  3056. X17 r (reasons,)s
  3057. X100 1892 p (a)s
  3058. X18 r (novel)s
  3059. X17 r (and)s
  3060. X18 r (integrated)s
  3061. X18 r (information)s
  3062. X17 r (sharing)s
  3063. X18 r (system)s
  3064. X18 r (has)s
  3065. X18 r (been)s
  3066. X17 r (needed.)s
  3067. X30 r (WWFS)s
  3068. X18 r (can)s
  3069. X18 r (be)s
  3070. X17 r (a)s
  3071. X18 r (solution,)s
  3072. X19 r (with)s
  3073. X17 r (the)s
  3074. X100 1959 p (enhancement)s
  3075. X14 r (to)s
  3076. X14 r (the)s
  3077. X14 r (notion)s
  3078. X13 r (of)s
  3079. X14 r (volume)s
  3080. X14 r (and)s
  3081. X14 r (the)s
  3082. X14 r (extension)s
  3083. X14 r (to)s
  3084. X13 r (the)s
  3085. X14 r (protocol)s
  3086. X14 r (set.)s
  3087. Xf99 SF
  3088. X100 2145 p (7)s
  3089. X80 r (Acknowledgements)s
  3090. Xf80 SF
  3091. X100 2268 p (I)s
  3092. X13 r (would)s
  3093. X13 r (like)s
  3094. X13 r (to)s
  3095. X13 r (thank)s
  3096. X13 r (Akira)s
  3097. X13 r (Kato,)s
  3098. X13 r (Noritoshi)s
  3099. X13 r (Demizu,)s
  3100. X13 r (Hiroyuki)s
  3101. X13 r (Ohno,)s
  3102. X13 r (Kazumasa)s
  3103. X13 r (Utashiro,)s
  3104. X14 r (Motonori)s
  3105. X13 r (Naka-)s
  3106. X100 2335 p (mura,)s
  3107. X14 r (Shuji)s
  3108. X14 r (Ishii,)s
  3109. X14 r (Y)s
  3110. X-5 r (oshitaka)s
  3111. X13 r (T)s
  3112. X-3 r (okugawa)s
  3113. X13 r (and)s
  3114. X14 r (other)s
  3115. X14 r (alpha)s
  3116. X14 r (testers)s
  3117. X14 r (for)s
  3118. X14 r (their)s
  3119. X14 r (helpful)s
  3120. X14 r (comments,)s
  3121. X14 r (bug)s
  3122. X14 r (reports)s
  3123. X13 r (and)s
  3124. X100 2401 p (discussions)s
  3125. X9 r (on)s
  3126. X10 r (the)s
  3127. X9 r (WWFS)s
  3128. X9 r (mailing)s
  3129. X9 r (list.)s
  3130. X17 r (I)s
  3131. X10 r (would)s
  3132. X9 r (like)s
  3133. X9 r (to)s
  3134. X10 r (thank)s
  3135. X9 r (Suguru)s
  3136. X9 r (Y)s
  3137. X-4 r (amaguchi,)s
  3138. X9 r (Hideo)s
  3139. X9 r (Miyahara)s
  3140. X9 r (and)s
  3141. X10 r (WIDE)s
  3142. X100 2468 p (Project)s
  3143. X10 r (for)s
  3144. X11 r (their)s
  3145. X10 r (fundamental)s
  3146. X10 r (support)s
  3147. X11 r (for)s
  3148. X10 r (my)s
  3149. X10 r (research)s
  3150. X10 r (activities.)s
  3151. X18 r (I)s
  3152. X10 r (would)s
  3153. X10 r (also)s
  3154. X11 r (like)s
  3155. X10 r (to)s
  3156. X10 r (thank)s
  3157. X10 r (the)s
  3158. X11 r (administrators)s
  3159. X100 2534 p (of)s
  3160. X14 r (ftp)s
  3161. X14 r (archives)s
  3162. X14 r (in)s
  3163. X13 r (the)s
  3164. X14 r (Internet;)s
  3165. X14 r (especially)s
  3166. X14 r (Japanese)s
  3167. X14 r (archive)s
  3168. X14 r (administrators)s
  3169. X13 r (have)s
  3170. X14 r (been)s
  3171. X14 r (cooperative.)s
  3172. Xf99 SF
  3173. X100 2721 p (References)s
  3174. Xf80 SF
  3175. X100 2844 p ([1])s
  3176. X28 r (Sun)s
  3177. X14 r (Microsystems.)s
  3178. X19 r (NFS:)s
  3179. X14 r (Network)s
  3180. X14 r (File)s
  3181. X14 r (System)s
  3182. X14 r (protocol)s
  3183. X14 r (speci\256cation.)s
  3184. X20 r (RFC)s
  3185. X13 r (1094,)s
  3186. X14 r (March)s
  3187. X14 r (1989.)s
  3188. X100 2955 p ([2])s
  3189. X28 r (Y)s
  3190. X-5 r (ouki)s
  3191. X14 r (Kadobayashi.)s
  3192. Xf81 SF
  3193. X24 r (WWFS)s
  3194. X15 r (Refer)s
  3195. X-1 r (ence)s
  3196. X14 r (Manual)s
  3197. Xf80 SF
  3198. X(.)s
  3199. X23 r (WWFS)s
  3200. X15 r (Research)s
  3201. X15 r (Group,)s
  3202. X16 r (Department)s
  3203. X14 r (of)s
  3204. X15 r (Information)s
  3205. X192 3021 p (&)s
  3206. X14 r (Computer)s
  3207. X14 r (Sciences,)s
  3208. X14 r (Osaka)s
  3209. X14 r (University)s
  3210. X-3 r (,)s
  3211. X13 r (January)s
  3212. X14 r (1993.)s
  3213. X100 3132 p ([3])s
  3214. X28 r (Y)s
  3215. X-5 r (ouki)s
  3216. X14 r (Kadobayashi,)s
  3217. X15 r (Suguru)s
  3218. X15 r (Y)s
  3219. X-4 r (amaguchi,)s
  3220. X14 r (and)s
  3221. X15 r (Hideo)s
  3222. X15 r (Miyahara.)s
  3223. X24 r (WWFS:)s
  3224. X14 r (A)s
  3225. X15 r (framework)s
  3226. X15 r (for)s
  3227. X15 r (distributing)s
  3228. X192 3198 p (information)s
  3229. X15 r (in)s
  3230. X14 r (the)s
  3231. X15 r (Internet)s
  3232. X15 r (environment.)s
  3233. X23 r (In)s
  3234. Xf81 SF
  3235. X14 r (Pr)s
  3236. X-1 r (oceedings)s
  3237. X14 r (of)s
  3238. X14 r (the)s
  3239. X15 r (seventh)s
  3240. X15 r (IEEE)s
  3241. X14 r (Region)s
  3242. X15 r (10)s
  3243. X15 r (International)s
  3244. X192 3265 p (Confer)s
  3245. X-1 r (ence)s
  3246. X13 r (TENCON'92)s
  3247. Xf80 SF
  3248. X(,)s
  3249. X14 r (pages)s
  3250. X14 r (227\261231,)s
  3251. X14 r (November)s
  3252. X13 r (1992.)s
  3253. X100 3375 p ([4])s
  3254. X28 r (Brewster)s
  3255. X19 r (Kahle.)s
  3256. X42 r (Wide)s
  3257. X20 r (Area)s
  3258. X20 r (Information)s
  3259. X20 r (Servers)s
  3260. X19 r (concepts.)s
  3261. X42 r (T)s
  3262. X-3 r (echnical)s
  3263. X19 r (Report)s
  3264. X20 r (TMC-202,)s
  3265. X21 r (Thinking)s
  3266. X192 3442 p (Machines)s
  3267. X14 r (Corporation,)s
  3268. X14 r (November)s
  3269. X14 r (1989.)s
  3270. X100 3552 p ([5])s
  3271. X28 r (David)s
  3272. X12 r (K.)s
  3273. X13 r (Gifford,)s
  3274. X12 r (Pierre)s
  3275. X13 r (Jouvelot,)s
  3276. X13 r (Mark)s
  3277. X13 r (A.)s
  3278. X12 r (Sheldon,)s
  3279. X13 r (and)s
  3280. X13 r (James)s
  3281. X13 r (W)s
  3282. X-4 r (.)s
  3283. X11 r (O'T)s
  3284. X-3 r (oole,)s
  3285. X12 r (Jr)s
  3286. X-2 r (.)s
  3287. X17 r (Semantic)s
  3288. X13 r (\256le)s
  3289. X13 r (systems.)s
  3290. X192 3619 p (In)s
  3291. Xf81 SF
  3292. X15 r (Pr)s
  3293. X-1 r (oceedings)s
  3294. X13 r (of)s
  3295. X14 r (the)s
  3296. X15 r (Thirteenth)s
  3297. X14 r (ACM)s
  3298. X15 r (Symposium)s
  3299. X14 r (on)s
  3300. X14 r (Operating)s
  3301. X15 r (System)s
  3302. X14 r (Principles)s
  3303. Xf80 SF
  3304. X(,)s
  3305. X15 r (pages)s
  3306. X14 r (16\26125,)s
  3307. X15 r (Oc-)s
  3308. X192 3685 p (tober)s
  3309. X14 r (1991.)s
  3310. X1261 3946 p (7)s
  3311. XEP
  3312. X
  3313. X%%Page: 8 8
  3314. XBP
  3315. Xf80 SF
  3316. X100 260 p ([6])s
  3317. X28 r (Y)s
  3318. X-5 r (ouki)s
  3319. X13 r (Kadobayashi.)s
  3320. X21 r (WWFTP:)s
  3321. X14 r (A)s
  3322. X15 r (\256lesystem-oriented)s
  3323. X14 r (\256le)s
  3324. X14 r (transfer)s
  3325. X14 r (protocol.)s
  3326. X21 r (T)s
  3327. X-3 r (echnical)s
  3328. X13 r (Report)s
  3329. X14 r (WWFS-)s
  3330. X192 327 p (TR-93-1,)s
  3331. X16 r (WWFS)s
  3332. X16 r (Research)s
  3333. X16 r (Group,)s
  3334. X16 r (Department)s
  3335. X16 r (of)s
  3336. X16 r (Information)s
  3337. X16 r (&)s
  3338. X15 r (Computer)s
  3339. X16 r (Sciences,)s
  3340. X16 r (Osaka)s
  3341. X16 r (Univer-)s
  3342. X192 393 p (sity)s
  3343. X-2 r (,)s
  3344. X12 r (January)s
  3345. X14 r (1993.)s
  3346. X100 504 p ([7])s
  3347. X28 r (John)s
  3348. X17 r (K.)s
  3349. X17 r (Ousterhout.)s
  3350. X32 r (An)s
  3351. X17 r (X1)s
  3352. X-1 r (1)s
  3353. X17 r (toolkit)s
  3354. X17 r (based)s
  3355. X17 r (on)s
  3356. X17 r (the)s
  3357. X17 r (Tcl)s
  3358. X17 r (language.)s
  3359. X33 r (In)s
  3360. Xf81 SF
  3361. X17 r (Pr)s
  3362. X-1 r (occedings)s
  3363. X16 r (of)s
  3364. X17 r (the)s
  3365. X17 r (Winter)s
  3366. X18 r (1991)s
  3367. X192 570 p (USENIX)s
  3368. X14 r (Confer)s
  3369. X-1 r (ence)s
  3370. Xf80 SF
  3371. X(,)s
  3372. X13 r (Dallas,)s
  3373. X14 r (TX,)s
  3374. X14 r (1991.)s
  3375. X1261 3946 p (8)s
  3376. XEP
  3377. X%%Trailer
  3378. X%%Pages: 8
  3379. XEND
  3380. X%%EOF
  3381. END_OF_FILE
  3382.   if test 46189 -ne `wc -c <'doc/beyond.ps.B'`; then
  3383.     echo shar: \"'doc/beyond.ps.B'\" unpacked with wrong size!
  3384.   elif test -f 'doc/beyond.ps.A'; then
  3385.     echo shar: Combining  \"'doc/beyond.ps'\" \(92615 characters\)
  3386.     cat 'doc/beyond.ps.A' 'doc/beyond.ps.B' > 'doc/beyond.ps'
  3387.     if test 92615 -ne `wc -c <'doc/beyond.ps'`; then
  3388.       echo shar: \"'doc/beyond.ps'\" combined with wrong size!
  3389.     else
  3390.       rm doc/beyond.ps.A doc/beyond.ps.B
  3391.     fi
  3392.   fi
  3393.   # end of 'doc/beyond.ps.B'
  3394. fi
  3395. if test -f 'mosaic/Mosaic-2.1+wwfs.diff' -a "${1}" != "-c" ; then 
  3396.   echo shar: Will not clobber existing file \"'mosaic/Mosaic-2.1+wwfs.diff'\"
  3397. else
  3398.   echo shar: Extracting \"'mosaic/Mosaic-2.1+wwfs.diff'\" \(32538 characters\)
  3399.   sed "s/^X//" >'mosaic/Mosaic-2.1+wwfs.diff' <<'END_OF_FILE'
  3400. Xdiff -c -r -N Mosaic-2.1/Makefile Mosaic-2.1+wwfs/Makefile
  3401. X*** Mosaic-2.1/Makefile    Fri Dec 10 15:59:29 1993
  3402. X--- Mosaic-2.1+wwfs/Makefile    Tue Dec 21 10:09:38 1993
  3403. X***************
  3404. X*** 141,147 ****
  3405. X--- 141,153 ----
  3406. X  waislibdir = $(waisroot)/bin
  3407. X  waislibs = $(waislibdir)/inv.a $(waislibdir)/wais.a $(waislibdir)/libftw.a -lm
  3408. X  
  3409. X+ #### DIRECT WWFS SUPPORT
  3410. X  
  3411. X+ wwfsroot = /home/is/youki-k/work/wwfs-108.0
  3412. X+ wwfsflags = -I$(wwfsroot)/libww
  3413. X+ wwfslibdir = $(wwfsroot)/libww
  3414. X+ wwfslibs = $(wwfslibdir)/libww.a
  3415. X+ 
  3416. X  #### Customization flags:
  3417. X  #### . If you want Mosaic to come up with monochrome colors by default,
  3418. X  ####   use -DMONO_DEFAULT
  3419. X***************
  3420. X*** 151,156 ****
  3421. X--- 157,170 ----
  3422. X  ####   (should be a URL), set -DDOCS_DIRECTORY_DEFAULT=\\\"url\\\"
  3423. X  #### . Other things you can define are spelled out in src/mosaic.h.
  3424. X  customflags =
  3425. X+ #### Customization flags for WWFS addicts
  3426. X+ # customflags = \
  3427. X+ # -DDOCS_DIRECTORY_DEFAULT=\\\"wwfs:/NCSA-web/SDG/Software/Mosaic/Docs\\\" \
  3428. X+ # -DDEMO_PAGE_DEFAULT=\\\"wwfs:/NCSA-web/demoweb/demo.html\\\" \
  3429. X+ # -DHTMLPRIMER_PAGE_DEFAULT=\\\"wwfs:/NCSA-web/General/Internet/WWW/HTMLPrimer.html\\\" \
  3430. X+ # -DURLPRIMER_PAGE_DEFAULT=\\\"wwfs:/NCSA-web/demoweb/url-primer.html\\\" \
  3431. X+ # -DNETWORK_STARTING_POINTS_DEFAULT=\\\"wwfs:/NCSA-web/SDG/Software/Mosaic/StartingPoints/NetworkStartingPoints.html\\\" \
  3432. X+ # -DINTERNET_METAINDEX_DEFAULT=\\\"wwfs:/NCSA-web/SDG/Software/Mosaic/MetaIndex.html\\\"
  3433. X  
  3434. X  
  3435. X  
  3436. X***************
  3437. X*** 203,221 ****
  3438. X  
  3439. X  libwww2::
  3440. X      @echo --- Building libwww2
  3441. X!     cd libwww2; make CC=$(CC) RANLIB=$(RANLIB) CFLAGS="$(CFLAGS) $(knrflag) $(waisflags)"
  3442. X  
  3443. X  src::
  3444. X      @echo --- Building src
  3445. X!     cd src; make CC=$(CC) RANLIB=$(RANLIB) CFLAGS="$(CFLAGS) $(customflags) $(xinc) $(dtmflags) $(hdfflags) -I.. -I../libXmx -I../libwww2" AUX_CFLAGS=$(knrflag) X_LIBS="$(xlibs)" SYS_LIBS="$(sockslibs) $(syslibs)" DTM_LIBS="$(dtmlibs)" HDF_LIBS="$(hdflibs)" WAIS_LIBS="$(waislibs)" LIBWWW_DIR=../libwww2
  3446. X  
  3447. X  src-purifyd::
  3448. X      @echo --- Building Purify'd src
  3449. X!     cd src; make PURIFY=$(PURIFY) CC=$(CC) RANLIB=$(RANLIB) CFLAGS="$(CFLAGS) $(customflags) $(xinc) $(dtmflags) $(hdfflags) -I.. -I../libXmx -I../libwww2" AUX_CFLAGS=$(knrflag) X_LIBS="$(xlibs)" SYS_LIBS="$(sockslibs) $(syslibs)" DTM_LIBS="$(dtmlibs)" HDF_LIBS="$(hdflibs)" WAIS_LIBS="$(waislibs)" LIBWWW_DIR=../libwww2
  3450. X  
  3451. X  src-quantifyd::
  3452. X      @echo --- Building Quantify'd src
  3453. X!     cd src; make PURIFY=$(QUANTIFY) CC=$(CC) RANLIB=$(RANLIB) CFLAGS="$(CFLAGS) $(customflags) $(xinc) $(dtmflags) $(hdfflags) -I.. -I../libXmx -I../libwww2" AUX_CFLAGS=$(knrflag) X_LIBS="$(xlibs)" SYS_LIBS="$(sockslibs) $(syslibs)" DTM_LIBS="$(dtmlibs)" HDF_LIBS="$(hdflibs)" WAIS_LIBS="$(waislibs)" LIBWWW_DIR=../libwww2
  3454. X  
  3455. X  libnet::
  3456. X      @echo --- Building libnet
  3457. X--- 217,235 ----
  3458. X  
  3459. X  libwww2::
  3460. X      @echo --- Building libwww2
  3461. X!     cd libwww2; make CC=$(CC) RANLIB=$(RANLIB) CFLAGS="$(CFLAGS) $(knrflag) $(waisflags) $(wwfsflags)"
  3462. X  
  3463. X  src::
  3464. X      @echo --- Building src
  3465. X!     cd src; make CC=$(CC) RANLIB=$(RANLIB) CFLAGS="$(CFLAGS) $(customflags) $(xinc) $(dtmflags) $(hdfflags) -I.. -I../libXmx -I../libwww2" AUX_CFLAGS=$(knrflag) X_LIBS="$(xlibs)" SYS_LIBS="$(sockslibs) $(syslibs)" DTM_LIBS="$(dtmlibs)" HDF_LIBS="$(hdflibs)" WAIS_LIBS="$(waislibs)" WWFS_LIBS="$(wwfslibs)" LIBWWW_DIR=../libwww2
  3466. X  
  3467. X  src-purifyd::
  3468. X      @echo --- Building Purify'd src
  3469. X!     cd src; make PURIFY=$(PURIFY) CC=$(CC) RANLIB=$(RANLIB) CFLAGS="$(CFLAGS) $(customflags) $(xinc) $(dtmflags) $(hdfflags) -I.. -I../libXmx -I../libwww2" AUX_CFLAGS=$(knrflag) X_LIBS="$(xlibs)" SYS_LIBS="$(sockslibs) $(syslibs)" DTM_LIBS="$(dtmlibs)" HDF_LIBS="$(hdflibs)" WAIS_LIBS="$(waislibs)" WWFS_LIBS="$(wwfslibs)" LIBWWW_DIR=../libwww2
  3470. X  
  3471. X  src-quantifyd::
  3472. X      @echo --- Building Quantify'd src
  3473. X!     cd src; make PURIFY=$(QUANTIFY) CC=$(CC) RANLIB=$(RANLIB) CFLAGS="$(CFLAGS) $(customflags) $(xinc) $(dtmflags) $(hdfflags) -I.. -I../libXmx -I../libwww2" AUX_CFLAGS=$(knrflag) X_LIBS="$(xlibs)" SYS_LIBS="$(sockslibs) $(syslibs)" DTM_LIBS="$(dtmlibs)" HDF_LIBS="$(hdflibs)" WAIS_LIBS="$(waislibs)" WWFS_LIBS="$(wwfslibs)" LIBWWW_DIR=../libwww2
  3474. X  
  3475. X  libnet::
  3476. X      @echo --- Building libnet
  3477. Xdiff -c -r -N Mosaic-2.1/Makefile.alpha Mosaic-2.1+wwfs/Makefile.alpha
  3478. X*** Mosaic-2.1/Makefile.alpha    Tue Nov  9 18:21:52 1993
  3479. X--- Mosaic-2.1+wwfs/Makefile.alpha    Tue Dec 21 10:10:59 1993
  3480. X***************
  3481. X*** 139,145 ****
  3482. X--- 139,151 ----
  3483. X  #waislibdir = $(waisroot)/bin
  3484. X  #waislibs = $(waislibdir)/inv.a $(waislibdir)/wais.a $(waislibdir)/libftw.a -lm
  3485. X  
  3486. X+ #### DIRECT WWFS SUPPORT
  3487. X  
  3488. X+ wwfsroot = /home/is/youki-k/work/wwfs-108.0
  3489. X+ wwfsflags = -I$(wwfsroot)/libww
  3490. X+ wwfslibdir = $(wwfsroot)/libww
  3491. X+ wwfslibs = $(wwfslibdir)/libww.a
  3492. X+ 
  3493. X  #### Customization flags:
  3494. X  #### . If you want Mosaic to come up with monochrome colors by default,
  3495. X  ####   use -DMONO_DEFAULT
  3496. X***************
  3497. X*** 149,154 ****
  3498. X--- 155,168 ----
  3499. X  ####   (should be a URL), set -DDOCS_DIRECTORY_DEFAULT=\\\"url\\\"
  3500. X  #### . Other things you can define are spelled out in src/mosaic.h.
  3501. X  customflags =
  3502. X+ #### Customization flags for WWFS addicts
  3503. X+ # customflags = \
  3504. X+ # -DDOCS_DIRECTORY_DEFAULT=\\\"wwfs:/NCSA-web/SDG/Software/Mosaic/Docs\\\" \
  3505. X+ # -DDEMO_PAGE_DEFAULT=\\\"wwfs:/NCSA-web/demoweb/demo.html\\\" \
  3506. X+ # -DHTMLPRIMER_PAGE_DEFAULT=\\\"wwfs:/NCSA-web/General/Internet/WWW/HTMLPrimer.html\\\" \
  3507. X+ # -DURLPRIMER_PAGE_DEFAULT=\\\"wwfs:/NCSA-web/demoweb/url-primer.html\\\" \
  3508. X+ # -DNETWORK_STARTING_POINTS_DEFAULT=\\\"wwfs:/NCSA-web/SDG/Software/Mosaic/StartingPoints/NetworkStartingPoints.html\\\" \
  3509. X+ # -DINTERNET_METAINDEX_DEFAULT=\\\"wwfs:/NCSA-web/SDG/Software/Mosaic/MetaIndex.html\\\"
  3510. X  
  3511. X  
  3512. X  # ---------------------- END OF CUSTOMIZABLE OPTIONS -------------------------
  3513. X***************
  3514. X*** 177,195 ****
  3515. X  
  3516. X  libwww2::
  3517. X      @echo --- Building libwww2
  3518. X!     cd libwww2; make CC=$(CC) RANLIB=$(RANLIB) CFLAGS="$(CFLAGS) $(knrflag) $(waisflags)"
  3519. X  
  3520. X  src::
  3521. X      @echo --- Building src
  3522. X!     cd src; make CC=$(CC) RANLIB=$(RANLIB) CFLAGS="$(CFLAGS) $(customflags) $(xinc) $(dtmflags) $(hdfflags) -I.. -I../libXmx -I../libwww2" AUX_CFLAGS=$(knrflag) X_LIBS="$(xlibs)" SYS_LIBS="$(syslibs)" DTM_LIBS="$(dtmlibs)" HDF_LIBS="$(hdflibs)" WAIS_LIBS="$(waislibs)" LIBWWW_DIR=../libwww2
  3523. X  
  3524. X  src-purifyd::
  3525. X      @echo --- Building Purify'd src
  3526. X!     cd src; make PURIFY=$(PURIFY) CC=$(CC) RANLIB=$(RANLIB) CFLAGS="$(CFLAGS) $(customflags) $(xinc) $(dtmflags) $(hdfflags) -I.. -I../libXmx -I../libwww2" AUX_CFLAGS=$(knrflag) X_LIBS="$(xlibs)" SYS_LIBS="$(syslibs)" DTM_LIBS="$(dtmlibs)" HDF_LIBS="$(hdflibs)" WAIS_LIBS="$(waislibs)" LIBWWW_DIR=../libwww2
  3527. X  
  3528. X  src-quantifyd::
  3529. X      @echo --- Building Quantify'd src
  3530. X!     cd src; make PURIFY=$(QUANTIFY) CC=$(CC) RANLIB=$(RANLIB) CFLAGS="$(CFLAGS) $(customflags) $(xinc) $(dtmflags) $(hdfflags) -I.. -I../libXmx -I../libwww2" AUX_CFLAGS=$(knrflag) X_LIBS="$(xlibs)" SYS_LIBS="$(syslibs)" DTM_LIBS="$(dtmlibs)" HDF_LIBS="$(hdflibs)" WAIS_LIBS="$(waislibs)" LIBWWW_DIR=../libwww2
  3531. X  
  3532. X  libnet::
  3533. X      @echo --- Building libnet
  3534. X--- 191,209 ----
  3535. X  
  3536. X  libwww2::
  3537. X      @echo --- Building libwww2
  3538. X!     cd libwww2; make CC=$(CC) RANLIB=$(RANLIB) CFLAGS="$(CFLAGS) $(knrflag) $(waisflags) $(wwfsflags)"
  3539. X  
  3540. X  src::
  3541. X      @echo --- Building src
  3542. X!     cd src; make CC=$(CC) RANLIB=$(RANLIB) CFLAGS="$(CFLAGS) $(customflags) $(xinc) $(dtmflags) $(hdfflags) -I.. -I../libXmx -I../libwww2" AUX_CFLAGS=$(knrflag) X_LIBS="$(xlibs)" SYS_LIBS="$(syslibs)" DTM_LIBS="$(dtmlibs)" HDF_LIBS="$(hdflibs)" WAIS_LIBS="$(waislibs)" WWFS_LIBS="$(wwfslibs)" LIBWWW_DIR=../libwww2
  3543. X  
  3544. X  src-purifyd::
  3545. X      @echo --- Building Purify'd src
  3546. X!     cd src; make PURIFY=$(PURIFY) CC=$(CC) RANLIB=$(RANLIB) CFLAGS="$(CFLAGS) $(customflags) $(xinc) $(dtmflags) $(hdfflags) -I.. -I../libXmx -I../libwww2" AUX_CFLAGS=$(knrflag) X_LIBS="$(xlibs)" SYS_LIBS="$(syslibs)" DTM_LIBS="$(dtmlibs)" HDF_LIBS="$(hdflibs)" WAIS_LIBS="$(waislibs)" WWFS_LIBS="$(wwfslibs)" LIBWWW_DIR=../libwww2
  3547. X  
  3548. X  src-quantifyd::
  3549. X      @echo --- Building Quantify'd src
  3550. X!     cd src; make PURIFY=$(QUANTIFY) CC=$(CC) RANLIB=$(RANLIB) CFLAGS="$(CFLAGS) $(customflags) $(xinc) $(dtmflags) $(hdfflags) -I.. -I../libXmx -I../libwww2" AUX_CFLAGS=$(knrflag) X_LIBS="$(xlibs)" SYS_LIBS="$(syslibs)" DTM_LIBS="$(dtmlibs)" HDF_LIBS="$(hdflibs)" WAIS_LIBS="$(waislibs)" WWFS_LIBS="$(wwfslibs)" LIBWWW_DIR=../libwww2
  3551. X  
  3552. X  libnet::
  3553. X      @echo --- Building libnet
  3554. Xdiff -c -r -N Mosaic-2.1/Makefile.dec Mosaic-2.1+wwfs/Makefile.dec
  3555. X*** Mosaic-2.1/Makefile.dec    Tue Nov  9 18:38:54 1993
  3556. X--- Mosaic-2.1+wwfs/Makefile.dec    Tue Dec 21 10:11:14 1993
  3557. X***************
  3558. X*** 45,50 ****
  3559. X--- 45,52 ----
  3560. X  # syslibs = -lPW
  3561. X  #### For Sun's and Ultrix and HP and BSD/386:
  3562. X  syslibs =
  3563. X+ #### For DEC Ultrix + JP L10N:
  3564. X+ syslibs = -ljsy -lim
  3565. X  #### For Sun's with no DNS:
  3566. X  # syslibs = -lresolv
  3567. X  #### For SCO ODT:
  3568. X***************
  3569. X*** 116,124 ****
  3570. X  dtmdirs = libdtm libnet
  3571. X  dtmlibs = ../libnet/libnet.a ../libdtm/libdtm.a
  3572. X  dtmflags = -DHAVE_DTM -I.. -I../libnet
  3573. X! hdfdir = /hdf/install/dec
  3574. X! hdflibs = $(hdfdir)/lib/libnetcdf.a $(hdfdir)/lib/libdf.a
  3575. X! hdfflags = -DHAVE_HDF -I$(hdfdir)/include
  3576. X  
  3577. X  
  3578. X  #### DIRECT WAIS SUPPORT
  3579. X--- 118,126 ----
  3580. X  dtmdirs = libdtm libnet
  3581. X  dtmlibs = ../libnet/libnet.a ../libdtm/libdtm.a
  3582. X  dtmflags = -DHAVE_DTM -I.. -I../libnet
  3583. X! # hdfdir = /hdf/install/dec
  3584. X! # hdflibs = $(hdfdir)/lib/libnetcdf.a $(hdfdir)/lib/libdf.a
  3585. X! # hdfflags = -DHAVE_HDF -I$(hdfdir)/include
  3586. X  
  3587. X  
  3588. X  #### DIRECT WAIS SUPPORT
  3589. X***************
  3590. X*** 141,147 ****
  3591. X--- 143,155 ----
  3592. X  #waislibdir = $(waisroot)/bin
  3593. X  #waislibs = $(waislibdir)/inv.a $(waislibdir)/wais.a $(waislibdir)/libftw.a -lm
  3594. X  
  3595. X+ #### DIRECT WWFS SUPPORT
  3596. X  
  3597. X+ wwfsroot = /home/is/youki-k/work/wwfs-108.0
  3598. X+ wwfsflags = -I$(wwfsroot)/libww
  3599. X+ wwfslibdir = $(wwfsroot)/libww
  3600. X+ wwfslibs = $(wwfslibdir)/libww.a
  3601. X+ 
  3602. X  #### Customization flags:
  3603. X  #### . If you want Mosaic to come up with monochrome colors by default,
  3604. X  ####   use -DMONO_DEFAULT
  3605. X***************
  3606. X*** 151,156 ****
  3607. X--- 159,172 ----
  3608. X  ####   (should be a URL), set -DDOCS_DIRECTORY_DEFAULT=\\\"url\\\"
  3609. X  #### . Other things you can define are spelled out in src/mosaic.h.
  3610. X  customflags =
  3611. X+ #### Customization flags for WWFS addicts
  3612. X+ # customflags = \
  3613. X+ # -DDOCS_DIRECTORY_DEFAULT=\\\"wwfs:/NCSA-web/SDG/Software/Mosaic/Docs\\\" \
  3614. X+ # -DDEMO_PAGE_DEFAULT=\\\"wwfs:/NCSA-web/demoweb/demo.html\\\" \
  3615. X+ # -DHTMLPRIMER_PAGE_DEFAULT=\\\"wwfs:/NCSA-web/General/Internet/WWW/HTMLPrimer.html\\\" \
  3616. X+ # -DURLPRIMER_PAGE_DEFAULT=\\\"wwfs:/NCSA-web/demoweb/url-primer.html\\\" \
  3617. X+ # -DNETWORK_STARTING_POINTS_DEFAULT=\\\"wwfs:/NCSA-web/SDG/Software/Mosaic/StartingPoints/NetworkStartingPoints.html\\\" \
  3618. X+ # -DINTERNET_METAINDEX_DEFAULT=\\\"wwfs:/NCSA-web/SDG/Software/Mosaic/MetaIndex.html\\\"
  3619. X  
  3620. X  
  3621. X  # ---------------------- END OF CUSTOMIZABLE OPTIONS -------------------------
  3622. X***************
  3623. X*** 179,197 ****
  3624. X  
  3625. X  libwww2::
  3626. X      @echo --- Building libwww2
  3627. X!     cd libwww2; make CC=$(CC) RANLIB=$(RANLIB) CFLAGS="$(CFLAGS) $(knrflag) $(waisflags)"
  3628. X  
  3629. X  src::
  3630. X      @echo --- Building src
  3631. X!     cd src; make CC=$(CC) RANLIB=$(RANLIB) CFLAGS="$(CFLAGS) $(customflags) $(xinc) $(dtmflags) $(hdfflags) -I.. -I../libXmx -I../libwww2" AUX_CFLAGS=$(knrflag) X_LIBS="$(xlibs)" SYS_LIBS="$(syslibs)" DTM_LIBS="$(dtmlibs)" HDF_LIBS="$(hdflibs)" WAIS_LIBS="$(waislibs)" LIBWWW_DIR=../libwww2
  3632. X  
  3633. X  src-purifyd::
  3634. X      @echo --- Building Purify'd src
  3635. X!     cd src; make PURIFY=$(PURIFY) CC=$(CC) RANLIB=$(RANLIB) CFLAGS="$(CFLAGS) $(customflags) $(xinc) $(dtmflags) $(hdfflags) -I.. -I../libXmx -I../libwww2" AUX_CFLAGS=$(knrflag) X_LIBS="$(xlibs)" SYS_LIBS="$(syslibs)" DTM_LIBS="$(dtmlibs)" HDF_LIBS="$(hdflibs)" WAIS_LIBS="$(waislibs)" LIBWWW_DIR=../libwww2
  3636. X  
  3637. X  src-quantifyd::
  3638. X      @echo --- Building Quantify'd src
  3639. X!     cd src; make PURIFY=$(QUANTIFY) CC=$(CC) RANLIB=$(RANLIB) CFLAGS="$(CFLAGS) $(customflags) $(xinc) $(dtmflags) $(hdfflags) -I.. -I../libXmx -I../libwww2" AUX_CFLAGS=$(knrflag) X_LIBS="$(xlibs)" SYS_LIBS="$(syslibs)" DTM_LIBS="$(dtmlibs)" HDF_LIBS="$(hdflibs)" WAIS_LIBS="$(waislibs)" LIBWWW_DIR=../libwww2
  3640. X  
  3641. X  libnet::
  3642. X      @echo --- Building libnet
  3643. X--- 195,213 ----
  3644. X  
  3645. X  libwww2::
  3646. X      @echo --- Building libwww2
  3647. X!     cd libwww2; make CC=$(CC) RANLIB=$(RANLIB) CFLAGS="$(CFLAGS) $(knrflag) $(waisflags) $(wwfsflags)"
  3648. X  
  3649. X  src::
  3650. X      @echo --- Building src
  3651. X!     cd src; make CC=$(CC) RANLIB=$(RANLIB) CFLAGS="$(CFLAGS) $(customflags) $(xinc) $(dtmflags) $(hdfflags) -I.. -I../libXmx -I../libwww2" AUX_CFLAGS=$(knrflag) X_LIBS="$(xlibs)" SYS_LIBS="$(syslibs)" DTM_LIBS="$(dtmlibs)" HDF_LIBS="$(hdflibs)" WAIS_LIBS="$(waislibs)" WWFS_LIBS="$(wwfslibs)" LIBWWW_DIR=../libwww2
  3652. X  
  3653. X  src-purifyd::
  3654. X      @echo --- Building Purify'd src
  3655. X!     cd src; make PURIFY=$(PURIFY) CC=$(CC) RANLIB=$(RANLIB) CFLAGS="$(CFLAGS) $(customflags) $(xinc) $(dtmflags) $(hdfflags) -I.. -I../libXmx -I../libwww2" AUX_CFLAGS=$(knrflag) X_LIBS="$(xlibs)" SYS_LIBS="$(syslibs)" DTM_LIBS="$(dtmlibs)" HDF_LIBS="$(hdflibs)" WAIS_LIBS="$(waislibs)" WWFS_LIBS="$(wwfslibs)" LIBWWW_DIR=../libwww2
  3656. X  
  3657. X  src-quantifyd::
  3658. X      @echo --- Building Quantify'd src
  3659. X!     cd src; make PURIFY=$(QUANTIFY) CC=$(CC) RANLIB=$(RANLIB) CFLAGS="$(CFLAGS) $(customflags) $(xinc) $(dtmflags) $(hdfflags) -I.. -I../libXmx -I../libwww2" AUX_CFLAGS=$(knrflag) X_LIBS="$(xlibs)" SYS_LIBS="$(syslibs)" DTM_LIBS="$(dtmlibs)" HDF_LIBS="$(hdflibs)" WAIS_LIBS="$(waislibs)" WWFS_LIBS="$(wwfslibs)" LIBWWW_DIR=../libwww2
  3660. X  
  3661. X  libnet::
  3662. X      @echo --- Building libnet
  3663. Xdiff -c -r -N Mosaic-2.1/libwww2/HTAccess.c Mosaic-2.1+wwfs/libwww2/HTAccess.c
  3664. X*** Mosaic-2.1/libwww2/HTAccess.c    Sun Oct 31 07:56:57 1993
  3665. X--- Mosaic-2.1+wwfs/libwww2/HTAccess.c    Tue Dec 21 07:17:30 1993
  3666. X***************
  3667. X*** 79,85 ****
  3668. X  */
  3669. X  PRIVATE void HTAccessInit NOARGS            /* Call me once */
  3670. X  {
  3671. X! extern HTProtocol HTTP, HTFile, HTTelnet, HTTn3270, HTRlogin;
  3672. X  extern HTProtocol HTFTP, HTNews, HTGopher;
  3673. X  #ifdef DIRECT_WAIS
  3674. X  extern HTProtocol HTWAIS;
  3675. X--- 79,85 ----
  3676. X  */
  3677. X  PRIVATE void HTAccessInit NOARGS            /* Call me once */
  3678. X  {
  3679. X! extern HTProtocol HTTP, HTFile, HTWWFS, HTTelnet, HTTn3270, HTRlogin;
  3680. X  extern HTProtocol HTFTP, HTNews, HTGopher;
  3681. X  #ifdef DIRECT_WAIS
  3682. X  extern HTProtocol HTWAIS;
  3683. X***************
  3684. X*** 93,98 ****
  3685. X--- 93,99 ----
  3686. X  
  3687. X      HTRegisterProtocol(&HTTP);
  3688. X      HTRegisterProtocol(&HTFile);
  3689. X+     HTRegisterProtocol(&HTWWFS);
  3690. X      HTRegisterProtocol(&HTTelnet);
  3691. X      HTRegisterProtocol(&HTTn3270);
  3692. X      HTRegisterProtocol(&HTRlogin);
  3693. Xdiff -c -r -N Mosaic-2.1/libwww2/HTParse.c Mosaic-2.1+wwfs/libwww2/HTParse.c
  3694. X*** Mosaic-2.1/libwww2/HTParse.c    Sat Nov  6 16:52:43 1993
  3695. X--- Mosaic-2.1+wwfs/libwww2/HTParse.c    Tue Dec 21 08:52:17 1993
  3696. X***************
  3697. X*** 115,120 ****
  3698. X--- 115,122 ----
  3699. X          parts->relative = (*after_access) ? after_access : 0;    /* zero for "" */
  3700. X      }
  3701. X  
  3702. X+     /* WWFS does not require host part -- youki@wide.ad.jp, Dec 21 1993 */
  3703. X+     if (parts->access && ! strcmp(parts->access, "wwfs")) return;
  3704. X      /* Access specified but no host: the anchor was not really one
  3705. X         e.g. news:j462#36487@foo.bar -- JFG 10/7/92, from bug report */
  3706. X      if (parts->access && ! parts->host && parts->anchor) {
  3707. Xdiff -c -r -N Mosaic-2.1/libwww2/HTWWFS.c Mosaic-2.1+wwfs/libwww2/HTWWFS.c
  3708. X*** Mosaic-2.1/libwww2/HTWWFS.c
  3709. X--- Mosaic-2.1+wwfs/libwww2/HTWWFS.c    Tue Dec 21 07:28:06 1993
  3710. X***************
  3711. X*** 0 ****
  3712. X--- 1,452 ----
  3713. X+ /*            WWFS Access                HTWWFS.c
  3714. X+ **            ===========
  3715. X+ **
  3716. X+ **    This is unix-specific code in general.
  3717. X+ **    These are routines for file access used by browsers.
  3718. X+ **
  3719. X+ ** History:
  3720. X+ **       Feb 91    Written Tim Berners-Lee CERN/CN
  3721. X+ **       Apr 91    vms-vms access included using DECnet syntax
  3722. X+ **    26 Jun 92 (JFG) When running over DECnet, suppressed FTP.
  3723. X+ **            Fixed access bug for relative names on VMS.
  3724. X+ **       Nov 93    Derived from HTFile.c; Youki Kadobayashi WIDE
  3725. X+ **            deleted VMS code for simplicity.
  3726. X+ **
  3727. X+ */
  3728. X+ 
  3729. X+ #include "HTFile.h"        /* Implemented here */
  3730. X+ 
  3731. X+ #define MULTI_SUFFIX ".multi"   /* Extension for scanning formats */
  3732. X+ 
  3733. X+ #include <stdio.h>
  3734. X+ #include <sys/param.h>
  3735. X+ #include "HText.h"
  3736. X+ #include "HTUtils.h"
  3737. X+ 
  3738. X+ #include "HTParse.h"
  3739. X+ #include "tcp.h"
  3740. X+ #include "HTTCP.h"
  3741. X+ #include "HTAnchor.h"
  3742. X+ #include "HTAtom.h"
  3743. X+ #include "HTWriter.h"
  3744. X+ #include "HTFWriter.h"
  3745. X+ #include "HTInit.h"
  3746. X+ #include "HTSort.h"
  3747. X+ #include "libww.h"
  3748. X+ 
  3749. X+ /* #define TRACE 1 */
  3750. X+ 
  3751. X+ #ifdef USE_DIRENT        /* Set this for Sys V systems */
  3752. X+ #define STRUCT_DIRENT struct dirent
  3753. X+ #else
  3754. X+ #define STRUCT_DIRENT struct direct
  3755. X+ #endif
  3756. X+ 
  3757. X+ #include "HTML.h"        /* For directory object building */
  3758. X+ 
  3759. X+ /*                   Controlling globals
  3760. X+ **
  3761. X+ */
  3762. X+ 
  3763. X+ extern int HTDirAccess;
  3764. X+ 
  3765. X+ /*    Load a document on WWFS
  3766. X+ **    -----------------------
  3767. X+ **
  3768. X+ ** On entry,
  3769. X+ **    addr        must point to the fully qualified hypertext reference.
  3770. X+ **            This is the physsical address of the file
  3771. X+ **
  3772. X+ ** On exit,
  3773. X+ **    returns        <0        Error has occured.
  3774. X+ **            HTLOADED    OK 
  3775. X+ **
  3776. X+ */
  3777. X+ PUBLIC int HTLoadWWFS ARGS4 (
  3778. X+     CONST char *,        addr,
  3779. X+     HTParentAnchor *,    anchor,
  3780. X+     HTFormat,        format_out,
  3781. X+     HTStream *,        sink
  3782. X+ )
  3783. X+ {
  3784. X+     char * filename, * localname;
  3785. X+     HTFormat format;
  3786. X+     int fd = -1;        /* Unix file descriptor number = INVALID */
  3787. X+     char * newname=0;    /* Simplified name of file */
  3788. X+     HTAtom * encoding;    /* @@ not used yet */
  3789. X+     int compressed;
  3790. X+     extern char *HTgeticonname(HTFormat, char *);
  3791. X+     
  3792. X+ /*    Reduce the filename to a basic form (hopefully unique!)
  3793. X+ */
  3794. X+     StrAllocCopy(newname, addr);
  3795. X+     filename=HTParse(newname, "", PARSE_PATH|PARSE_PUNCTUATION);
  3796. X+     free(newname);
  3797. X+     
  3798. X+     format = HTFileFormat(filename, &encoding, WWW_PLAINTEXT, &compressed);
  3799. X+ 
  3800. X+     HTProgress ("Retrieving WWFS file.");
  3801. X+     if (ww_get(filename) < 0) {
  3802. X+         if (TRACE) fprintf(stderr, "HTWWFS: could not retrieve document");
  3803. X+     }
  3804. X+     localname = ww_localpath(filename);
  3805. X+     if (! localname) {
  3806. X+         if (TRACE) fprintf(stderr, "HTWWFS: client not configured properly");
  3807. X+     } else {
  3808. X+     struct stat dir_info;
  3809. X+     localname = strdup(localname);
  3810. X+ 
  3811. X+ #ifdef GOT_READ_DIR
  3812. X+ 
  3813. X+ /*              Multiformat handling
  3814. X+ **
  3815. X+ **    If needed, scan directory to find a good file.
  3816. X+ **  Bug:  we don't stat the file to find the length
  3817. X+ */
  3818. X+     if ( (strlen(localname) > strlen(MULTI_SUFFIX))
  3819. X+        && (0==strcmp(localname + strlen(localname) - strlen(MULTI_SUFFIX),
  3820. X+                       MULTI_SUFFIX))) {
  3821. X+         DIR *dp;
  3822. X+ 
  3823. X+         STRUCT_DIRENT * dirbuf;
  3824. X+         float best = NO_VALUE_FOUND;    /* So far best is bad */
  3825. X+         HTFormat best_rep = NULL;    /* Set when rep found */
  3826. X+         STRUCT_DIRENT best_dirbuf;    /* Best dir entry so far */
  3827. X+ 
  3828. X+         char * base = strrchr(localname, '/');
  3829. X+         int baselen;
  3830. X+ 
  3831. X+         if (!base || base == localname) goto forget_multi;
  3832. X+         *base++ = 0;        /* Just got directory name */
  3833. X+         baselen = strlen(base)- strlen(MULTI_SUFFIX);
  3834. X+         base[baselen] = 0;    /* Chop off suffix */
  3835. X+ 
  3836. X+         dp = opendir(localname);
  3837. X+         if (!dp) {
  3838. X+ forget_multi:
  3839. X+         free(localname);
  3840. X+         return HTLoadError(sink, 500,
  3841. X+             "Multiformat: directory scan failed.");
  3842. X+         }
  3843. X+         
  3844. X+         while (dirbuf = readdir(dp)) {
  3845. X+             /* while there are directory entries to be read */
  3846. X+         if (dirbuf->d_ino == 0) continue;
  3847. X+                 /* if the entry is not being used, skip it */
  3848. X+         
  3849. X+         if (!strncmp(dirbuf->d_name, base, baselen)) {    
  3850. X+             HTFormat rep = HTFileFormat(dirbuf->d_name, &encoding,
  3851. X+                                                 WWW_PLAINTEXT, &compressed);
  3852. X+             float value = HTStackValue(rep, format_out,
  3853. X+                             HTFileValue(dirbuf->d_name),
  3854. X+                         0.0  /* @@@@@@ */);
  3855. X+             if (value != NO_VALUE_FOUND) {
  3856. X+                 if (TRACE) fprintf(stderr,
  3857. X+                 "HTWWFS: value of presenting %s is %f\n",
  3858. X+                 HTAtom_name(rep), value);
  3859. X+             if  (value > best) {
  3860. X+                 best_rep = rep;
  3861. X+                 best = value;
  3862. X+                 best_dirbuf = *dirbuf;
  3863. X+                }
  3864. X+             }    /* if best so far */             
  3865. X+          } /* if match */  
  3866. X+             
  3867. X+         } /* end while directory entries left to read */
  3868. X+         closedir(dp);
  3869. X+         
  3870. X+         if (best_rep) {
  3871. X+         format = best_rep;
  3872. X+         base[-1] = '/';        /* Restore directory name */
  3873. X+         base[0] = 0;
  3874. X+         StrAllocCat(localname, best_dirbuf.d_name);
  3875. X+         goto open_file;
  3876. X+         
  3877. X+         } else {             /* If not found suitable file */
  3878. X+         free(localname);
  3879. X+         return HTLoadError(sink, 403,    /* List formats? */
  3880. X+            "Could not find suitable representation for transmission.");
  3881. X+         }
  3882. X+         /*NOTREACHED*/
  3883. X+     } /* if multi suffix */
  3884. X+ /*
  3885. X+ **    Check to see if the 'localname' is in fact a directory.  If it is
  3886. X+ **    create a new hypertext object containing a list of files and 
  3887. X+ **    subdirectories contained in the directory.  All of these are links
  3888. X+ **      to the directories or files listed.
  3889. X+ **      NB This assumes the existance of a type 'STRUCT_DIRENT', which will
  3890. X+ **      hold the directory entry, and a type 'DIR' which is used to point to
  3891. X+ **      the current directory being read.
  3892. X+ */
  3893. X+     
  3894. X+     
  3895. X+     if (stat(localname,&dir_info) == -1) {     /* get file information */
  3896. X+                                    /* if can't read file information */
  3897. X+         if (TRACE) fprintf(stderr, "HTWWFS: can't stat %s\n", localname);
  3898. X+ 
  3899. X+     }  else {        /* Stat was OK */
  3900. X+         
  3901. X+ 
  3902. X+         if (((dir_info.st_mode) & S_IFMT) == S_IFDIR) {
  3903. X+         /* if localname is a directory */    
  3904. X+ 
  3905. X+ /*
  3906. X+ **
  3907. X+ ** Read the localdirectory and present a nicely formatted list to the user
  3908. X+ ** Re-wrote most of the read directory code here, excepting for the checking
  3909. X+ ** access.
  3910. X+ **
  3911. X+ ** Author: Charles Henrich (henrich@crh.cl.msu.edu)   10-09-93
  3912. X+ **
  3913. X+ ** This is still pretty messy, need to go through and clean it up at some point
  3914. X+ **
  3915. X+ */
  3916. X+ 
  3917. X+ /* Define some parameters that everyone should already have */
  3918. X+ 
  3919. X+ #ifndef MAXPATHLEN
  3920. X+ #define MAXPATHLEN 1024
  3921. X+ #endif
  3922. X+ 
  3923. X+ #ifndef BUFSIZ
  3924. X+ #define BUFSIZ 4096
  3925. X+ #endif
  3926. X+ 
  3927. X+                 char filepath[MAXPATHLEN];
  3928. X+                 char buffer[4096];
  3929. X+      
  3930. X+                 char *ptr;
  3931. X+                 char *dataptr;
  3932. X+ 
  3933. X+                 HText * HT;
  3934. X+                 HTFormat format;
  3935. X+                 HTAtom *pencoding;
  3936. X+ 
  3937. X+         struct stat statbuf;
  3938. X+         STRUCT_DIRENT * dp;
  3939. X+         DIR *dfp;
  3940. X+  
  3941. X+                 int cmpr;
  3942. X+                 int count;
  3943. X+ 
  3944. X+         if (TRACE)
  3945. X+             fprintf(stderr,"%s is a directory\n",localname);
  3946. X+         HTProgress ("Listing directory.");
  3947. X+             
  3948. X+ /*    Check directory access.
  3949. X+ **    Selective access means only those directories containing a
  3950. X+ **    marker file can be browsed
  3951. X+ */
  3952. X+         if (HTDirAccess == HT_DIR_FORBID) {
  3953. X+             free(localname);
  3954. X+             return HTLoadError(sink, 403,
  3955. X+             "Directory browsing is not allowed.");
  3956. X+         }
  3957. X+ 
  3958. X+ 
  3959. X+         if (HTDirAccess == HT_DIR_SELECTIVE) {
  3960. X+             char * enable_file_name = 
  3961. X+             malloc(strlen(localname)+ 1 +
  3962. X+              strlen(HT_DIR_ENABLE_FILE) + 1);
  3963. X+             strcpy(enable_file_name, localname);
  3964. X+             strcat(enable_file_name, "/");
  3965. X+             strcat(enable_file_name, HT_DIR_ENABLE_FILE);
  3966. X+             if (stat(enable_file_name, &statbuf) != 0) {
  3967. X+             free(localname);
  3968. X+             return HTLoadError(sink, 403,
  3969. X+             "Selective access is not enabled for this directory.");
  3970. X+             }
  3971. X+         }
  3972. X+ 
  3973. X+  
  3974. X+         dfp = opendir(localname);
  3975. X+         if (!dfp) {
  3976. X+             free(localname);
  3977. X+             return HTLoadError(sink, 403, "This directory is not readable.");
  3978. X+         }
  3979. X+ 
  3980. X+ /* Suck the directory up into a list to be sorted */
  3981. X+ 
  3982. X+                 HTSortInit();
  3983. X+ 
  3984. X+                 for(dp=readdir(dfp);dp != NULL;dp=readdir(dfp))
  3985. X+                     {
  3986. X+                     ptr = malloc(strlen(dp->d_name)+1);
  3987. X+                     if(ptr == NULL)
  3988. X+                         {
  3989. X+                 return HTLoadError(sink, 403, "Ran out of memory in directory read!");
  3990. X+                         }
  3991. X+                     strcpy(ptr,dp->d_name);
  3992. X+                      
  3993. X+                     HTSortAdd(ptr);
  3994. X+                     }
  3995. X+ 
  3996. X+                 closedir(dfp);
  3997. X+ 
  3998. X+ /* Sort the dir list */
  3999. X+ 
  4000. X+                 HTSortSort();
  4001. X+ 
  4002. X+ /* Start a new HTML page */
  4003. X+ 
  4004. X+                 HT = HText_new();
  4005. X+                 HText_beginAppend(HT);
  4006. X+                 HText_appendText(HT, "<H1>WWFS Directory ");
  4007. X+                 HText_appendText(HT, filename);
  4008. X+                 HText_appendText(HT, "</H1>\n");
  4009. X+                 HText_appendText(HT,"<DL>\n"); 
  4010. X+ 
  4011. X+ /* Sort the list and then spit it out in a nice form */
  4012. X+ 
  4013. X+ /* How this for a disgusting loop :) */
  4014. X+ 
  4015. X+                 for(count=0,dataptr=HTSortFetch(count); 
  4016. X+                     dataptr != NULL; 
  4017. X+                     free(dataptr), count++, dataptr=HTSortFetch(count))
  4018. X+                     {
  4019. X+ 
  4020. X+ /* We dont want to see . */
  4021. X+ 
  4022. X+                     if(strcmp(dataptr,".") == 0) continue;
  4023. X+  
  4024. X+ /* If its .. *and* the current directory is / dont show anything, otherwise
  4025. X+ /* print out a nice Parent Directory entry.
  4026. X+ /* */
  4027. X+ 
  4028. X+                     if(strcmp(dataptr,"..") == 0)
  4029. X+                         {
  4030. X+                         if(strcmp(localname,"/") != 0)
  4031. X+                             {
  4032. X+                             strcpy(buffer,filename);
  4033. X+ 
  4034. X+                             ptr = strrchr(buffer, '/');
  4035. X+ 
  4036. X+                             if(ptr != NULL) *ptr='\0'; 
  4037. X+ 
  4038. X+                             if(buffer[0] == '\0') strcpy(buffer,"/");
  4039. X+ 
  4040. X+                             HText_appendText(HT,"<DD><A HREF=\"");
  4041. X+                             HText_appendText(HT, buffer);
  4042. X+ 
  4043. X+                             HText_appendText(HT,"\"><IMG SRC=\"");
  4044. X+                             HText_appendText(HT, HTgeticonname(NULL, "directory"));
  4045. X+ 
  4046. X+                             HText_appendText(HT,"\"> Parent Directory</a>");
  4047. X+                             continue;
  4048. X+                             }
  4049. X+                         else
  4050. X+                             {
  4051. X+                             continue;
  4052. X+                             }
  4053. X+                         }
  4054. X+                       
  4055. X+ /* Get the filesize information from a stat, if we cant stat it, we probably */
  4056. X+ /* cant read it either, so ignore it. */
  4057. X+ 
  4058. X+                     sprintf(filepath,"%s/%s",localname, dataptr);
  4059. X+ 
  4060. X+                     if(stat(filepath, &statbuf) == -1) continue;
  4061. X+      
  4062. X+                     HText_appendText(HT,"<DD><A HREF=\"");
  4063. X+                     HText_appendText (HT, filename);
  4064. X+ 
  4065. X+                     if(localname[strlen(localname)-1] != '/') 
  4066. X+                         {
  4067. X+                         HText_appendText (HT, "/");
  4068. X+                         }
  4069. X+ 
  4070. X+                     HText_appendText (HT, dataptr);
  4071. X+                     HText_appendText (HT, "\">");
  4072. X+ 
  4073. X+ /* If its a directory, dump out a dir icon, dont bother with anything else */
  4074. X+ /* if it is a file try and figure out what type of file it is, and grab    */
  4075. X+ /* the appropriate icon.  If we cant figure it out, call it text.  If its  */
  4076. X+ /* a compressed file, call it binary no matter what                        */
  4077. X+ 
  4078. X+                     if(statbuf.st_mode & S_IFDIR)
  4079. X+                         {
  4080. X+                         sprintf(buffer,"%s",dataptr);
  4081. X+                         HText_appendText(HT, "<IMG SRC=\"");
  4082. X+                         HText_appendText(HT, HTgeticonname(NULL, "directory"));
  4083. X+                         HText_appendText(HT, "\"> ");
  4084. X+                         }
  4085. X+                     else
  4086. X+                         {
  4087. X+                         sprintf(buffer,"%s (%d bytes)", 
  4088. X+                             dataptr, statbuf.st_size);
  4089. X+               
  4090. X+                         format = HTFileFormat(dataptr, &pencoding, 
  4091. X+                                      WWW_SOURCE, &cmpr);
  4092. X+ 
  4093. X+ /* If its executable then call it application, else it might as well be text */
  4094. X+ 
  4095. X+                         if(cmpr == 0)
  4096. X+                             {
  4097. X+                             HText_appendText(HT, "<IMG SRC=\"");
  4098. X+                             if((statbuf.st_mode & S_IXUSR) ||
  4099. X+                                (statbuf.st_mode & S_IXGRP) || 
  4100. X+                                (statbuf.st_mode & S_IXOTH))
  4101. X+                                 {
  4102. X+                                 HText_appendText(HT, 
  4103. X+                                     HTgeticonname(format, "application"));
  4104. X+                                 }
  4105. X+                             else
  4106. X+                                 {
  4107. X+                                 HText_appendText(HT, 
  4108. X+                                     HTgeticonname(format, "text"));
  4109. X+                                 }
  4110. X+                             HText_appendText(HT, "\"> ");
  4111. X+                             }
  4112. X+                         else
  4113. X+                             {
  4114. X+                             HText_appendText(HT, "<IMG SRC=\"");
  4115. X+                             HText_appendText(HT, HTgeticonname(NULL, "application"));
  4116. X+                             HText_appendText(HT, "\"> ");
  4117. X+                             }
  4118. X+                         }
  4119. X+ 
  4120. X+ /* Spit out the anchor */
  4121. X+ 
  4122. X+                     HText_appendText (HT, buffer);
  4123. X+                     HText_appendText (HT, "</A>\n");
  4124. X+                     } 
  4125. X+ 
  4126. X+ /* End of list, clean up and we are done */
  4127. X+ 
  4128. X+             HText_appendText (HT, "</DL>\n");
  4129. X+             HText_endAppend (HT);
  4130. X+             free(localname);
  4131. X+             return HT_LOADED;
  4132. X+         } /* end if localname is directory */
  4133. X+     
  4134. X+     } /* end if file stat worked */
  4135. X+     
  4136. X+ /* End of directory reading section
  4137. X+ */
  4138. X+ #endif
  4139. X+ open_file:
  4140. X+     {
  4141. X+         FILE * fp = fopen(localname,"r");
  4142. X+         if(TRACE) fprintf (stderr, "HTWWFS: Opening `%s' gives %p\n",
  4143. X+                 localname, (void*)fp);
  4144. X+         if (fp) {        /* Good! */
  4145. X+         if (HTEditable(localname)) {
  4146. X+             HTAtom * put = HTAtom_for("PUT");
  4147. X+             HTList * methods = HTAnchor_methods(anchor);
  4148. X+             if (HTList_indexOf(methods, put) == (-1)) {
  4149. X+             HTList_addObject(methods, put);
  4150. X+             }
  4151. X+         }
  4152. X+         free(localname);
  4153. X+         HTParseFile(format, format_out, anchor, fp, sink, compressed);
  4154. X+         fclose(fp);
  4155. X+         return HT_LOADED;
  4156. X+         }  /* If succesfull open */
  4157. X+     }    /* scope of fp */
  4158. X+     }  /* local unix file system */    
  4159. X+     free(filename);
  4160. X+ }
  4161. X+ 
  4162. X+ /*        Protocol descriptors
  4163. X+ */
  4164. X+ PUBLIC HTProtocol HTWWFS = { "wwfs", HTLoadWWFS, 0 };
  4165. Xdiff -c -r -N Mosaic-2.1/libwww2/Makefile Mosaic-2.1+wwfs/libwww2/Makefile
  4166. X*** Mosaic-2.1/libwww2/Makefile    Mon Nov  1 13:04:46 1993
  4167. X--- Mosaic-2.1+wwfs/libwww2/Makefile    Tue Dec 21 07:17:31 1993
  4168. X***************
  4169. X*** 30,35 ****
  4170. X--- 30,36 ----
  4171. X  HTTelnet.c \
  4172. X  HTWSRC.c \
  4173. X  HTWriter.c \
  4174. X+ HTWWFS.c \
  4175. X  SGML.c \
  4176. X  HTWAIS.c \
  4177. X  HTIcon.c \
  4178. Xdiff -c -r -N Mosaic-2.1/src/Makefile Mosaic-2.1+wwfs/src/Makefile
  4179. X*** Mosaic-2.1/src/Makefile    Sun Nov  7 16:32:05 1993
  4180. X--- Mosaic-2.1+wwfs/src/Makefile    Tue Dec 21 07:17:31 1993
  4181. X***************
  4182. X*** 5,11 ****
  4183. X  LIBXMX_INC = ../libXmx
  4184. X  
  4185. X  PROGRAM_LIBS = $(LIBWWW_DIR)/libwww.a $(LIBHTMLW_DIR)/libhtmlw.a $(LIBXMX_DIR)/libXmx.a
  4186. X! LIBS = $(PROGRAM_LIBS) $(X_LIBS) $(DTM_LIBS) $(HDF_LIBS) $(WAIS_LIBS) $(MATH_LIB) $(SYS_LIBS)
  4187. X  
  4188. X  CFILES = main.c gui.c gui-dialogs.c gui-menubar.c gui-documents.c mo-www.c\
  4189. X    mo-dtm.c hotlist.c whine.c history.c\
  4190. X--- 5,11 ----
  4191. X  LIBXMX_INC = ../libXmx
  4192. X  
  4193. X  PROGRAM_LIBS = $(LIBWWW_DIR)/libwww.a $(LIBHTMLW_DIR)/libhtmlw.a $(LIBXMX_DIR)/libXmx.a
  4194. X! LIBS = $(PROGRAM_LIBS) $(X_LIBS) $(DTM_LIBS) $(HDF_LIBS) $(WAIS_LIBS) $(WWFS_LIBS) $(MATH_LIB) $(SYS_LIBS)
  4195. X  
  4196. X  CFILES = main.c gui.c gui-dialogs.c gui-menubar.c gui-documents.c mo-www.c\
  4197. X    mo-dtm.c hotlist.c whine.c history.c\
  4198. Xdiff -c -r -N Mosaic-2.1/src/history.c Mosaic-2.1+wwfs/src/history.c
  4199. X*** Mosaic-2.1/src/history.c    Sun Dec  5 13:43:49 1993
  4200. X--- Mosaic-2.1+wwfs/src/history.c    Tue Dec 21 07:17:31 1993
  4201. X***************
  4202. X*** 349,354 ****
  4203. X--- 349,365 ----
  4204. X          goto done;
  4205. X        }
  4206. X      }
  4207. X+ 
  4208. X+   if (!strncmp (url, "wwfs:", 5))
  4209. X+     {
  4210. X+           /* It's a WWFS file. */
  4211. X+           foo1 = url + 5;
  4212. X+           
  4213. X+           title = (char *)malloc ((strlen (foo1) + 32) * sizeof (char));
  4214. X+           sprintf (title, "WWFS file %s\0", foo1);
  4215. X+           
  4216. X+           goto done;
  4217. X+     }
  4218. X    
  4219. X    /* Punt... */
  4220. X    title = (char *) malloc ((strlen (url) + 24) * sizeof (char));
  4221. Xdiff -c -r -N Mosaic-2.1/src/mo-www.c Mosaic-2.1+wwfs/src/mo-www.c
  4222. X*** Mosaic-2.1/src/mo-www.c    Sun Dec  5 13:43:56 1993
  4223. X--- Mosaic-2.1+wwfs/src/mo-www.c    Tue Dec 21 07:17:32 1993
  4224. X***************
  4225. X*** 775,781 ****
  4226. X  /* ------------------------------ dumb stuff ------------------------------ */
  4227. X  
  4228. X  /* Grumble grumble... */
  4229. X! #if defined(ultrix) || defined(VMS) || defined(NeXT) || defined(M4310) || defined(vax)
  4230. X  char *strdup (char *str)
  4231. X  {
  4232. X    char *dup;
  4233. X--- 775,784 ----
  4234. X  /* ------------------------------ dumb stuff ------------------------------ */
  4235. X  
  4236. X  /* Grumble grumble... */
  4237. X! /*
  4238. X!  * #if defined(ultrix) || defined(VMS) || defined(NeXT) || defined(M4310) || defined(vax)
  4239. X!  */
  4240. X! #if defined(VMS) || defined(NeXT) || defined(M4310) || defined(vax)
  4241. X  char *strdup (char *str)
  4242. X  {
  4243. X    char *dup;
  4244. END_OF_FILE
  4245.   if test 32538 -ne `wc -c <'mosaic/Mosaic-2.1+wwfs.diff'`; then
  4246.     echo shar: \"'mosaic/Mosaic-2.1+wwfs.diff'\" unpacked with wrong size!
  4247.   fi
  4248.   # end of 'mosaic/Mosaic-2.1+wwfs.diff'
  4249. fi
  4250. echo shar: End of archive 10 \(of 22\).
  4251. cp /dev/null ark10isdone
  4252. MISSING=""
  4253. for I in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 ; do
  4254.     if test ! -f ark${I}isdone ; then
  4255.     MISSING="${MISSING} ${I}"
  4256.     fi
  4257. done
  4258. if test "${MISSING}" = "" ; then
  4259.     echo You have unpacked all 22 archives.
  4260.     rm -f ark[1-9]isdone ark[1-9][0-9]isdone
  4261. else
  4262.     echo You still must unpack the following archives:
  4263.     echo "        " ${MISSING}
  4264. fi
  4265. exit 0
  4266. exit 0 # Just in case...
  4267.