home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Usenet 1994 October
/
usenetsourcesnewsgroupsinfomagicoctober1994disk2.iso
/
misc
/
volume41
/
wwfs
/
part11
< prev
next >
Wrap
Text File
|
1994-01-17
|
93KB
|
4,282 lines
Newsgroups: comp.sources.misc
From: youki-k@is.aist-nara.ac.jp (Youki Kadobayashi)
Subject: v41i096: wwfs - WorldWide File System, Part11/22
Message-ID: <1994Jan17.202312.19971@sparky.sterling.com>
X-Md4-Signature: bd0029767b2f823906c40dfa3a4f2b43
Sender: kent@sparky.sterling.com (Kent Landfield)
Organization: Nara Institute of Science and Technology, Japan
Date: Mon, 17 Jan 1994 20:23:12 GMT
Approved: kent@sparky.sterling.com
Submitted-by: youki-k@is.aist-nara.ac.jp (Youki Kadobayashi)
Posting-number: Volume 41, Issue 96
Archive-name: wwfs/part11
Environment: UNIX, inet
#! /bin/sh
# This is a shell archive. Remove anything before this line, then feed it
# into a shell via "sh file" or similar. To overwrite existing files,
# type "sh file -c".
# Contents: csd/nfs_reply.c doc/manual.ps.B
# mosaic/Mosaic-2.0+wwfs.diff
# Wrapped by kent@sparky on Sun Jan 16 17:48:34 1994
PATH=/bin:/usr/bin:/usr/ucb:/usr/local/bin:/usr/lbin:$PATH ; export PATH
echo If this archive is complete, you will see the following message:
echo ' "shar: End of archive 11 (of 22)."'
if test -f 'csd/nfs_reply.c' -a "${1}" != "-c" ; then
echo shar: Will not clobber existing file \"'csd/nfs_reply.c'\"
else
echo shar: Extracting \"'csd/nfs_reply.c'\" \(9289 characters\)
sed "s/^X//" >'csd/nfs_reply.c' <<'END_OF_FILE'
X/*
X * WorldWide File System
X * Copyright (c) 1992,1993 Youki Kadobayashi
X * Copyright (c) 1992,1993 Osaka University
X * All rights reserved.
X *
X * Permission to use, copy, modify and distribute this software and its
X * documentation is hereby granted, provided that the following conditions
X * are met:
X * 1. Both the copyright notice and this permission notice appear in
X * all copies of the software, derivative works or modified versions,
X * and any portions thereof, and that both notices appear in
X * supporting documentation.
X * 2. All advertising materials mentioning features or use of this software
X * must display the following acknowledgement:
X * This product includes software developed by the Osaka University
X * and its contributors.
X * 3. Neither the name of the University nor the names of its contributors
X * may be used to endorse or promote products derived from this software
X * without specific prior written permission.
X *
X * THIS SOFTWARE IS PROVIDED BY THE DEVELOPER ``AS IS'' AND OSAKA
X * UNIVERSITY DISCLAIMS ANY LIABILITY OF ANY KIND FOR ANY DAMAGES
X * WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE.
X *
X * Osaka University requests users of this software to return to
X *
X * Youki Kadobayashi
X * Department of Information and Computer Sciences
X * Osaka University, Toyonaka 560, Osaka, Japan
X *
X * any improvements or extensions that they make and grant Osaka
X * University the rights to redistribute these changes.
X */
X/* NFS reply */
Xstatic char *AtFSid = "$Header: nfs_reply.c[109.0] Wed Nov 24 03:47:13 1993 youki-k@is.aist-nara.ac.jp saved $";
X
X#include <sys/file.h> /* for O_RDONLY */
X#include "wfs.h"
X#include "util.h"
X#include "global.h"
X
X/* translation of WFS semantics to NFS errno */
Xstatic nfsstat nfserr[] = {
X NFS_OK, /* WF_REP_OK: no error */
X NFSERR_PERM, /* WF_ERR_PERM: Not owner */
X NFSERR_NOENT, /* WF_ERR_NOENT: No such entity */
X NFSERR_IO, /* WF_ERR_IO: I/O error */
X NFSERR_NXIO, /* WF_ERR_NXIO: No such device or address */
X NFSERR_ACCES, /* WF_ERR_ACCES: Permission denied */
X NFSERR_EXIST, /* WF_ERR_EXIST: Given resource exists */
X NFSERR_NODEV, /* WF_ERR_NODEV: No such device */
X NFSERR_NOTDIR, /* WF_ERR_NOTDIR: Not a directory*/
X NFSERR_ISDIR, /* WF_ERR_ISDIR: Is a directory */
X NFSERR_FBIG, /* WF_ERR_FBIG: Resource too large */
X NFSERR_NOSPC, /* WF_ERR_NOSPC: No space left on device */
X NFSERR_ROFS, /* WF_ERR_ROFS: Read-only file system */
X NFSERR_NAMETOOLONG, /* WF_ERR_NAMETOOLONG: Resource name too long */
X NFSERR_NOTEMPTY, /* WF_ERR_NOTEMPTY: Directory not empty */
X NFSERR_DQUOT, /* WF_ERR_DQUOT: Disc quota exceeded */
X NFSERR_STALE, /* WF_ERR_STALE: Stale file handle */
X NFSERR_WFLUSH, /* WF_ERR_WFLUSH: Write cache flushed */
X /* brain damaged NFS does not know what Internet is */
X NFSERR_NOENT, /* WF_REP_WAIT: Operation would block */
X NFSERR_NOENT, /* WF_ERR_ALREADY: Operation already in progress */
X NFSERR_NOENT, /* WF_ERR_PROTO: Protocol not available */
X NFSERR_NOENT, /* WF_ERR_NDOWN: Network is down */
X NFSERR_NOENT, /* WF_ERR_NUNREACH: Network is unreachable */
X NFSERR_NOENT, /* WF_ERR_XABORT: Transfer aborted */
X NFSERR_NOENT, /* WF_ERR_TIMEOUT: Connection timed out */
X NFSERR_NOENT, /* WF_ERR_REFUSED: Connection refused */
X NFSERR_NOENT, /* WF_ERR_HDOWN: Host is down */
X NFSERR_NOENT, /* WF_ERR_HUNREACH: No route to host */
X NFSERR_NOENT, /* WF_ERR_NQUOT: Network quota exceeded */
X};
X
Xvoid
Xnfs_getattr_reply(c, status)
Xwf_thrd *c;
Xint status;
X{
X static attrstat res;
X if (status == WF_REP_OK) {
X bcopy(&c->filep->fattr, &res.attrstat_u.attributes,
X sizeof(fattr));
X } else {
X bzero(&res, sizeof (res));
X }
X res.status = nfserr[status];
X svc_sendreply(c->rqstp->rq_xprt, xdr_attrstat, &res);
X if (! (c->flag & WF_THREAD_BUSY)) thrd_free(c);
X}
X
Xvoid
Xnfs_lookup_reply(c, status)
Xwf_thrd *c;
Xint status;
X{
X static diropres res;
X if (status == WF_REP_OK) {
X bcopy(c->resfhp, &res.diropres_u.diropres.file,
X sizeof (nfs_fh));
X bcopy(&c->filep->fattr, &res.diropres_u.diropres.attributes,
X sizeof(fattr));
X } else {
X bzero(&res, sizeof (res));
X }
X res.status = nfserr[status];
X svc_sendreply(c->rqstp->rq_xprt, xdr_diropres, &res);
X if (! (c->flag & WF_THREAD_BUSY)) thrd_free(c);
X}
X
Xvoid
Xnfs_readlink_reply(c, status)
Xwf_thrd *c;
Xint status;
X{
X static readlinkres res;
X char path[NFS_MAXPATHLEN];
X if (status == WF_REP_OK) {
X res.readlinkres_u.data = path;
X strcpy(res.readlinkres_u.data, c->filep->link);
X } else {
X bzero(&res, sizeof (res));
X }
X res.status = nfserr[status];
X svc_sendreply(c->rqstp->rq_xprt, xdr_readlinkres, &res);
X if (! (c->flag & WF_THREAD_BUSY)) thrd_free(c);
X}
X
Xvoid
Xnfs_read_reply(c, status, attrp, data_len, data_val)
Xwf_thrd *c;
Xnfsstat status;
Xfattr *attrp;
Xint data_len;
Xchar *data_val;
X{
X static readres res;
X if (attrp && data_val) {
X bcopy(attrp, &res.readres_u.reply.attributes, sizeof(fattr));
X res.readres_u.reply.data.data_len = data_len;
X res.readres_u.reply.data.data_val = data_val;
X } else {
X bzero(&res, sizeof (res));
X }
X res.status = nfserr[status];
X svc_sendreply(c->rqstp->rq_xprt, xdr_readres, &res);
X if (! (c->flag & WF_THREAD_BUSY)) thrd_free(c);
X}
X
Xstatic void
Xnfs_readdir_reply(c, status, resp)
Xwf_thrd *c;
Xnfsstat status;
Xreaddirres *resp;
X{
X static readdirres res;
X
X if (resp) {
X resp->status = status;
X svc_sendreply(c->rqstp->rq_xprt, xdr_readdirres, resp);
X } else {
X bzero(&res, sizeof(res));
X res.status = status;
X svc_sendreply(c->rqstp->rq_xprt, xdr_readdirres, &res);
X }
X if (! (c->flag & WF_THREAD_BUSY)) thrd_free(c);
X}
X
X
Xvoid
Xnfs_read_done(c, status)
X/* rqstp, volp, offset, count, totalcount, dirp, filep */
Xwf_thrd *c;
Xint status;
X{
X int fd, buflen;
X char *buf;
X char path[MAXPATHLEN];
X
X if (status != WF_REP_OK) {
X nfs_read_reply(c, status, 0, 0, 0);
X return;
X }
X file_getpath(path, c->child_volp, c->dirp, c->filep);
X fd = open(path, O_RDONLY);
X if (fd < 0) {
X dlog("no such file: %s", path);
X nfs_read_reply(c, WF_ERR_NOENT, 0, 0, 0);
X return;
X }
X lseek(fd, (off_t )c->offset, 0);
X buflen = c->count;
X buf = so_getbuf(fd);
X buflen = read(fd, buf, buflen);
X close(fd);
X if (buflen < 0) {
X dlog("cmfs_read: read error");
X nfs_read_reply(c, WF_ERR_IO, 0, 0, 0);
X return;
X }
X c->child_volp->stats.bytes_to_client += buflen;
X nfs_read_reply(c, WF_REP_OK, &c->filep->fattr, buflen, buf);
X}
X
X#ifdef DEBUG_CHAIN
Xstatic void
Xcheck_chain(c, filep, ident)
Xwf_thrd *c;
Xwf_file *filep;
Xchar *ident;
X{
X wf_file *d;
X int found = 0;
X
X if (filep == c->dirp->file)
X return;
X ITER(d, wf_file, &c->dirp->file->q) {
X if (d == filep) {
X found = 1;
X break;
X }
X }
X if (! found) {
X dlog("%s: filep = %08x not in chain", ident, filep);
X csd_abort(1);
X }
X}
X#endif
X
X/*
X * You cannot eat these cookies.
X */
Xstatic unsigned int gen = 1; /* generation number */
Xstatic unsigned int ch; /* cookie handle */
X#define CH_SIZE 256
X
X/* Cookie internals */
Xunion cookie {
X struct {
X unsigned int gen: 24;
X unsigned int ch: 8;
X } broken;
X unsigned long whole;
X};
X
X/* Ring buffer of cookie checker/mapper. Indexed by cookie handle */
Xstatic struct cookie_checker {
X wf_file *filep;
X wf_file *head;
X} cooche[CH_SIZE];
X
Xunsigned long
Xcookie_bake(filep, head)
Xwf_file *filep, *head;
X{
X union cookie u;
X
X assert(sizeof(union cookie) == sizeof(nfscookie));
X if (++ch == CH_SIZE) {
X ch = 0;
X ++gen;
X if (gen == 0)
X gen = 1; /* so that valid cookie != 0 holds */
X }
X cooche[ch].filep = filep;
X cooche[ch].head = head;
X u.broken.gen = gen;
X u.broken.ch = ch;
X return (u.whole);
X}
X
Xwf_file *
Xcookie_taste(cookie, head)
Xunsigned long cookie;
Xwf_file *head;
X{
X unsigned int i;
X union cookie u;
X
X u.whole = cookie;
X i = u.broken.ch;
X if (u.broken.gen == gen || (u.broken.gen == gen-1 && i > ch)) {
X if (cooche[i].head == head)
X return (cooche[i].filep);
X }
X return (wf_file *)0;
X}
X
Xvoid
Xnfs_readdir_done(c, status)
Xwf_thrd *c; /* rqstp, volp, cookie, count, dirp */
Xint status;
X{
X static readdirres res;
X wf_file *filep, *nextp;
X entry **e, *p, *p2;
X unsigned long cool;
X int size = 0;
X
X if (status != WF_REP_OK) {
X nfs_readdir_reply(c, nfserr[status], 0);
X return;
X }
X e = &res.readdirres_u.reply.entries;
X bcopy(c->cookie, &cool, sizeof (nfscookie));
X if (! cool) {
X filep = FIRST(wf_file, &c->dirp->file->q);
X } else {
X filep = cookie_taste(cool, c->dirp->file);
X if (! filep) {
X struct in_addr in;
X in.s_addr = c->client;
X dlog("invalid cookie from client %s",
X inet_ntoa(in));
X nfs_readdir_reply(c, NFSERR_NOENT, 0);
X return;
X }
X#ifdef DEBUG_CHAIN
X check_chain(c, filep, "get cookie");
X#endif
X }
X for (; nextp = NEXT(wf_file, filep),
X filep != HEAD(wf_file, &c->dirp->file->q);
X filep = nextp) {
X size += sizeof(entry) + strlen(filep->name) + 16;
X if (size >= c->count)
X break;
X *e = ALLOC(entry);
X (*e)->fileid = filep->id;
X (*e)->name = filep->name;
X cool = cookie_bake(nextp, c->dirp->file);
X bcopy(&cool, (*e)->cookie, sizeof(nfscookie));
X#ifdef DEBUG_CHAIN
X check_chain(c, nextp, "set cookie");
X#endif
X e = &((*e)->nextentry);
X }
X *e = (entry *)0;
X res.readdirres_u.reply.eof =
X (filep == HEAD(wf_file, &c->dirp->file->q));
X c->child_volp->stats.bytes_to_client += MIN(size, c->count);
X nfs_readdir_reply(c, NFS_OK, &res);
X
X p = res.readdirres_u.reply.entries;
X while (p) {
X p2 = p->nextentry;
X FREE(p);
X p = p2;
X }
X}
END_OF_FILE
if test 9289 -ne `wc -c <'csd/nfs_reply.c'`; then
echo shar: \"'csd/nfs_reply.c'\" unpacked with wrong size!
fi
# end of 'csd/nfs_reply.c'
fi
if test -f 'doc/manual.ps.B' -a "${1}" != "-c" ; then
echo shar: Will not clobber existing file \"'doc/manual.ps.B'\"
else
echo shar: Extracting \"'doc/manual.ps.B'\" \(45673 characters\)
sed "s/^X//" >'doc/manual.ps.B' <<'END_OF_FILE'
X14 r (the)s
X15 r (Internet)s
X15 r (\256le)s
X14 r (cache.)s
Xf1 SF
X141 1517 p (\017)s
Xf17 SF
X31 r (config/)s
Xf6 SF
X202 1592 p (Machine-,)s
X15 r (architecture-)s
X16 r (and)s
X15 r (operating-system)s
X15 r (dependent)s
X15 r (\256les.)s
Xf1 SF
X141 1714 p (\017)s
Xf17 SF
X31 r (csd/)s
Xf6 SF
X202 1789 p (An)s
X23 r (NFS)s
X22 r (server)s
X-1 r (,)s
X23 r (an)s
X23 r (NFS-FTP)s
X22 r (gateway)s
X23 r (software,)s
X24 r (the)s
X22 r (Internet)s
X23 r (\256le)s
X22 r (cache,)s
X25 r (or)s
X22 r (the)s
X23 r (substrate)s
X22 r (for)s
X202 1864 p (scalable)s
X22 r (information)s
X22 r (systems,)s
X24 r (that)s
X22 r (runs)s
X22 r (as)s
X22 r (a)s
X22 r (daemon)s
X22 r (in)s
X23 r (the)s
X22 r (user)s
X22 r (mode.)s
X41 r (Modi\256cation)s
X22 r (to)s
X22 r (the)s
X202 1940 p (UNIX)s
X13 r (kernel)s
X13 r (is)s
X13 r (not)s
X13 r (necessary)s
X13 r (at)s
X13 r (all.)s
X19 r (It)s
X13 r (can)s
X13 r (be)s
X13 r (accessed)s
X13 r (as)s
X13 r (an)s
X13 r (ordinary)s
X13 r (NFS)s
X13 r (server)s
X13 r (from)s
X13 r (virtually)s
X202 2015 p (any)s
X20 r (client)s
X20 r (workstations)s
X20 r (with)s
X20 r (NFS)s
X20 r (capability)s
X-3 r (.)s
X34 r (It)s
X20 r (talks)s
X19 r (with)s
X20 r (anonymous)s
X20 r (ftp)s
X20 r (servers)s
X20 r (using)s
X20 r (FTP)s
X202 2090 p (protocol)s
X15 r (\(see)s
X16 r (Figure)s
X15 r (1.1\).)s
Xf1 SF
X141 2212 p (\017)s
Xf17 SF
X31 r (doc/)s
Xf6 SF
X202 2287 p (Documentation,)s
X20 r (both)s
X18 r (\256nished)s
X19 r (and)s
X18 r (un\256nished,)s
X20 r (including)s
X18 r (memorandum)s
X19 r (and)s
X18 r (preliminary)s
X19 r (ideas.)s
X202 2362 p (Some)s
X15 r (may)s
X16 r (be)s
X15 r (only)s
X15 r (useful)s
X15 r (to)s
X16 r (interested)s
X15 r (developers.)s
Xf1 SF
X141 2484 p (\017)s
Xf17 SF
X31 r (gtr/)s
Xf6 SF
X202 2559 p (A)s
X15 r (package)s
X16 r (to)s
X15 r (rearrange)s
X15 r (servers)s
X15 r (by)s
X16 r (geographical)s
X15 r (/)s
X15 r (topological)s
X15 r (region.)s
Xf1 SF
X141 2681 p (\017)s
Xf17 SF
X31 r (include/)s
Xf6 SF
X202 2756 p (Header)s
X15 r (\256les)s
X16 r (for)s
X15 r (C)s
X15 r (programs.)s
Xf1 SF
X141 2878 p (\017)s
Xf17 SF
X31 r (libww/)s
Xf6 SF
X202 2953 p (Application)s
X15 r (programming)s
X16 r (interface,)s
X15 r (for)s
X15 r (bypassing)s
X15 r (NFS)s
X16 r (when)s
X15 r (necessary)s
X-3 r (.)s
Xf1 SF
X141 3075 p (\017)s
Xf17 SF
X31 r (mosaic/)s
Xf6 SF
X202 3150 p (Patches)s
X16 r (to)s
X15 r (add)s
X16 r (direct)s
X15 r (WWFS)s
X16 r (support)s
X15 r (to)s
X16 r (NCSA)s
Xf20 SF
X15 r (Mosaic)s
Xf6 SF
X16 r (for)s
X15 r (X,)s
X16 r (the)s
X15 r (multi-protocol)s
X16 r (information)s
X202 3225 p (browser)s
X-2 r (.)s
X19 r (Also)s
X15 r (included)s
X15 r (here)s
X16 r (are)s
X15 r (migration)s
X15 r (tools)s
X15 r (from)s
X15 r (Internet)s
X15 r (Gopher)s
X15 r (Protocol)s
X16 r (and)s
X15 r (HyperT)s
X-4 r (ext)s
X202 3300 p (T)s
X-1 r (ransfer)s
X14 r (Protocol.)s
Xf1 SF
X141 3422 p (\017)s
Xf17 SF
X31 r (mule/)s
Xf6 SF
X202 3497 p (Emacs)s
X15 r (lisp)s
X16 r (package)s
X15 r (to)s
X15 r (access)s
X15 r (WWFS)s
X16 r (within)s
X15 r (multi-lingual)s
X15 r (EMACS.)s
Xf1 SF
X141 3619 p (\017)s
Xf17 SF
X31 r (rpc/)s
Xf6 SF
X202 3694 p (Subroutines)s
X15 r (for)s
X16 r (remote)s
X15 r (procedure)s
X15 r (call.)s
XEP
X
X%%Page: 5 6
XBP
Xf8 SF
X50 66 p (1.2.)s
X35 r (ORGANIZA)s
X-2 r (TION)s
X14 r (OF)s
X16 r (THIS)s
X15 r (DISTRIBUTION)s
Xf6 SF
X1124 r (5)s
Xf1 SF
X141 232 p (\017)s
Xf17 SF
X31 r (saps/)s
Xf6 SF
X202 307 p (SAPS)s
X17 r (stands)s
X17 r (for)s
X16 r (Server)s
X17 r (Administration)s
X17 r (Perl)s
X16 r (Scripts;)s
X18 r (some)s
X17 r (of)s
X16 r (which)s
X17 r (has)s
X17 r (been)s
X17 r (used)s
X16 r (for)s
X17 r (day-to-)s
X202 382 p (day)s
X15 r (server)s
X16 r (administration.)s
Xf1 SF
X141 507 p (\017)s
Xf17 SF
X31 r (vol/)s
Xf6 SF
X202 583 p (V)s
X-7 r (olume)s
X15 r (\256les,)s
X15 r (that)s
X15 r (describe)s
X15 r (server-to-location)s
X14 r (mappings)s
X15 r (and)s
X16 r (alternative)s
X15 r (servers.)s
Xf1 SF
X141 708 p (\017)s
Xf17 SF
X31 r (wwalk/)s
Xf6 SF
X202 783 p (Point-and-click)s
X16 r (style)s
X16 r (graphical)s
X16 r (user)s
X15 r (interface,)s
X16 r (which)s
X16 r (is)s
X16 r (actually)s
X15 r (a)s
X16 r (rework)s
X16 r (of)s
X16 r (my)s
X16 r (good-old-days)s
X202 858 p (Tk)s
X19 r (script.)s
X30 r (Y)s
X-5 r (ou)s
X18 r (need)s
X18 r (Tk2.3,)s
X20 r (T)s
X-4 r (clX6.4c,)s
X19 r (and)s
X18 r (tclRawTCP-1.0)s
X19 r (to)s
X18 r (run)s
X19 r (this)s
X18 r (script.)s
Xf7 SF
X31 r (It')s
X-7 r (s)s
X17 r (not)s
X19 r (updated)s
X202 934 p (in)s
X18 r (this)s
X19 r (r)s
X-2 r (elease.)s
Xf6 SF
X29 r (If)s
X18 r (you)s
X18 r (don't)s
X18 r (know)s
X18 r (what)s
X18 r (T)s
X-3 r (cl)s
X17 r (and)s
X18 r (Tk)s
X19 r (is,)s
X19 r (just)s
X18 r (get)s
X18 r (the)s
Xf17 SF
X18 r (comp.lang.tcl)s
Xf6 SF
X19 r (F)s
X-4 r (AQ)s
X17 r (from)s
X202 1009 p (USENET)s
X15 r (newsgroups)s
X16 r (\(or)s
X15 r (just)s
X15 r (go)s
X15 r (to)s
Xf17 SF
X16 r (/news.answers/tcl-faq)s
Xf6 SF
X15 r (on)s
X15 r (WWFS\).)s
Xf1 SF
X141 1134 p (\017)s
Xf17 SF
X31 r (wwmount/)s
Xf6 SF
X202 1209 p (A)s
X15 r (modi\256ed)s
X16 r (version)s
X15 r (of)s
Xf17 SF
X15 r (mount)s
Xf6 SF
X15 r (and)s
Xf17 SF
X16 r (umount)s
Xf6 SF
X15 r (command,)s
X15 r (based)s
X15 r (on)s
X15 r (BSD)s
X16 r (Net2.)s
X485 1417 p 1.000 @beginspecial
X@epsf
X0.600000 @vscale
X0.600000 @hscale
X-1.000000 0.000000 473.000000 379.000000 @bbox
X@setspecial
X%%BeginDocument: architecture.eps
X%!PS-Adobe-2.0 EPSF-2.0
X%%Title: /tmp/xfig-fig004519
X%%Creator: fig2dev
X%%CreationDate: Thu Aug 12 03:46:28 1993
X%%For: youki-k@dec413 (Youki Kadobayashi)
X%%BoundingBox: -1 0 473 379
X%%Pages: 0
X%%EndComments
X/$F2psDict 200 dict def
X$F2psDict begin
X$F2psDict /mtrx matrix put
X/l {lineto} bind def
X/m {moveto} bind def
X/s {stroke} bind def
X/n {newpath} bind def
X/gs {gsave} bind def
X/gr {grestore} bind def
X/clp {closepath} bind def
X/graycol {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul
X4 -2 roll mul setrgbcolor} bind def
X/col-1 {} def
X/col0 {0 0 0 setrgbcolor} bind def
X/col1 {0 0 1 setrgbcolor} bind def
X/col2 {0 1 0 setrgbcolor} bind def
X/col3 {0 1 1 setrgbcolor} bind def
X/col4 {1 0 0 setrgbcolor} bind def
X/col5 {1 0 1 setrgbcolor} bind def
X/col6 {1 1 0 setrgbcolor} bind def
X/col7 {1 1 1 setrgbcolor} bind def
X /DrawEllipse {
X /endangle exch def
X /startangle exch def
X /yrad exch def
X /xrad exch def
X /y exch def
X /x exch def
X /savematrix mtrx currentmatrix def
X x y translate xrad yrad scale 0 0 1 startangle endangle arc
X savematrix setmatrix
X } def
X
X end
X/$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def
X/$F2psEnd {$F2psEnteredState restore end} def
X%%EndProlog
X
X$F2psBegin
X0 setlinecap 0 setlinejoin
X-112.0 468.0 translate 0.900 -0.900 scale
X0.500 setlinewidth
X% Ellipse
Xn 549 174 15 10 0 360 DrawEllipse gs 1.00 setgray fill gr
Xgs col0 s gr
X% Ellipse
Xn 319 244 15 10 0 360 DrawEllipse gs 1.00 setgray fill gr
Xgs col0 s gr
X% Ellipse
Xn 499 219 15 10 0 360 DrawEllipse gs 1.00 setgray fill gr
Xgs col0 s gr
X% Ellipse
Xn 584 234 15 10 0 360 DrawEllipse gs 1.00 setgray fill gr
Xgs col0 s gr
X% Ellipse
Xn 529 284 15 10 0 360 DrawEllipse gs 1.00 setgray fill gr
Xgs col0 s gr
X% Ellipse
Xn 524 389 15 10 0 360 DrawEllipse gs 1.00 setgray fill gr
Xgs col0 s gr
X% Ellipse
Xn 579 349 15 10 0 360 DrawEllipse gs 1.00 setgray fill gr
Xgs col0 s gr
X [4.000000] 0 setdash
X% Polyline
Xn 339 99 m 339 519 l gs col-1 s gr
X [] 0 setdash
X% Polyline
Xn 514 219 m 514 199 l 484 199 l 484 219 l clp gs 1.00 setgray fill gr
Xgs col0 s gr
X% Polyline
Xn 334 244 m 334 224 l 304 224 l 304 244 l clp gs 1.00 setgray fill gr
Xgs col0 s gr
X% Polyline
Xn 594 349 m 594 329 l 564 329 l 564 349 l clp gs 1.00 setgray fill gr
Xgs col0 s gr
X% Polyline
Xn 544 284 m 544 264 l 514 264 l 514 284 l clp gs 1.00 setgray fill gr
Xgs col0 s gr
X% Polyline
Xn 599 234 m 599 214 l 569 214 l 569 234 l clp gs 1.00 setgray fill gr
Xgs col0 s gr
X0.000 setlinewidth
X [2.000000] 0 setdash
X% Polyline
Xn 359 329 m 359 304 l 319 304 l 319 329 l clp gs 1.00 setgray fill gr
X [] 0 setdash
X0.500 setlinewidth
X% Polyline
Xn 539 389 m 539 369 l 509 369 l 509 389 l clp gs 1.00 setgray fill gr
Xgs col0 s gr
X% Polyline
Xn 564 174 m 564 154 l 534 154 l 534 174 l clp gs 1.00 setgray fill gr
Xgs col0 s gr
X% Ellipse
Xn 579 329 15 10 0 360 DrawEllipse gs 1.00 setgray fill gr
Xgs col0 s gr
X% Polyline
Xn 509 389 m 539 389 l gs col7 s gr
X% Ellipse
Xn 499 199 15 10 0 360 DrawEllipse gs 1.00 setgray fill gr
Xgs col0 s gr
X% Polyline
Xn 484 219 m 514 219 l gs col7 s gr
X% Ellipse
Xn 584 214 15 10 0 360 DrawEllipse gs 1.00 setgray fill gr
Xgs col0 s gr
X% Polyline
Xn 304 244 m 334 244 l gs col7 s gr
X% Polyline
Xn 569 234 m 599 234 l gs col7 s gr
X% Polyline
Xn 514 284 m 544 284 l gs col7 s gr
X% Ellipse
Xn 549 154 15 10 0 360 DrawEllipse gs 1.00 setgray fill gr
Xgs col0 s gr
X% Ellipse
Xn 529 264 15 10 0 360 DrawEllipse gs 1.00 setgray fill gr
Xgs col0 s gr
X% Ellipse
Xn 524 369 15 10 0 360 DrawEllipse gs 1.00 setgray fill gr
Xgs col0 s gr
X% Polyline
Xn 534 174 m 564 174 l gs col7 s gr
X% Polyline
Xn 195 340 m 195 319 l 168 319 l 168 340 l clp gs col-1 s gr
X% Polyline
Xn 168 342 m 164 349 l 190 349 l 195 342 l 168 342 l gs col-1 s gr
X% Polyline
Xn 195 319 m 199 321 l 199 336 l 195 340 l gs col-1 s gr
X% Polyline
Xn 195 342 m 195 347 l 190 351 l 164 351 l 164 349 l gs col-1 s gr
X% Polyline
Xn 564 349 m 594 349 l gs col7 s gr
X% Polyline
Xn 178 321 m 171 321 171 331 7 arcto 4 {pop} repeat 171 338 185 338 7 arcto 4 {pop} repeat 192 338 192 328 7 arcto 4 {pop} repeat 192 321 178 321 7 arcto 4 {pop} repeat clp gs col-1 s gr
X% Polyline
Xn 220 305 m 220 284 l 193 284 l 193 305 l clp gs col-1 s gr
X% Polyline
Xn 193 307 m 189 314 l 215 314 l 220 307 l 193 307 l gs col-1 s gr
X% Polyline
Xn 190 349 m 190 351 l gs col-1 s gr
X% Polyline
Xn 220 307 m 220 312 l 215 316 l 189 316 l 189 314 l gs col-1 s gr
X% Polyline
Xn 215 314 m 215 316 l gs col-1 s gr
X% Polyline
Xn 203 286 m 196 286 196 296 7 arcto 4 {pop} repeat 196 303 210 303 7 arcto 4 {pop} repeat 217 303 217 293 7 arcto 4 {pop} repeat 217 286 203 286 7 arcto 4 {pop} repeat clp gs col-1 s gr
X% Polyline
Xn 165 268 m 165 247 l 138 247 l 138 268 l clp gs col-1 s gr
X% Polyline
Xn 138 270 m 134 277 l 160 277 l 165 270 l 138 270 l gs col-1 s gr
X% Polyline
Xn 165 247 m 169 249 l 169 264 l 165 268 l gs col-1 s gr
X% Polyline
Xn 165 270 m 165 275 l 160 279 l 134 279 l 134 277 l gs col-1 s gr
X% Polyline
Xn 160 277 m 160 279 l gs col-1 s gr
X% Polyline
Xn 148 249 m 141 249 141 259 7 arcto 4 {pop} repeat 141 266 155 266 7 arcto 4 {pop} repeat 162 266 162 256 7 arcto 4 {pop} repeat 162 249 148 249 7 arcto 4 {pop} repeat clp gs col-1 s gr
X% Polyline
Xn 205 238 m 205 217 l 178 217 l 178 238 l clp gs col-1 s gr
X% Polyline
Xn 178 240 m 174 247 l 200 247 l 205 240 l 178 240 l gs col-1 s gr
X% Polyline
Xn 205 217 m 209 219 l 209 234 l 205 238 l gs col-1 s gr
X% Polyline
Xn 205 240 m 205 245 l 200 249 l 174 249 l 174 247 l gs col-1 s gr
X% Polyline
Xn 200 247 m 200 249 l gs col-1 s gr
X% Polyline
Xn 188 219 m 181 219 181 229 7 arcto 4 {pop} repeat 181 236 195 236 7 arcto 4 {pop} repeat 202 236 202 226 7 arcto 4 {pop} repeat 202 219 188 219 7 arcto 4 {pop} repeat clp gs col-1 s gr
X [4.000000] 0 setdash
X% Ellipse
Xn 534 266 115 162 0 360 DrawEllipse gs col-1 s gr
X [] 0 setdash
X [4.000000] 0 setdash
X% Ellipse
Xn 189 286 65 72 0 360 DrawEllipse gs col-1 s gr
X [] 0 setdash
X% Ellipse
Xn 338 280 25 25 0 360 DrawEllipse gs 1.00 setgray fill gr
Xgs col-1 s gr
X% Polyline
Xn 369 264 m 469 214 l gs col0 s gr
Xn 460.950 215.789 m 469.000 214.000 l 462.739 219.367 l gs 2 setlinejoin col0 s gr
X% Polyline
Xn 374 289 m 554 334 l gs col0 s gr
Xn 546.724 330.119 m 554.000 334.000 l 545.754 334.000 l gs 2 setlinejoin col0 s gr
X% Polyline
Xn 369 304 m 499 374 l gs col0 s gr
Xn 492.904 368.446 m 499.000 374.000 l 491.008 371.968 l gs 2 setlinejoin col0 s gr
X% Polyline
Xn 319 254 m 324 259 l gs col0 s gr
X% Polyline
Xn 209 229 m 304 269 l gs col0 s gr
Xn 297.403 264.052 m 304.000 269.000 l 295.851 267.739 l gs 2 setlinejoin col0 s gr
X% Polyline
Xn 199 329 m 304 299 l gs col0 s gr
Xn 295.758 299.275 m 304.000 299.000 l 296.857 303.121 l gs 2 setlinejoin col0 s gr
X% Polyline
Xn 169 259 m 299 279 l gs col0 s gr
Xn 291.397 275.807 m 299.000 279.000 l 290.789 279.760 l gs 2 setlinejoin col0 s gr
X% Polyline
Xn 224 294 m 299 289 l gs col0 s gr
Xn 290.885 287.537 m 299.000 289.000 l 291.151 291.528 l gs 2 setlinejoin col0 s gr
X% Polyline
Xn 319 504 m 219 504 l gs col-1 s gr
Xn 227.000 506.000 m 219.000 504.000 l 227.000 502.000 l gs 2 setlinejoin col-1 s gr
X% Polyline
Xn 359 504 m 479 504 l gs col-1 s gr
Xn 471.000 502.000 m 479.000 504.000 l 471.000 506.000 l gs 2 setlinejoin col-1 s gr
X% Ellipse
Xn 319 224 15 10 0 360 DrawEllipse gs 1.00 setgray fill gr
Xgs col0 s gr
X% Polyline
Xn 220 284 m 224 286 l 224 301 l 220 305 l gs col-1 s gr
X/Helvetica-Bold findfont 16.00 scalefont setfont
X509 449 m
Xgs 1 -1 scale (Internet) col-1 show gr
X/Helvetica-Bold findfont 16.00 scalefont setfont
X324 324 m
Xgs 1 -1 scale (csd) col-1 show gr
X/Helvetica-Bold findfont 16.00 scalefont setfont
X174 379 m
Xgs 1 -1 scale (LAN) col-1 show gr
X/Helvetica-Bold findfont 16.00 scalefont setfont
X234 499 m
Xgs 1 -1 scale (DFS view) col-1 show gr
X/Helvetica-Bold findfont 16.00 scalefont setfont
X374 499 m
Xgs 1 -1 scale (Internet view) col-1 show gr
X$F2psEnd
X%%EndDocument
X@endspecial
X50 2877 p (Figure)s
X19 r (1.2:)s
X28 r (WWFS:)s
X19 r (shared)s
X19 r (namespace,)s
X20 r (replicated)s
X19 r (services,)s
X20 r (binding)s
X19 r (mechanism,)s
X20 r (and)s
X19 r (right)s
X19 r (protocol)s
X50 2953 p (for)s
X15 r (the)s
X15 r (right)s
X16 r (place.)s
XEP
X
X%%Page: 6 7
XBP
Xf6 SF
X50 66 p (6)s
Xf8 SF
X1572 r (CHAPTER)s
X15 r (1.)s
X36 r (INTRODUCTION)s
XEP
X
X%%Page: 7 8
XBP
Xf19 SF
X50 652 p (Chapter)s
X29 r (2)s
Xf18 SF
X50 934 p (Installation)s
Xf6 SF
X50 1236 p (This)s
X12 r (chapter)s
X13 r (describes)s
X12 r (installation)s
X13 r (procedure)s
X12 r (of)s
X13 r (this)s
X12 r (software)s
X13 r (suite.)s
X19 r (Before)s
X13 r (beginning)s
X12 r (installation,)s
X13 r (you)s
X50 1311 p (must)s
X15 r (make)s
X15 r (sure)s
X16 r (that)s
X15 r (you)s
X15 r (have)s
X15 r (necessary)s
X16 r (tools)s
X15 r (handy)s
X-3 r (,)s
X14 r (then)s
X15 r (decide)s
X15 r (where)s
X16 r (you)s
X15 r (install)s
X15 r (this)s
X15 r (software.)s
Xf13 SF
X50 1536 p (2.1)s
X80 r (Bootstrapping)s
X20 r (envir)s
X-1 r (onments)s
Xf6 SF
X50 1685 p (The)s
X15 r (following)s
X15 r (tools)s
X16 r (are)s
X15 r (necessary)s
X15 r (to)s
X15 r (generate)s
X16 r (executables)s
X15 r (and)s
X15 r (to)s
X15 r (perform)s
X15 r (administrative)s
X16 r (tasks:)s
X144 1754 p 967 2 ru
X143 1829 p 2 75 ru
X177 1807 p (name)s
X341 1829 p 2 75 ru
X376 1807 p (requirements)s
X1110 1829 p 2 75 ru
X144 1832 p 967 2 ru
X143 1907 p 2 75 ru
X177 1884 p (make)s
X341 1907 p 2 75 ru
X376 1884 p (bundled)s
Xf17 SF
X15 r (make)s
Xf6 SF
X(,)s
X15 r (or)s
X15 r (GNU)s
Xf17 SF
X15 r (make)s
Xf6 SF
X(.)s
X1110 1907 p 2 75 ru
X143 1982 p 2 75 ru
X177 1960 p (cc)s
X341 1982 p 2 75 ru
X376 1960 p (bundled)s
Xf17 SF
X15 r (cc)s
Xf6 SF
X(,)s
X15 r (or)s
X15 r (GNU)s
Xf17 SF
X15 r (cc)s
Xf6 SF
X(.)s
X1110 1982 p 2 75 ru
X143 2057 p 2 75 ru
X177 2035 p (perl)s
X341 2057 p 2 75 ru
X376 2035 p (version)s
X15 r (4.0)s
X15 r (or)s
X15 r (later)s
X-2 r (.)s
X1110 2057 p 2 75 ru
X144 2060 p 967 2 ru
X144 2155 p (Basically)s
X15 r (any)s
X16 r (brain-damaged)s
Xf17 SF
X15 r (make)s
Xf6 SF
X15 r (should)s
X15 r (work.)s
X20 r (If)s
X16 r (it)s
X15 r (doesn't)s
X14 r (work,)s
X15 r (please)s
X15 r (let)s
X16 r (me)s
X15 r (know)s
X-3 r (.)s
X144 2235 p (If)s
X15 r (you)s
X15 r (are)s
X14 r (planning)s
X15 r (to)s
X15 r (make)s
Xf20 SF
X14 r (Mosaic/WWFS)s
Xf6 SF
X(,)s
X15 r (you)s
X15 r (will)s
X15 r (need)s
X14 r (Motif/X1)s
X-1 r (1)s
X14 r (libraries.)s
X20 r (Y)s
X-5 r (ou)s
X14 r (can)s
X14 r (grab)s
X50 2310 p (binaries)s
X14 r (from)s
Xf17 SF
X15 r (WWFS/binaries)s
Xf6 SF
X14 r (on)s
X15 r (WWFS)s
X14 r (and)s
X15 r (original)s
X14 r (Mosaic)s
X15 r (source)s
X14 r (from)s
Xf17 SF
X15 r (NCSA/Web/Mosaic-source)s
Xf6 SF
X50 2386 p (on)s
X15 r (WWFS.)s
X144 2466 p (If)s
X19 r (you)s
X19 r (are)s
X19 r (planning)s
X19 r (to)s
X20 r (hack)s
Xf17 SF
X19 r (wwalk)s
Xf6 SF
X(,)s
X20 r (a)s
X19 r (point-and-click)s
X19 r (style)s
X19 r (directory)s
X19 r (browser)s
X19 r (for)s
X19 r (the)s
X19 r (X)s
X19 r (W)s
X-1 r (indow)s
X50 2541 p (System,)s
X18 r (you)s
X18 r (need)s
X17 r (T)s
X-3 r (cl)s
X17 r (and)s
X17 r (Tk.)s
X28 r (Note)s
X17 r (that)s
X18 r (this)s
X17 r (stuff)s
X17 r (is)s
X17 r (no)s
X18 r (longer)s
X18 r (maintained)s
X17 r (up)s
X18 r (to)s
X17 r (date.)s
X28 r (Bunch)s
X17 r (of)s
X18 r (T)s
X-3 r (cl)s
X50 2617 p (stuff)s
X14 r (is)s
X15 r (available)s
X16 r (from)s
Xf17 SF
X15 r (tcl-tk)s
Xf6 SF
X15 r (on)s
X15 r (WWFS.)s
X144 2697 p (If)s
X17 r (you)s
X17 r (are)s
X18 r (willing)s
X17 r (to)s
X17 r (adapt,)s
X18 r (improve)s
X17 r (or)s
X17 r (port)s
X17 r (this)s
X18 r (software)s
X17 r (by)s
X17 r (yourself,)s
X18 r (I)s
X17 r (strongly)s
X17 r (recommend)s
X17 r (the)s
X50 2772 p (use)s
X16 r (of)s
X16 r (GNU)s
X16 r (software)s
X17 r (suite)s
X16 r (to)s
X16 r (facilitate)s
X16 r (development.)s
X23 r (If)s
X16 r (you)s
X17 r (are)s
X16 r (planning)s
X16 r (to)s
X16 r (modify)s
X16 r (the)s
X16 r (source)s
X16 r (code,)s
X50 2848 p (I)s
X15 r (recommend)s
X15 r (the)s
X16 r (use)s
X15 r (of)s
X15 r (additional)s
X15 r (tools)s
X16 r (which)s
X15 r (I)s
X15 r (have)s
X15 r (been)s
X15 r (using)s
X16 r (for)s
X15 r (day-to-day)s
X15 r (programming)s
X15 r (tasks:)s
X144 2917 p 1031 2 ru
X143 2992 p 2 75 ru
X177 2970 p (name)s
X455 2992 p 2 75 ru
X489 2970 p (description)s
X1174 2992 p 2 75 ru
X144 2995 p 1031 2 ru
X143 3070 p 2 75 ru
X177 3047 p (cextract)s
X455 3070 p 2 75 ru
X489 3047 p (C)s
X15 r (prototype)s
X15 r (extractor)s
X1174 3070 p 2 75 ru
X143 3145 p 2 75 ru
X177 3123 p (gdb)s
X455 3145 p 2 75 ru
X489 3123 p (GNU)s
X15 r (debugger)s
X1174 3145 p 2 75 ru
X143 3220 p 2 75 ru
X177 3198 p (lsof)s
X455 3220 p 2 75 ru
X489 3198 p (process)s
X15 r (\256le-table)s
X15 r (inspector)s
X1174 3220 p 2 75 ru
X143 3296 p 2 75 ru
X177 3273 p (malloclib)s
X455 3296 p 2 75 ru
X489 3273 p (malloc)s
X15 r (debugging)s
X15 r (library)s
X1174 3296 p 2 75 ru
X143 3371 p 2 75 ru
X177 3348 p (mkid)s
X455 3371 p 2 75 ru
X489 3348 p (source)s
X15 r (code)s
X15 r (indexing)s
X15 r (tool)s
X1174 3371 p 2 75 ru
X143 3446 p 2 75 ru
X177 3424 p (rpcsrc-4.0)s
X455 3446 p 2 75 ru
X489 3424 p (Sun)s
X15 r (RPC)s
X15 r (source)s
X1174 3446 p 2 75 ru
X144 3448 p 1031 2 ru
X144 3544 p (Other)s
X18 r (brand-new)s
X19 r (tools)s
X18 r (or)s
X19 r (commercial)s
X18 r (programming)s
X19 r (environments)s
X18 r (might)s
X18 r (be)s
X19 r (of)s
X18 r (great)s
X19 r (help.)s
X29 r (I)s
X19 r (am)s
X50 3619 p (very)s
X20 r (much)s
X20 r (interested)s
X20 r (to)s
X20 r (share)s
X19 r (any)s
X20 r (programming)s
X20 r (tips)s
X20 r (with)s
X20 r (other)s
X20 r (developers)s
X20 r (\(preferably)s
X20 r (via)s
X20 r (mailing)s
X50 3694 p (list\).)s
X1260 3846 p (7)s
XEP
X
X%%Page: 8 9
XBP
Xf6 SF
X50 66 p (8)s
Xf8 SF
X1603 r (CHAPTER)s
X15 r (2.)s
X35 r (INST)s
X-2 r (ALLA)s
X-3 r (TION)s
Xf13 SF
X50 232 p (2.2)s
X80 r (Planning)s
X20 r (server)s
X20 r (installation)s
Xf6 SF
X50 383 p (Now)s
X19 r (you)s
X19 r (must)s
X19 r (determine)s
X19 r (where)s
X19 r (to)s
X19 r (put)s
X19 r (related)s
X19 r (material.)s
X32 r (Y)s
X-5 r (ou)s
X18 r (need)s
X19 r (suf\256cient)s
X18 r (amount)s
X19 r (of)s
X19 r (storage)s
X19 r (be-)s
X50 458 p (cause)s
X17 r (our)s
X16 r (daemon)s
X17 r (cache)s
X16 r (accessed)s
X17 r (\256les.)s
X24 r (Necessary)s
X17 r (storage)s
X17 r (space)s
X16 r (varies)s
X17 r (depending)s
X17 r (on)s
X16 r (the)s
X17 r (number)s
X16 r (of)s
X50 534 p (users,)s
X15 r (user)s
X15 r (activity)s
X-3 r (,)s
X13 r (and)s
X15 r (granularity)s
X15 r (of)s
X14 r (cached)s
X15 r (\256les,)s
X15 r (but)s
X15 r (you)s
X14 r (can)s
X15 r (start)s
X15 r (with)s
X14 r (relatively)s
X15 r (small)s
X15 r (space)s
X15 r (\(e.g.,)s
X50 609 p (40Mbytes\))s
X18 r (and)s
X19 r (change)s
X18 r (the)s
X18 r (partition)s
X19 r (later)s
X-2 r (,)s
X19 r (when)s
X18 r (demands)s
X18 r (exceed)s
X19 r (supply)s
X-3 r (.)s
X28 r (Other)s
X19 r (extras,)s
X19 r (such)s
X18 r (as)s
X19 r (logs)s
X50 684 p (and)s
X15 r (maintenance)s
X15 r (scripts,)s
X16 r (do)s
X15 r (not)s
X15 r (occupy)s
X15 r (much)s
X16 r (space)s
X15 r (as)s
X15 r (compared)s
X15 r (with)s
X15 r (cache)s
X16 r (directories.)s
X144 766 p (If)s
X17 r (you)s
X18 r (have)s
X17 r (a)s
X17 r (relatively)s
X18 r (large)s
X16 r (empty)s
X17 r (partition)s
X18 r (available)s
X17 r (and)s
X17 r (you)s
X18 r (are)s
X17 r (planning)s
X17 r (to)s
X18 r (use)s
X17 r (WWFS)s
X17 r (reg-)s
X50 842 p (ularly)s
X-3 r (,)s
X20 r (it)s
X20 r (would)s
X19 r (be)s
X20 r (better)s
X20 r (to)s
X19 r (allocate)s
X20 r (the)s
X20 r (entire)s
X19 r (partition)s
X20 r (to)s
X20 r (WWFS,)s
X19 r (since)s
X20 r (cache)s
X20 r (occasionally)s
X19 r (grows)s
X50 917 p (quickly)s
X14 r (when)s
X13 r (users)s
X14 r (access)s
X13 r (WWFS)s
X14 r (in)s
X13 r (a)s
X14 r (sudden)s
X13 r (burst)s
Xf4 SF
X1305 895 p (1)s
Xf6 SF
X1330 917 p (.)s
X19 r (If)s
X14 r (you)s
X14 r (are)s
X13 r (planning)s
X14 r (to)s
X13 r (adopt)s
X14 r (this)s
X13 r (option,)s
X14 r (simply)s
Xf17 SF
X50 992 p (newfs)s
Xf6 SF
X14 r (it,)s
X14 r (create)s
X14 r (mountpoint)s
X14 r (and)s
Xf17 SF
X14 r (mount)s
Xf6 SF
X14 r (it)s
X14 r (as)s
X13 r (usual.)s
X20 r (No)s
X14 r (special)s
X14 r (operation)s
X14 r (is)s
X14 r (necessary)s
X14 r (since)s
X14 r (the)s
X13 r (caching)s
X50 1067 p (mechanism)s
X15 r (is)s
X15 r (built)s
X16 r (on)s
X15 r (top)s
X15 r (of)s
X15 r (UNIX)s
X16 r (\256le)s
X15 r (system.)s
X144 1149 p (WWFS)s
X11 r (requires)s
X11 r (a)s
X11 r (directory)s
X11 r (tree)s
X10 r (to)s
X11 r (store)s
X11 r (various)s
X11 r (information.)s
X19 r (Name)s
X11 r (the)s
X11 r (top)s
X11 r (directory)s
X10 r (appropriately)s
X50 1225 p (\(e.g.,)s
Xf17 SF
X20 r (/var/wwfs)s
Xf6 SF
X(\))s
X19 r (and)s
X19 r (make)s
X19 r (sure)s
X19 r (it)s
X19 r (is)s
X19 r (writable)s
X19 r (by)s
X19 r (root.)s
X31 r (It)s
X19 r (can)s
X19 r (reside)s
X19 r (either)s
X19 r (on)s
X19 r (a)s
X19 r (local)s
X19 r (disk)s
X19 r (or)s
X19 r (on)s
X19 r (an)s
X50 1300 p (NFS-mounted)s
X15 r (disk,)s
X15 r (but)s
X16 r (I)s
X15 r (recommend)s
X15 r (the)s
X15 r (use)s
X16 r (of)s
X15 r (local)s
X15 r (disk)s
X15 r (for)s
X15 r (better)s
X16 r (reliability)s
X15 r (and)s
X15 r (performance.)s
Xf13 SF
X50 1535 p (2.3)s
X80 r (Installing)s
X20 r (the)s
X20 r (Cluster)s
X19 r (Server)s
Xf6 SF
X50 1686 p (The)s
Xf17 SF
X15 r (csd)s
Xf6 SF
X15 r (included)s
X16 r (in)s
X15 r (this)s
X15 r (release)s
X15 r (is)s
X16 r (known)s
X15 r (to)s
X15 r (work)s
X15 r (on)s
X15 r (the)s
X16 r (following)s
X15 r (platforms:)s
X144 1761 p 1012 2 ru
X143 1836 p 2 75 ru
X177 1814 p (hardware)s
X626 1836 p 2 75 ru
X660 1814 p (operating)s
X15 r (system)s
X1155 1836 p 2 75 ru
X144 1838 p 1012 2 ru
X143 1914 p 2 75 ru
X177 1891 p (Sun)s
X16 r ([34])s
X626 1914 p 2 75 ru
X660 1891 p (Sun)s
X15 r (OS)s
X15 r (4.1.[123])s
X1155 1914 p 2 75 ru
X143 1989 p 2 75 ru
X177 1966 p (DECstation)s
X626 1989 p 2 75 ru
X660 1966 p (Ultrix)s
X15 r (4.3)s
X1155 1989 p 2 75 ru
X143 2064 p 2 75 ru
X177 2042 p (Gateway)s
X16 r (2000)s
X626 2064 p 2 75 ru
X660 2042 p (BSD/386)s
X1155 2064 p 2 75 ru
X143 2139 p 2 75 ru
X177 2117 p (OMRON)s
X16 r (Luna)s
X15 r (2)s
X626 2139 p 2 75 ru
X660 2117 p (BSD)s
X15 r (/)s
X15 r (Mach)s
X16 r (2.5)s
X1155 2139 p 2 75 ru
X143 2215 p 2 75 ru
X177 2192 p (SUMI)s
X16 r (ST)s
X-4 r (A)s
X-7 r (TION)s
X626 2215 p 2 75 ru
X660 2192 p (RISC/os)s
X15 r (4.x)s
X1155 2215 p 2 75 ru
X143 2290 p 2 75 ru
X177 2267 p (Sony)s
X16 r (NEWS)s
X626 2290 p 2 75 ru
X660 2267 p (NEWS-OS)s
X15 r (4.[012])s
X1155 2290 p 2 75 ru
X144 2292 p 1012 2 ru
X144 2392 p (Basically)s
X15 r (any)s
X16 r (4.3BSD,)s
X15 r (4.4BSD)s
X15 r (or)s
X15 r (OSF/1)s
X15 r (machines)s
X16 r (is)s
X15 r (OK)s
X15 r (\(well,)s
X15 r (supposed)s
X16 r (to)s
X15 r (be\).)s
X144 2474 p (This)s
X22 r (software)s
X23 r (is)s
X22 r (not)s
X22 r (tested)s
X22 r (on)s
X23 r (other)s
X22 r (platforms.)s
X41 r (Port)s
X22 r (to)s
X23 r (other)s
X22 r (platforms)s
X22 r (will)s
X22 r (be)s
X23 r (easy)s
X22 r (however)s
X-1 r (,)s
X50 2550 p (if)s
X20 r (the)s
X19 r (target)s
X19 r (platform)s
X20 r (implements)s
X19 r (Sun)s
X20 r (NFS,)s
X19 r (the)s
X20 r (Berkeley)s
X20 r (family)s
X19 r (of)s
X20 r (\256lesystems)s
X20 r (\(FFS)s
X19 r (or)s
X20 r (FFFS\))s
X20 r (and)s
X50 2625 p (4.[34]BSD)s
X11 r (system)s
X11 r (calls.)s
X19 r (I)s
X11 r (haven')s
X-1 r (t)s
X10 r (made)s
X11 r (further)s
X11 r (attempt)s
X11 r (to)s
X11 r (port)s
X11 r (this)s
X11 r (software)s
X11 r (to)s
X11 r (more)s
X11 r (esotelic)s
X11 r (platforms)s
X50 2700 p (\(largely)s
X12 r (due)s
X14 r (to)s
X14 r (lack)s
X13 r (of)s
X14 r (motivation)s
X13 r (for)s
X14 r (it)s
X13 r (and)s
X14 r (familiarity)s
X14 r (with)s
X13 r (unseen)s
X14 r (beasts\),)s
X14 r (but)s
X13 r (I)s
X14 r (hope)s
X13 r (we)s
X14 r (can)s
X13 r (support)s
X50 2775 p (many)s
X15 r (more)s
X15 r (platforms)s
X16 r (without)s
X15 r (pain.)s
Xf11 SF
X50 2982 p (2.3.1)s
X66 r (Edit)s
Xf12 SF
X17 r (csd.conf)s
Xf11 SF
X17 r (and)s
Xf12 SF
X16 r (Makefile.config)s
Xf6 SF
X50 3111 p (If)s
X14 r (you)s
X13 r (are)s
X14 r (using)s
X13 r (one)s
X14 r (of)s
X13 r (these)s
X14 r (supported)s
X13 r (platforms,)s
X14 r (skip)s
X14 r (to)s
X13 r (the)s
X14 r (next)s
X13 r (paragraph.)s
X20 r (If)s
X13 r (you)s
X14 r (are)s
X13 r (not,)s
X14 r (then)s
X14 r (read)s
X50 3186 p (comments)s
X13 r (in)s
X14 r (the)s
Xf17 SF
X13 r (config/Makefile.config)s
Xf6 SF
X13 r (and)s
X14 r (edit)s
X13 r (\257ags)s
X13 r (accordingly)s
X-3 r (.)s
X19 r (There)s
X13 r (are)s
X13 r (lots)s
X14 r (of)s
X13 r (con\256guration)s
X50 3262 p (\256les)s
X16 r (in)s
X16 r (the)s
Xf17 SF
X15 r (config/)s
Xf6 SF
X16 r (directory)s
X-3 r (,)s
X15 r (which)s
X16 r (has)s
X16 r (been)s
X15 r (mostly)s
X16 r (stolen)s
X16 r (from)s
X16 r (the)s
Xf17 SF
X15 r (amd)s
Xf6 SF
X(,)s
X16 r (the)s
X16 r (4.4)s
X16 r (BSD)s
X15 r (automounter)s
X-2 r (.)s
X50 3337 p (If)s
X12 r (your)s
X12 r (platform)s
X12 r (has)s
X12 r (been)s
X12 r (supported)s
X12 r (by)s
X12 r (the)s
Xf17 SF
X12 r (amd)s
Xf6 SF
X(,)s
X13 r (you)s
X12 r (can)s
X12 r (avoid)s
X12 r (re-inventing)s
X12 r (the)s
X12 r (wheel)s
X12 r (by)s
X12 r (starting)s
X12 r (there.)s
X144 3419 p (Next,)s
X22 r (modify)s
Xf17 SF
X20 r (config/csd.conf)s
Xf6 SF
X20 r (to)s
X20 r (re\257ect)s
X20 r (your)s
X21 r (decision)s
X20 r (in)s
X20 r (Section)s
X20 r (2.2.)s
X36 r (Let)s
X20 r (us)s
X20 r (call)s
X20 r (it)s
Xf17 SF
X21 r (WWFSDIR)s
Xf6 SF
X(.)s
Xf17 SF
X50 3494 p (csd.conf)s
Xf6 SF
X15 r (is)s
X15 r (referenced)s
X16 r (by)s
X15 r (various)s
X15 r (utilities)s
X15 r (including)s
X16 r (make,)s
X15 r (shell)s
X15 r (scripts,)s
X15 r (perl)s
X15 r (scripts)s
X16 r (and)s
X15 r (tcl)s
X15 r (scripts.)s
X50 3575 p 980 2 ru
Xf3 SF
X120 3612 p (1)s
Xf5 SF
X140 3633 p (Also,)s
X14 r (WWFS)s
X13 r (has)s
X14 r (had)s
X14 r (a)s
X13 r (strange)s
X14 r (bug)s
X14 r (which)s
X13 r (\256lled)s
X14 r (up)s
X14 r (entire)s
X13 r (partition,)s
X14 r (although)s
X14 r (it)s
X14 r (was)s
X13 r (known)s
X14 r (to)s
X14 r (be)s
X13 r (harmless)s
X14 r (and)s
X14 r (is)s
X13 r (now)s
X50 3694 p (exterminated.)s
XEP
X
X%%Page: 9 10
XBP
Xf8 SF
X50 66 p (2.3.)s
X35 r (INST)s
X-2 r (ALLING)s
X14 r (THE)s
X16 r (CLUSTER)s
X15 r (SERVER)s
Xf6 SF
X1249 r (9)s
Xf11 SF
X50 232 p (2.3.2)s
X66 r (Just)s
X17 r (type)s
Xf12 SF
X17 r (make)s
Xf6 SF
X50 348 p (At)s
X14 r (the)s
X14 r (top)s
X14 r (directory)s
X14 r (of)s
X14 r (the)s
X14 r (distribution,)s
X15 r (just)s
X14 r (type)s
Xf17 SF
X14 r (make)s
Xf6 SF
X(.)s
X19 r (It)s
X15 r (automagically)s
X14 r (guesses)s
X14 r (your)s
X14 r (architecture)s
X14 r (and)s
X50 423 p (operating)s
X15 r (system.)s
Xf17 SF
X144 498 p (make)s
Xf6 SF
X11 r (will)s
X11 r (start)s
X11 r (compilation,)s
X11 r (and)s
X11 r (eventually)s
X11 r (generate)s
X11 r (the)s
X11 r (server)s
X11 r (program)s
X11 r (\()s
Xf17 SF
X(csd)s
Xf6 SF
X(\))s
X10 r (and)s
X11 r (client)s
X11 r (commands)s
X50 574 p (\()s
Xf17 SF
X(wwmount)s
Xf6 SF
X18 r (and)s
Xf17 SF
X18 r (wwumount)s
Xf6 SF
X(\),)s
X18 r (among)s
X18 r (other)s
X18 r (things.)s
X28 r (Y)s
X-5 r (ou)s
X17 r (can)s
X18 r (ignore)s
X18 r (a)s
X18 r (lot)s
X18 r (of)s
X18 r (warnings)s
X18 r (during)s
X18 r (compilation)s
X50 649 p (procedure,)s
X15 r (especially)s
X15 r (if)s
X16 r (your)s
X15 r (compiler)s
X15 r (conform)s
X15 r (to)s
X16 r (the)s
X15 r (ANSI)s
X15 r (standard.)s
X144 724 p (NOTE:)s
X17 r (It')s
X-2 r (s)s
X16 r (not)s
X17 r (desirable)s
X16 r (to)s
X17 r (hand-edit)s
X17 r (C)s
X17 r (\256les)s
X17 r (generated)s
X17 r (by)s
Xf17 SF
X17 r (rpcgen)s
Xf6 SF
X(.)s
X25 r (If)s
X17 r (you)s
X17 r (have)s
X17 r (encountered)s
X17 r (any)s
X50 800 p (dif\256culty)s
X15 r (with)s
X15 r (compiling)s
Xf17 SF
X16 r (*_prot_*.c)s
Xf6 SF
X16 r (\256les,)s
X16 r (you)s
X15 r (must)s
X16 r (regenerate)s
X16 r (these)s
X16 r (\256les)s
X15 r (using)s
Xf17 SF
X16 r (rpcgen)s
Xf6 SF
X(.)s
X22 r (T)s
X-3 r (o)s
X14 r (do)s
X16 r (this,)s
X50 875 p (step)s
X15 r (down)s
X15 r (to)s
Xf17 SF
X16 r (rpc/)s
Xf6 SF
X15 r (then)s
X15 r (just)s
X15 r (type)s
Xf17 SF
X16 r (make)s
Xf6 SF
X(.)s
Xf11 SF
X50 1039 p (2.3.3)s
X66 r (Edit)s
Xf12 SF
X17 r (/etc/passwd)s
Xf6 SF
X50 1156 p (If)s
X17 r (this)s
X16 r (is)s
X17 r (the)s
X16 r (\256rst)s
X17 r (time)s
X16 r (for)s
X17 r (your)s
X16 r (server)s
X17 r (installation,)s
X17 r (you)s
X16 r (must)s
X17 r (create)s
X16 r (a)s
X17 r (local)s
X16 r (account)s
X17 r (with)s
X16 r (user)s
Xf20 SF
X17 r (id)s
Xf17 SF
X16 r (wwfs)s
Xf6 SF
X50 1231 p (and)s
X16 r (group)s
Xf20 SF
X16 r (id)s
Xf17 SF
X15 r (operator)s
Xf6 SF
X16 r (\(or)s
X16 r (its)s
X16 r (counterpart)s
X15 r (in)s
X16 r (your)s
X16 r (system\),)s
X16 r (at)s
X16 r (the)s
X15 r (machine)s
X16 r (designated)s
X16 r (as)s
X16 r (your)s
X15 r (cluster)s
X50 1306 p (server)s
X-1 r (,)s
X10 r (since)s
Xf17 SF
X11 r (csd)s
Xf6 SF
X11 r (operates)s
X11 r (under)s
X11 r (this)s
X11 r (account,)s
X12 r (and)s
X11 r (since)s
X11 r (all)s
X11 r (\256les)s
X11 r (and)s
X11 r (directories)s
X11 r (beneath)s
Xf17 SF
X11 r (WWFSDIR)s
Xf6 SF
X11 r (will)s
X10 r (be)s
X50 1381 p (owned)s
X14 r (by)s
X15 r (the)s
X14 r (account.)s
X21 r (Choice)s
X14 r (of)s
X15 r (user)s
Xf20 SF
X14 r (id)s
Xf6 SF
X14 r (and)s
X15 r (group)s
Xf20 SF
X14 r (id)s
Xf6 SF
X15 r (is)s
X14 r (arbitrary)s
X-2 r (,)s
X13 r (but)s
X15 r (you)s
X14 r (must)s
X15 r (choose)s
Xf20 SF
X14 r (id)s
Xf6 SF
X(s)s
X15 r (carefully)s
X50 1457 p (so)s
X16 r (that)s
X17 r (other)s
X16 r (\256lesystems)s
X17 r (can)s
X16 r (be)s
X16 r (protected)s
X17 r (from)s
X16 r (unexpected)s
X17 r (behaviour)s
X16 r (of)s
Xf17 SF
X16 r (csd)s
Xf6 SF
X17 r (\(which)s
X16 r (is)s
X16 r (very)s
X17 r (unlikely)s
X50 1532 p (though,)s
X15 r (but)s
X15 r (serious)s
X16 r (admins)s
X15 r (wants)s
X15 r (\256rewall\).)s
X20 r (An)s
X16 r (excerpt)s
X15 r (from)s
X15 r (our)s
X15 r (password)s
X15 r (database)s
X16 r (follows.)s
Xf17 SF
X50 1649 p (wwfs:*:40:5:WWFS)s
X29 r (manager:/var/wwfs:/bin/csh)s
Xf6 SF
X144 1766 p (Since)s
Xf17 SF
X13 r (csd)s
Xf6 SF
X14 r (uses)s
Xf17 SF
X13 r (wwfs@name.of.this.machine)s
Xf6 SF
X14 r (for)s
X13 r (e-mail)s
X13 r (address,)s
X14 r (this)s
X13 r (account)s
X14 r (should)s
X13 r (be)s
X13 r (reachable)s
X50 1841 p (by)s
X16 r (e-mail)s
X17 r (and)s
X16 r (every)s
X17 r (received)s
X16 r (message)s
X16 r (should)s
X17 r (be)s
X16 r (forwarded)s
X16 r (to)s
X17 r (the)s
X16 r (administrator)s
X-2 r (.)s
X23 r (The)s
X16 r (e-mail)s
X16 r (address)s
X50 1916 p (has)s
X15 r (been)s
X15 r (used)s
X16 r (for)s
X15 r (statistics)s
X15 r (reports)s
X15 r (and)s
X16 r (password)s
X15 r (\(contact)s
X15 r (address,)s
X15 r (that)s
X15 r (is\))s
X16 r (for)s
X15 r (anonymous)s
X15 r (ftp)s
X15 r (login.)s
Xf11 SF
X50 2081 p (2.3.4)s
Xf12 SF
X66 r (make)s
X40 r (install-server)s
Xf6 SF
X50 2197 p (As)s
X15 r (root,)s
X15 r (go)s
X16 r (to)s
X15 r (the)s
X15 r (top)s
X15 r (directory)s
X16 r (of)s
X15 r (the)s
X15 r (distribution,)s
X15 r (then)s
X15 r (type:)s
Xf17 SF
X50 2314 p (make)s
X29 r (install-server)s
Xf6 SF
X50 2431 p (This)s
X13 r (will)s
X14 r (install)s
X13 r (the)s
Xf17 SF
X13 r (csd)s
Xf6 SF
X14 r (and)s
X13 r (shell/perl)s
X13 r (scripts)s
X14 r (appropriately)s
X-3 r (,)s
X12 r (creating)s
X14 r (the)s
X13 r (following)s
X13 r (directories)s
X14 r (beneath)s
Xf17 SF
X50 2506 p (WWFSDIR)s
Xf6 SF
X(:)s
Xf1 SF
X141 2636 p (\017)s
Xf17 SF
X31 r (bin/)s
Xf6 SF
X15 r (\320)s
X15 r (executables)s
X16 r (are)s
X15 r (installed)s
X15 r (here.)s
Xf1 SF
X141 2758 p (\017)s
Xf17 SF
X31 r (cache/)s
Xf6 SF
X15 r (\320)s
X15 r (cached)s
X16 r (information)s
X15 r (is)s
X15 r (stored)s
X15 r (here.)s
Xf1 SF
X141 2880 p (\017)s
Xf17 SF
X31 r (etc/)s
Xf6 SF
X15 r (\320)s
X15 r (con\256guration)s
X16 r (\256les)s
X15 r (for)s
X15 r (perl)s
X15 r (scripts.)s
Xf1 SF
X141 3002 p (\017)s
Xf17 SF
X31 r (lib/)s
Xf6 SF
X15 r (\320)s
X15 r (for)s
X16 r (library)s
X15 r (\256les)s
X15 r (used)s
X15 r (by)s
X15 r (perl)s
X16 r (scripts.)s
Xf1 SF
X141 3123 p (\017)s
Xf17 SF
X31 r (log/)s
Xf6 SF
X15 r (\320)s
X15 r (logs)s
X16 r (and)s
X15 r (event)s
X15 r (traces)s
X15 r (go)s
X15 r (here.)s
Xf1 SF
X141 3245 p (\017)s
Xf17 SF
X31 r (stale/)s
Xf6 SF
X15 r (\320)s
X15 r (stale)s
X16 r (\256les)s
X15 r (and)s
X15 r (directories)s
X15 r (are)s
X15 r (moved)s
X16 r (here.)s
Xf1 SF
X141 3367 p (\017)s
Xf17 SF
X31 r (ongoing/)s
Xf6 SF
X15 r (\320)s
X15 r (all)s
X16 r (interim)s
X15 r (data,)s
X15 r (including)s
X15 r (\256les,)s
X15 r (are)s
X16 r (stored)s
X15 r (here.)s
Xf1 SF
X141 3489 p (\017)s
Xf17 SF
X31 r (vol/)s
Xf6 SF
X15 r (\320)s
X15 r (volume)s
X16 r (\256les)s
X15 r (are)s
X15 r (stored)s
X15 r (here.)s
X144 3619 p (Now)s
X18 r (you)s
X17 r (\256nished)s
X17 r (server)s
X18 r (installation)s
X17 r (procedure.)s
X27 r (Please)s
X18 r (read)s
X17 r (Sections)s
X18 r (3.1)s
X17 r (and)s
X18 r (3.4)s
X17 r (for)s
X18 r (starting)s
X17 r (up)s
X50 3694 p (the)s
X15 r (Cluster)s
X15 r (Server)s
X-2 r (.)s
XEP
X
X%%Page: 10 11
XBP
Xf6 SF
X50 66 p (10)s
Xf8 SF
X1572 r (CHAPTER)s
X15 r (2.)s
X36 r (INST)s
X-3 r (ALLA)s
X-3 r (TION)s
Xf13 SF
X50 232 p (2.4)s
X80 r (Installing)s
X20 r (mount)s
X20 r (commands)s
Xf6 SF
X50 370 p (Now)s
X23 r (you)s
X22 r (compile)s
Xf17 SF
X23 r (wwmount)s
Xf6 SF
X22 r (and)s
Xf17 SF
X23 r (wwumount)s
Xf6 SF
X23 r (for)s
X22 r (use)s
X23 r (on)s
X22 r (your)s
X23 r (workstation)s
X23 r (clusters.)s
X42 r (Or)s
X23 r (you)s
X22 r (can)s
X23 r (grab)s
X50 445 p (binaries)s
X15 r (from)s
Xf17 SF
X15 r (WWFS/binaries)s
Xf6 SF
X16 r (on)s
X15 r (WWFS.)s
X144 520 p (The)s
X18 r (mount)s
X17 r (commands)s
X18 r (is)s
X17 r (known)s
X17 r (to)s
X18 r (work)s
X17 r (on)s
X18 r (BSD/386)s
X17 r (1,)s
X18 r (SunOS)s
X18 r (4,)s
X18 r (Ultrix)s
X17 r (4,)s
X18 r (OSF/1)s
X18 r (1.3,)s
X18 r (IRIX)s
X17 r (4,)s
X50 596 p (HP-UX)s
X15 r (8,)s
X15 r (NEWS-OS)s
X15 r (4,)s
X15 r (RISC/os)s
X15 r (4,)s
X15 r (NeXT)s
X15 r (OS,)s
X15 r (and)s
X15 r (Luna)s
X15 r (family)s
X15 r (of)s
X15 r (operating)s
X15 r (systems.)s
X20 r (Bascially)s
X15 r (any)s
X50 671 p (4.3BSD,)s
X13 r (4.4BSD)s
X13 r (or)s
X14 r (OSF/1)s
X13 r (machines)s
X13 r (should)s
X13 r (be)s
X13 r (OK)s
X14 r (\(say)s
X13 r (V)s
X-7 r (AX)s
X12 r (or)s
X13 r (T)s
X-3 r (ahoe)s
X12 r (which)s
X14 r (I)s
X13 r (don't)s
X12 r (have)s
X13 r (access)s
X13 r (to\).)s
X50 746 p (Also,)s
X19 r (it)s
X17 r (is)s
X18 r (relatively)s
X18 r (easy)s
X18 r (to)s
X18 r (port)s
X18 r (the)s
X18 r (client)s
X18 r (software)s
X17 r (to)s
X18 r (non-BSD)s
X18 r (platforms.)s
X28 r (I)s
X18 r (would)s
X18 r (like)s
X18 r (to)s
X18 r (know)s
X18 r (if)s
X50 821 p (it)s
X16 r (runs)s
X16 r (on)s
X16 r (Solaris)s
X17 r (2)s
X16 r (and)s
X16 r (NEWS-OS)s
X16 r (6;)s
X17 r (please)s
X16 r (let)s
X16 r (me)s
X16 r (know)s
X16 r (if)s
X16 r (it)s
X17 r (runs)s
X16 r (on)s
X16 r (one)s
X16 r (of)s
X16 r (these)s
X16 r (\(and)s
X17 r (other)s
X16 r (exotic)s
X50 897 p (operating)s
X15 r (systems)s
X15 r (:-\).)s
X144 972 p (NOTE:)s
X18 r (BSD/386)s
X18 r (and)s
X18 r (possibly)s
X18 r (other)s
X18 r (operating)s
X18 r (systems)s
X18 r (with)s
X18 r ('Guelph)s
X17 r (NFS')s
X18 r (may)s
X18 r (suffer)s
X17 r (from)s
X18 r (the)s
X50 1047 p (symptom)s
X16 r (that)s
X16 r (previously)s
X17 r (uncached)s
X16 r (directories)s
X16 r (remain)s
X16 r (empty)s
X16 r (even)s
X17 r (when)s
X16 r (FTP)s
X16 r (transfer)s
X16 r (completes)s
X16 r (and)s
X50 1122 p (directories)s
X15 r (get)s
X14 r (\256lled.)s
X20 r (I)s
X15 r (don')s
X-1 r (t)s
X14 r (have)s
X14 r (any)s
X15 r (smart)s
X14 r (idea)s
X15 r (on)s
X14 r (how)s
X15 r (to)s
X14 r (\256x)s
X15 r (it)s
X14 r (except)s
X15 r (modifying)s
X15 r (the)s
X14 r (BSD)s
X15 r (kernel.)s
X20 r (I)s
X50 1198 p (hope)s
X15 r (4.4BSD)s
X15 r (have)s
X16 r (\256xed)s
X15 r (this)s
X15 r (bug.)s
X144 1273 p (NOTE:)s
X15 r (Luna2/Mach)s
X16 r (users)s
X15 r (must)s
X15 r (steal)s
Xf17 SF
X15 r (mount.o)s
Xf6 SF
X15 r (from)s
X16 r (Luna/UniOS-B)s
Xf17 SF
X15 r (libc.a)s
Xf6 SF
X(.)s
X144 1348 p (Y)s
X-5 r (ou)s
X17 r (must)s
X18 r (modify)s
Xf17 SF
X19 r (config/wwfs.conf)s
Xf6 SF
X18 r (accordingly)s
X-3 r (.)s
X28 r (It)s
X19 r (is)s
X18 r (referenced)s
X18 r (by)s
X18 r (various)s
X19 r (utilities)s
X18 r (including)s
X50 1424 p (shell)s
X15 r (scripts,)s
X15 r (perl)s
X16 r (scripts)s
X15 r (and)s
X15 r (tcl)s
X15 r (scripts.)s
X144 1499 p (Y)s
X-5 r (ou)s
X14 r (may)s
X15 r (need)s
X16 r (to)s
X15 r (edit)s
Xf17 SF
X15 r (config/Makefile.config)s
Xf6 SF
X15 r (and)s
X16 r (correctly)s
X15 r (set)s
X15 r (the)s
X15 r (following)s
X15 r (\257ags.)s
X144 1553 p 1108 2 ru
X143 1628 p 2 75 ru
X177 1606 p (name)s
X384 1628 p 2 75 ru
X418 1606 p (description)s
X1251 1628 p 2 75 ru
X144 1630 p 1108 2 ru
X143 1706 p 2 75 ru
Xf17 SF
X177 1683 p (ETCDIR)s
X384 1706 p 2 75 ru
X418 1683 p (wwmount)s
Xf6 SF
X15 r (and)s
Xf17 SF
X15 r (wwumount)s
Xf6 SF
X16 r (goes)s
X15 r (here)s
X1251 1706 p 2 75 ru
X143 1781 p 2 75 ru
Xf17 SF
X177 1758 p (LIBDIR)s
X384 1781 p 2 75 ru
X418 1758 p (libww.a)s
Xf6 SF
X15 r (goes)s
X15 r (here)s
X1251 1781 p 2 75 ru
X143 1856 p 2 75 ru
Xf17 SF
X177 1834 p (INCDIR)s
X384 1856 p 2 75 ru
X418 1834 p (libww.h)s
Xf6 SF
X15 r (goes)s
X15 r (here)s
X1251 1856 p 2 75 ru
X144 1858 p 1108 2 ru
X144 1938 p (Just)s
X17 r (type)s
Xf17 SF
X16 r (make)s
X29 r (install-client)s
Xf6 SF
X17 r (then)s
X16 r (it)s
X17 r (will)s
X16 r (install)s
Xf17 SF
X17 r (/etc/wwfs.conf)s
Xf6 SF
X(,)s
X17 r (mount)s
X16 r (commands,)s
X17 r (libraries)s
X50 2014 p (and)s
X15 r (header)s
X15 r (\256les.)s
XEP
X
X%%Page: 11 12
XBP
Xf19 SF
X50 647 p (Chapter)s
X29 r (3)s
Xf18 SF
X50 924 p (Administration)s
Xf6 SF
X50 1221 p (This)s
X15 r (chapter)s
X15 r (is)s
X15 r (written)s
X15 r (for)s
X15 r (the)s
X15 r (administrator)s
X15 r (of)s
X15 r (the)s
X15 r (Cluster)s
X15 r (Server)s
X15 r (\()s
Xf17 SF
X(csd)s
Xf6 SF
X(\).)s
X21 r (Please)s
X15 r (read)s
X15 r (Sections)s
X15 r (3.1)s
X15 r (and)s
X50 1297 p (3.4)s
X15 r (for)s
X15 r (starting)s
X16 r (up)s
Xf17 SF
X15 r (csd)s
Xf6 SF
X(.)s
Xf13 SF
X50 1494 p (3.1)s
X80 r (Server)s
X20 r (administration)s
Xf6 SF
X50 1633 p (The)s
X19 r (Cluster)s
X18 r (Server)s
X-1 r (,)s
Xf17 SF
X18 r (csd)s
Xf6 SF
X(,)s
X20 r (can)s
X19 r (be)s
X18 r (restarted)s
X19 r (anytime.)s
X30 r (Basically)s
X-2 r (,)s
X18 r (there)s
X19 r (is)s
X18 r (no)s
X19 r (loss)s
X19 r (of)s
X18 r (information)s
X19 r (due)s
X19 r (to)s
X50 1708 p (termination,)s
X14 r (since)s
X14 r (cached)s
X15 r (information)s
X14 r (is)s
X14 r (kept)s
X14 r (on)s
X14 r (the)s
X14 r (disk.)s
X20 r (Y)s
X-5 r (ou)s
X13 r (should)s
X14 r (be)s
X14 r (careful)s
X15 r (however)s
X-2 r (,)s
X13 r (since)s
X15 r (there)s
X50 1783 p (might)s
X15 r (be)s
X15 r (ongoing)s
X16 r (\256le)s
X15 r (transfer)s
X-2 r (,)s
X15 r (and)s
X15 r (there)s
X15 r (might)s
X15 r (be)s
X16 r (some)s
X15 r (users)s
X15 r (accessing)s
X15 r (WWFS.)s
Xf11 SF
X50 1952 p (Starting)s
X17 r (server)s
X16 r (process)s
Xf6 SF
X50 2069 p (T)s
X-3 r (o)s
X21 r (start)s
X23 r (the)s
X22 r (server)s
X23 r (process,)s
X24 r (become)s
X23 r (superuser)s
X22 r (and)s
X23 r (just)s
X22 r (type)s
Xf17 SF
X23 r (csd-nanny)s
Xf6 SF
X22 r (to)s
X23 r (start)s
Xf17 SF
X23 r (csd)s
Xf6 SF
X(.)s
X42 r (\(presumably)s
X50 2144 p (installed)s
X15 r (at)s
Xf17 SF
X15 r (WWFSDIR/bin)s
Xf6 SF
X(\).)s
X144 2220 p (NOTE:)s
X13 r (WWFS)s
X13 r (provides)s
X13 r (non-stop)s
X14 r (operation)s
X13 r (with)s
Xf17 SF
X13 r (csd-nanny)s
Xf6 SF
X(,)s
X13 r (an)s
X13 r (iterative)s
X14 r (and)s
X13 r (automatic)s
X13 r (debugger)s
X50 2295 p (front-end)s
X21 r (speci\256cally)s
X21 r (written)s
X21 r (for)s
X21 r (non-stop)s
X21 r (programs)s
X21 r (such)s
X21 r (as)s
Xf17 SF
X21 r (csd)s
Xf6 SF
X(.)s
Xf17 SF
X38 r (csd-nanny)s
Xf6 SF
X21 r (is)s
X21 r (included)s
X21 r (in)s
Xf17 SF
X21 r (saps/)s
Xf6 SF
X50 2370 p (directory)s
X16 r (of)s
X15 r (this)s
X16 r (distribution.)s
X22 r (For)s
X15 r (more)s
X16 r (information)s
X15 r (on)s
Xf17 SF
X16 r (csd-nanny)s
Xf6 SF
X(,)s
X16 r (read)s
X16 r (the)s
X15 r (source,)s
X16 r (which)s
X16 r (is)s
X15 r (actually)s
X50 2446 p (a)s
X15 r (small)s
X15 r (perl)s
X16 r (script)s
X15 r (and)s
X15 r (is)s
X15 r (well-documented.)s
Xf11 SF
X50 2614 p (T)s
X-5 r (erminating)s
X15 r (server)s
X17 r (process)s
Xf17 SF
X50 2731 p (csd)s
Xf6 SF
X19 r (can)s
X18 r (be)s
X19 r (killed)s
X19 r (just)s
X19 r (as)s
X18 r (other)s
X19 r (daemon)s
X19 r (processes.)s
X31 r (Y)s
X-5 r (ou)s
X17 r (can)s
X19 r (use)s
X19 r (either)s
Xf17 SF
X18 r (SIGINT)s
Xf6 SF
X(,)s
Xf17 SF
X19 r (SIGTERM)s
Xf6 SF
X19 r (or)s
Xf17 SF
X19 r (SIGKILL)s
Xf6 SF
X(.)s
X50 2806 p (T)s
X-3 r (ermination)s
X10 r (is)s
X12 r (logged)s
X12 r (as)s
X12 r (such,)s
X12 r (using)s
Xf17 SF
X12 r (syslog)s
Xf6 SF
X11 r (facility)s
X-3 r (.)s
Xf17 SF
X19 r (csd-nanny)s
Xf6 SF
X11 r (detects)s
X12 r (termination)s
X12 r (and)s
X11 r (automatically)s
X50 2882 p (restarts)s
Xf17 SF
X15 r (csd)s
Xf6 SF
X(.)s
X144 2957 p (If)s
X11 r (you)s
X12 r (really)s
X11 r (want)s
X12 r (to)s
X11 r (stop)s
Xf17 SF
X11 r (csd)s
Xf6 SF
X(,)s
X13 r (\256rst)s
X11 r (kill)s
Xf17 SF
X11 r (csd-nanny)s
Xf6 SF
X12 r (then)s
Xf17 SF
X11 r (csd)s
Xf6 SF
X(.)s
X19 r (But)s
X11 r (beware:)s
X19 r (if)s
X11 r (someone)s
X12 r (was)s
X11 r (accessing)s
X50 3032 p (WWFS)s
X11 r (when)s
X10 r (you)s
X11 r (stopped)s
X10 r (the)s
X11 r (daemon,)s
X11 r (his)s
X11 r (shell)s
X11 r (\(or)s
X10 r (other)s
X11 r (accessing)s
X10 r (processes,)s
X12 r (say)s
X10 r (Emacs\))s
X11 r (will)s
X11 r (become)s
X50 3108 p (frozen.)s
X20 r (This)s
X15 r (is)s
X16 r (normal)s
X15 r (NFS)s
X15 r (behaviour)s
X15 r (and)s
X16 r (not)s
X15 r (a)s
X15 r (bug)s
X15 r (in)s
X15 r (WWFS.)s
Xf11 SF
X50 3276 p (Managing)s
X17 r (cache)s
Xf6 SF
X50 3393 p (Currently)s
X-3 r (,)s
Xf17 SF
X18 r (csd)s
Xf6 SF
X19 r (does)s
X19 r (not)s
X18 r (reclaim)s
X19 r (secondary)s
X19 r (storage)s
X18 r (by)s
X19 r (itself.)s
X30 r (The)s
X19 r (shell)s
X18 r (script)s
Xf17 SF
X19 r (expire.sh)s
Xf6 SF
X(,)s
X19 r (which)s
X19 r (has)s
X50 3468 p (been)s
X17 r (included)s
X17 r (in)s
X18 r (this)s
X17 r (distribution,)s
X17 r (should)s
X18 r (be)s
X17 r (invoked)s
X17 r (regularly)s
X17 r (via)s
Xf17 SF
X17 r (crontab)s
Xf6 SF
X18 r (\(typically)s
X17 r (once)s
X17 r (a)s
X17 r (week\).)s
X50 3544 p (It)s
X15 r (expires)s
X15 r (\252inactive\272)s
X15 r (\256les)s
X14 r (that)s
X15 r (haven't)s
X14 r (been)s
X15 r (accessed)s
X15 r (for)s
X15 r (more)s
X15 r (than)s
X14 r (two)s
X15 r (weeks,)s
X15 r (so)s
X15 r (that)s
X15 r (cache)s
X15 r (partition)s
X50 3619 p (will)s
X12 r (not)s
X13 r (be)s
X12 r (\256lled)s
X12 r (up)s
X13 r (with)s
X12 r (\252no)s
X12 r (longer)s
X12 r (referenced\272)s
X13 r (\256les.)s
X19 r (Directories)s
X12 r (do)s
X13 r (not)s
X12 r (expire,)s
X13 r (but)s
X12 r (obsolete)s
X13 r (directory)s
X50 3694 p (listings)s
X15 r (are)s
X15 r (automatically)s
X16 r (discarded)s
X15 r (and)s
X15 r (superseded)s
X15 r (by)s
X16 r (newer)s
X15 r (ones.)s
X1246 3846 p (1)s
X-2 r (1)s
XEP
X
X%%Page: 12 13
XBP
Xf6 SF
X50 66 p (12)s
Xf8 SF
X1481 r (CHAPTER)s
X15 r (3.)s
X35 r (ADMINISTRA)s
X-2 r (TION)s
Xf6 SF
X144 232 p (NOTE:)s
X22 r (It')s
X-2 r (s)s
X21 r (okay)s
X22 r (to)s
X21 r (delete)s
X22 r (cached)s
X22 r (\256les)s
X22 r (selectively)s
X-3 r (,)s
X23 r (but)s
X22 r (it')s
X-2 r (s)s
X21 r (not)s
X21 r (recommended)s
X22 r (to)s
X22 r (delete)s
X22 r (cached)s
X50 307 p (directory)s
X14 r (\256les)s
X14 r (\(i.e.,)s
X15 r (\256les)s
X14 r (within)s
Xf17 SF
X14 r (dir/)s
Xf6 SF
X14 r (directory\))s
X14 r (unless)s
X14 r (you)s
X14 r (want)s
X14 r (to)s
X14 r (remove)s
X14 r (cached)s
X14 r (information)s
X15 r (for)s
X14 r (the)s
X50 382 p (whole)s
X20 r (volume.)s
X35 r (Even)s
X20 r (if)s
X20 r (all)s
X20 r (cached)s
X20 r (directory)s
X21 r (\256les)s
X20 r (were)s
X20 r (lost,)s
Xf17 SF
X21 r (csd)s
Xf6 SF
X20 r (continues)s
X20 r (to)s
X20 r (function)s
X21 r (but)s
Xf17 SF
X20 r (csd)s
Xf6 SF
X20 r (will)s
X50 458 p (occasionally)s
X15 r (forget)s
X14 r (which)s
X16 r (\256le)s
X15 r (is)s
X15 r (cached)s
X15 r (and)s
X15 r (which)s
X16 r (is)s
X15 r (not.)s
X144 548 p (Other)s
X15 r (management)s
X16 r (tools,)s
X15 r (such)s
X15 r (as)s
X16 r (\256le)s
X15 r (system)s
X15 r (consistency)s
X16 r (checker)s
X-2 r (,)s
X14 r (will)s
X16 r (be)s
X15 r (available)s
X15 r (in)s
X16 r (future)s
X15 r (ver-)s
X50 623 p (sions.)s
X144 713 p (If)s
Xf17 SF
X13 r (csd)s
Xf6 SF
X12 r (was)s
X13 r (accidentally)s
X13 r (killed)s
X12 r (by)s
X13 r (someone,)s
X13 r (even)s
X12 r (with)s
Xf17 SF
X13 r (SIGKILL)s
Xf6 SF
X(,)s
X13 r (the)s
X12 r (chances)s
X13 r (are)s
X13 r (that)s
X12 r (user)s
X2 r (')s
X-2 r (s)s
X12 r (ongoing)s
X50 788 p (\256le)s
X14 r (transfers)s
X14 r (weren't)s
X13 r (lost;)s
X15 r (just)s
X14 r (take)s
X14 r (a)s
X14 r (look)s
X14 r (at)s
X15 r (the)s
Xf17 SF
X14 r (ongoing)s
Xf6 SF
X14 r (subdirectory)s
X14 r (of)s
Xf17 SF
X14 r (WWFSDIR)s
Xf6 SF
X(,)s
X14 r (where)s
X14 r (interim)s
X14 r (\256les)s
X50 864 p (are)s
X17 r (kept.)s
X24 r (Signi\256cant)s
X17 r (amount)s
X16 r (of)s
X17 r (effort)s
X15 r (have)s
X17 r (been)s
X17 r (paid)s
X16 r (so)s
X17 r (that)s
X16 r (daemon)s
X17 r (can)s
X17 r (survive)s
X16 r (virtually)s
X17 r (eternally)s
X-3 r (,)s
X50 939 p (and)s
X15 r (can)s
X15 r (be)s
X16 r (restarted)s
X15 r (anytime)s
X15 r (without)s
X15 r (loss)s
X16 r (of)s
X15 r (data.)s
Xf11 SF
X50 1193 p (Snooping)s
X17 r (cache)s
X16 r (with)s
X17 r (perl)s
Xf6 SF
X50 1339 p (I)s
X14 r (have)s
X15 r (written)s
Xf17 SF
X14 r (libmm.pl)s
Xf6 SF
X(,)s
X14 r (the)s
X15 r (Maru-Maru)s
X14 r (library)s
X14 r (\(counterpart)s
X14 r (of)s
X15 r (W)s
X-4 r (aku-W)s
X-5 r (aku)s
X13 r (in)s
X15 r (Japanese\))s
X14 r (in)s
X14 r (the)s
X14 r (hope)s
X50 1414 p (that)s
X19 r (perl)s
X18 r (scripts)s
X19 r (built)s
X18 r (upon)s
X19 r (this)s
X18 r (package)s
X19 r (complements)s
X19 r (features)s
X18 r (not)s
X19 r (implemented)s
X18 r (in)s
Xf17 SF
X19 r (csd)s
Xf6 SF
X(,)s
X19 r (thereby)s
X19 r (en-)s
X50 1490 p (abling)s
X15 r (much)s
X14 r (more)s
X15 r (advanced)s
X15 r (features)s
X15 r (such)s
X14 r (as)s
X15 r (cache)s
X15 r (strategy)s
X15 r (selection,)s
X15 r (cache)s
X14 r (statistics)s
X15 r (and)s
X15 r (cache)s
X15 r (con-)s
X50 1565 p (sistency)s
X17 r (management.)s
X24 r (I)s
X17 r (have)s
X16 r (also)s
X17 r (added)s
X17 r (UIP)s
X16 r (commands)s
X17 r (that)s
X17 r (enables)s
X16 r (close)s
X17 r (collaboration)s
X17 r (of)s
Xf17 SF
X16 r (csd)s
Xf6 SF
X17 r (and)s
X50 1640 p (these)s
X15 r (perl)s
X15 r (programs.)s
X144 1730 p (NOTE:)s
X16 r (This)s
X15 r (package)s
X16 r (works)s
X15 r (only)s
X16 r (on)s
X16 r (localhost)s
X15 r (\(that)s
X16 r (is,)s
X15 r (the)s
X16 r (machine)s
X16 r (running)s
X15 r (csd\))s
X16 r (for)s
X15 r (security)s
X16 r (rea-)s
X50 1806 p (sons.)s
X144 1896 p (Several)s
X20 r (sample)s
X20 r (perl)s
X20 r (scripts)s
X20 r (are)s
X20 r (provided)s
X19 r (in)s
X20 r (the)s
Xf17 SF
X20 r (libww/)s
Xf6 SF
X20 r (subdirectory)s
X20 r (of)s
X20 r (this)s
X20 r (distribution;)s
X22 r (I)s
X20 r (hope)s
X50 1971 p (these)s
X15 r (examples)s
X15 r (facilitate)s
X16 r (writing)s
X15 r (perl)s
X15 r (scripts)s
X15 r (for)s
END_OF_FILE
if test 45673 -ne `wc -c <'doc/manual.ps.B'`; then
echo shar: \"'doc/manual.ps.B'\" unpacked with wrong size!
elif test -f 'doc/manual.ps.A' && test -f 'doc/manual.ps.C'; then
echo shar: Combining \"'doc/manual.ps'\" \(186887 characters\)
cat 'doc/manual.ps.A' 'doc/manual.ps.B' 'doc/manual.ps.C' > 'doc/manual.ps'
if test 186887 -ne `wc -c <'doc/manual.ps'`; then
echo shar: \"'doc/manual.ps'\" combined with wrong size!
else
rm doc/manual.ps.A doc/manual.ps.B doc/manual.ps.C
fi
fi
# end of 'doc/manual.ps.B'
fi
if test -f 'mosaic/Mosaic-2.0+wwfs.diff' -a "${1}" != "-c" ; then
echo shar: Will not clobber existing file \"'mosaic/Mosaic-2.0+wwfs.diff'\"
else
echo shar: Extracting \"'mosaic/Mosaic-2.0+wwfs.diff'\" \(31052 characters\)
sed "s/^X//" >'mosaic/Mosaic-2.0+wwfs.diff' <<'END_OF_FILE'
XBinary files Mosaic-2.0/ID and Mosaic-2.0+wwfs/ID differ
Xdiff -c -r -N Mosaic-2.0/Makefile Mosaic-2.0+wwfs/Makefile
X*** Mosaic-2.0/Makefile Tue Nov 9 18:21:49 1993
X--- Mosaic-2.0+wwfs/Makefile Sun Nov 21 00:50:34 1993
X***************
X*** 141,147 ****
X--- 141,153 ----
X waislibdir = $(waisroot)/bin
X waislibs = $(waislibdir)/inv.a $(waislibdir)/wais.a $(waislibdir)/libftw.a -lm
X
X+ #### DIRECT WWFS SUPPORT
X
X+ wwfsroot = /home/is/youki-k/work/wwfs-108.0
X+ wwfsflags = -I$(wwfsroot)/libww
X+ wwfslibdir = $(wwfsroot)/libww
X+ wwfslibs = $(wwfslibdir)/libww.a
X+
X #### Customization flags:
X #### . If you want Mosaic to come up with monochrome colors by default,
X #### use -DMONO_DEFAULT
X***************
X*** 179,197 ****
X
X libwww2::
X @echo --- Building libwww2
X! cd libwww2; make CC=$(CC) RANLIB=$(RANLIB) CFLAGS="$(CFLAGS) $(knrflag) $(waisflags)"
X
X src::
X @echo --- Building src
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
X
X src-purifyd::
X @echo --- Building Purify'd src
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
X
X src-quantifyd::
X @echo --- Building Quantify'd src
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
X
X libnet::
X @echo --- Building libnet
X--- 185,203 ----
X
X libwww2::
X @echo --- Building libwww2
X! cd libwww2; make CC=$(CC) RANLIB=$(RANLIB) CFLAGS="$(CFLAGS) $(knrflag) $(waisflags) $(wwfsflags)"
X
X src::
X @echo --- Building src
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
X
X src-purifyd::
X @echo --- Building Purify'd src
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
X
X src-quantifyd::
X @echo --- Building Quantify'd src
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
X
X libnet::
X @echo --- Building libnet
Xdiff -c -r -N Mosaic-2.0/Makefile.alpha Mosaic-2.0+wwfs/Makefile.alpha
X*** Mosaic-2.0/Makefile.alpha Tue Nov 9 18:21:52 1993
X--- Mosaic-2.0+wwfs/Makefile.alpha Tue Nov 16 04:36:53 1993
X***************
X*** 139,145 ****
X--- 139,151 ----
X #waislibdir = $(waisroot)/bin
X #waislibs = $(waislibdir)/inv.a $(waislibdir)/wais.a $(waislibdir)/libftw.a -lm
X
X+ #### DIRECT WWFS SUPPORT
X
X+ wwfsroot = /home/is/youki-k/work/wwfs-108.0
X+ wwfsflags = -I$(wwfsroot)/libww
X+ wwfslibdir = $(wwfsroot)/libww
X+ wwfslibs = $(wwfslibdir)/libww.a
X+
X #### Customization flags:
X #### . If you want Mosaic to come up with monochrome colors by default,
X #### use -DMONO_DEFAULT
X***************
X*** 177,195 ****
X
X libwww2::
X @echo --- Building libwww2
X! cd libwww2; make CC=$(CC) RANLIB=$(RANLIB) CFLAGS="$(CFLAGS) $(knrflag) $(waisflags)"
X
X src::
X @echo --- Building src
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
X
X src-purifyd::
X @echo --- Building Purify'd src
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
X
X src-quantifyd::
X @echo --- Building Quantify'd src
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
X
X libnet::
X @echo --- Building libnet
X--- 183,201 ----
X
X libwww2::
X @echo --- Building libwww2
X! cd libwww2; make CC=$(CC) RANLIB=$(RANLIB) CFLAGS="$(CFLAGS) $(knrflag) $(waisflags) $(wwfsflags)"
X
X src::
X @echo --- Building src
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
X
X src-purifyd::
X @echo --- Building Purify'd src
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
X
X src-quantifyd::
X @echo --- Building Quantify'd src
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
X
X libnet::
X @echo --- Building libnet
Xdiff -c -r -N Mosaic-2.0/Makefile.dec Mosaic-2.0+wwfs/Makefile.dec
X*** Mosaic-2.0/Makefile.dec Tue Nov 9 18:38:54 1993
X--- Mosaic-2.0+wwfs/Makefile.dec Sat Nov 20 23:59:21 1993
X***************
X*** 12,20 ****
X #### On non-SGI's, this should be ranlib.
X RANLIB = ranlib
X
X! CC = cc
X #### On Sun's, this should be gcc (ANSI required).
X! # CC = gcc
X
X
X #### For a few files in the source, some compilers may need to be kicked
X--- 12,20 ----
X #### On non-SGI's, this should be ranlib.
X RANLIB = ranlib
X
X! # CC = cc
X #### On Sun's, this should be gcc (ANSI required).
X! CC = gcc
X
X
X #### For a few files in the source, some compilers may need to be kicked
X***************
X*** 38,50 ****
X sysconfigflags =
X
X #### System libraries.
X! syslibs = -lPW -lsun -lmalloc
X #### For AIX 3.2
X # syslibs = -lPW -lbsd
X #### For most other Motif platforms:
X # syslibs = -lPW
X #### For Sun's and Ultrix and HP and BSD/386:
X! syslibs =
X #### For Sun's with no DNS:
X # syslibs = -lresolv
X #### For SCO ODT:
X--- 38,50 ----
X sysconfigflags =
X
X #### System libraries.
X! # syslibs = -lPW -lsun -lmalloc
X #### For AIX 3.2
X # syslibs = -lPW -lbsd
X #### For most other Motif platforms:
X # syslibs = -lPW
X #### For Sun's and Ultrix and HP and BSD/386:
X! syslibs = -ljsy -lim
X #### For Sun's with no DNS:
X # syslibs = -lresolv
X #### For SCO ODT:
X***************
X*** 72,77 ****
X--- 72,79 ----
X
X #### X library locations.
X xlibs = -lXm_s -lXmu -lXt_s -lX11_s
X+ #### X library locations.
X+ # xlibs = -lXm_s -lXmu -lXt_s -lX11_s
X #### For Sun's (at least running stock X/Motif as installed on our machines):
X # xlibs = /usr/lib/libXm.a /usr/lib/libXmu.a /usr/lib/libXt.a /usr/lib/libXext.a /usr/lib/libX11.a -lm
X #### For HP-UX 8.00:
X***************
X*** 88,94 ****
X # xlibs = -lXtXm_s -lXmu -lX11_s
X #### For nearly everyone else:
X xlibs = -lXm -lXmu -lXt -lX11
X! xlibs = -L/usr/local/lib -lXm -lXmu -lXt -lX11
X #### For BSD/386:
X # xlibs = -L/usr/X11/lib -lXm -lXmu -lXt -lX11
X #### For Motorola SVR4:
X--- 90,96 ----
X # xlibs = -lXtXm_s -lXmu -lX11_s
X #### For nearly everyone else:
X xlibs = -lXm -lXmu -lXt -lX11
X! # xlibs = -L/usr/local/lib -lXm -lXmu -lXt -lX11
X #### For BSD/386:
X # xlibs = -L/usr/X11/lib -lXm -lXmu -lXt -lX11
X #### For Motorola SVR4:
X***************
X*** 116,124 ****
X dtmdirs = libdtm libnet
X dtmlibs = ../libnet/libnet.a ../libdtm/libdtm.a
X dtmflags = -DHAVE_DTM -I.. -I../libnet
X! hdfdir = /hdf/install/dec
X! hdflibs = $(hdfdir)/lib/libnetcdf.a $(hdfdir)/lib/libdf.a
X! hdfflags = -DHAVE_HDF -I$(hdfdir)/include
X
X
X #### DIRECT WAIS SUPPORT
X--- 118,126 ----
X dtmdirs = libdtm libnet
X dtmlibs = ../libnet/libnet.a ../libdtm/libdtm.a
X dtmflags = -DHAVE_DTM -I.. -I../libnet
X! # hdfdir = /hdf/install/dec
X! # hdflibs = $(hdfdir)/lib/libnetcdf.a $(hdfdir)/lib/libdf.a
X! # hdfflags = -DHAVE_HDF -I$(hdfdir)/include
X
X
X #### DIRECT WAIS SUPPORT
X***************
X*** 141,146 ****
X--- 143,154 ----
X #waislibdir = $(waisroot)/bin
X #waislibs = $(waislibdir)/inv.a $(waislibdir)/wais.a $(waislibdir)/libftw.a -lm
X
X+ #### DIRECT WWFS SUPPORT
X+
X+ wwfsroot = /home/is/youki-k/work/wwfs-108.0
X+ wwfsflags = -I$(wwfsroot)/libww
X+ wwfslibdir = $(wwfsroot)/libww
X+ wwfslibs = $(wwfslibdir)/libww.a
X
X #### Customization flags:
X #### . If you want Mosaic to come up with monochrome colors by default,
X***************
X*** 179,197 ****
X
X libwww2::
X @echo --- Building libwww2
X! cd libwww2; make CC=$(CC) RANLIB=$(RANLIB) CFLAGS="$(CFLAGS) $(knrflag) $(waisflags)"
X
X src::
X @echo --- Building src
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
X
X src-purifyd::
X @echo --- Building Purify'd src
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
X
X src-quantifyd::
X @echo --- Building Quantify'd src
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
X
X libnet::
X @echo --- Building libnet
X--- 187,205 ----
X
X libwww2::
X @echo --- Building libwww2
X! cd libwww2; make CC=$(CC) RANLIB=$(RANLIB) CFLAGS="$(CFLAGS) $(knrflag) $(waisflags) $(wwfsflags)"
X
X src::
X @echo --- Building src
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
X
X src-purifyd::
X @echo --- Building Purify'd src
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
X
X src-quantifyd::
X @echo --- Building Quantify'd src
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
X
X libnet::
X @echo --- Building libnet
Xdiff -c -r -N Mosaic-2.0/libwww2/HTAccess.c Mosaic-2.0+wwfs/libwww2/HTAccess.c
X*** Mosaic-2.0/libwww2/HTAccess.c Sun Oct 31 07:56:57 1993
X--- Mosaic-2.0+wwfs/libwww2/HTAccess.c Tue Nov 16 04:31:03 1993
X***************
X*** 79,85 ****
X */
X PRIVATE void HTAccessInit NOARGS /* Call me once */
X {
X! extern HTProtocol HTTP, HTFile, HTTelnet, HTTn3270, HTRlogin;
X extern HTProtocol HTFTP, HTNews, HTGopher;
X #ifdef DIRECT_WAIS
X extern HTProtocol HTWAIS;
X--- 79,85 ----
X */
X PRIVATE void HTAccessInit NOARGS /* Call me once */
X {
X! extern HTProtocol HTTP, HTFile, HTWWFS, HTTelnet, HTTn3270, HTRlogin;
X extern HTProtocol HTFTP, HTNews, HTGopher;
X #ifdef DIRECT_WAIS
X extern HTProtocol HTWAIS;
X***************
X*** 93,98 ****
X--- 93,99 ----
X
X HTRegisterProtocol(&HTTP);
X HTRegisterProtocol(&HTFile);
X+ HTRegisterProtocol(&HTWWFS);
X HTRegisterProtocol(&HTTelnet);
X HTRegisterProtocol(&HTTn3270);
X HTRegisterProtocol(&HTRlogin);
Xdiff -c -r -N Mosaic-2.0/libwww2/HTWWFS.c Mosaic-2.0+wwfs/libwww2/HTWWFS.c
X*** Mosaic-2.0/libwww2/HTWWFS.c
X--- Mosaic-2.0+wwfs/libwww2/HTWWFS.c Sat Nov 20 23:05:36 1993
X***************
X*** 0 ****
X--- 1,452 ----
X+ /* WWFS Access HTWWFS.c
X+ ** ===========
X+ **
X+ ** This is unix-specific code in general.
X+ ** These are routines for file access used by browsers.
X+ **
X+ ** History:
X+ ** Feb 91 Written Tim Berners-Lee CERN/CN
X+ ** Apr 91 vms-vms access included using DECnet syntax
X+ ** 26 Jun 92 (JFG) When running over DECnet, suppressed FTP.
X+ ** Fixed access bug for relative names on VMS.
X+ ** Nov 93 Derived from HTFile.c; Youki Kadobayashi WIDE
X+ ** deleted VMS code for simplicity.
X+ **
X+ */
X+
X+ #include "HTFile.h" /* Implemented here */
X+
X+ #define MULTI_SUFFIX ".multi" /* Extension for scanning formats */
X+
X+ #include <stdio.h>
X+ #include <sys/param.h>
X+ #include "HText.h"
X+ #include "HTUtils.h"
X+
X+ #include "HTParse.h"
X+ #include "tcp.h"
X+ #include "HTTCP.h"
X+ #include "HTAnchor.h"
X+ #include "HTAtom.h"
X+ #include "HTWriter.h"
X+ #include "HTFWriter.h"
X+ #include "HTInit.h"
X+ #include "HTSort.h"
X+ #include "libww.h"
X+
X+ /* #define TRACE 1 */
X+
X+ #ifdef USE_DIRENT /* Set this for Sys V systems */
X+ #define STRUCT_DIRENT struct dirent
X+ #else
X+ #define STRUCT_DIRENT struct direct
X+ #endif
X+
X+ #include "HTML.h" /* For directory object building */
X+
X+ /* Controlling globals
X+ **
X+ */
X+
X+ extern int HTDirAccess;
X+
X+ /* Load a document on WWFS
X+ ** -----------------------
X+ **
X+ ** On entry,
X+ ** addr must point to the fully qualified hypertext reference.
X+ ** This is the physsical address of the file
X+ **
X+ ** On exit,
X+ ** returns <0 Error has occured.
X+ ** HTLOADED OK
X+ **
X+ */
X+ PUBLIC int HTLoadWWFS ARGS4 (
X+ CONST char *, addr,
X+ HTParentAnchor *, anchor,
X+ HTFormat, format_out,
X+ HTStream *, sink
X+ )
X+ {
X+ char * filename, * localname;
X+ HTFormat format;
X+ int fd = -1; /* Unix file descriptor number = INVALID */
X+ char * newname=0; /* Simplified name of file */
X+ HTAtom * encoding; /* @@ not used yet */
X+ int compressed;
X+ extern char *HTgeticonname(HTFormat, char *);
X+
X+ /* Reduce the filename to a basic form (hopefully unique!)
X+ */
X+ StrAllocCopy(newname, addr);
X+ filename=HTParse(newname, "", PARSE_PATH|PARSE_PUNCTUATION);
X+ free(newname);
X+
X+ format = HTFileFormat(filename, &encoding, WWW_PLAINTEXT, &compressed);
X+
X+ HTProgress ("Retrieving WWFS file.");
X+ if (ww_get(filename) < 0) {
X+ if (TRACE) fprintf(stderr, "HTWWFS: could not retrieve document");
X+ }
X+ localname = ww_localpath(filename);
X+ if (! localname) {
X+ if (TRACE) fprintf(stderr, "HTWWFS: client not configured properly");
X+ } else {
X+ struct stat dir_info;
X+ localname = strdup(localname);
X+
X+ #ifdef GOT_READ_DIR
X+
X+ /* Multiformat handling
X+ **
X+ ** If needed, scan directory to find a good file.
X+ ** Bug: we don't stat the file to find the length
X+ */
X+ if ( (strlen(localname) > strlen(MULTI_SUFFIX))
X+ && (0==strcmp(localname + strlen(localname) - strlen(MULTI_SUFFIX),
X+ MULTI_SUFFIX))) {
X+ DIR *dp;
X+
X+ STRUCT_DIRENT * dirbuf;
X+ float best = NO_VALUE_FOUND; /* So far best is bad */
X+ HTFormat best_rep = NULL; /* Set when rep found */
X+ STRUCT_DIRENT best_dirbuf; /* Best dir entry so far */
X+
X+ char * base = strrchr(localname, '/');
X+ int baselen;
X+
X+ if (!base || base == localname) goto forget_multi;
X+ *base++ = 0; /* Just got directory name */
X+ baselen = strlen(base)- strlen(MULTI_SUFFIX);
X+ base[baselen] = 0; /* Chop off suffix */
X+
X+ dp = opendir(localname);
X+ if (!dp) {
X+ forget_multi:
X+ free(localname);
X+ return HTLoadError(sink, 500,
X+ "Multiformat: directory scan failed.");
X+ }
X+
X+ while (dirbuf = readdir(dp)) {
X+ /* while there are directory entries to be read */
X+ if (dirbuf->d_ino == 0) continue;
X+ /* if the entry is not being used, skip it */
X+
X+ if (!strncmp(dirbuf->d_name, base, baselen)) {
X+ HTFormat rep = HTFileFormat(dirbuf->d_name, &encoding,
X+ WWW_PLAINTEXT, &compressed);
X+ float value = HTStackValue(rep, format_out,
X+ HTFileValue(dirbuf->d_name),
X+ 0.0 /* @@@@@@ */);
X+ if (value != NO_VALUE_FOUND) {
X+ if (TRACE) fprintf(stderr,
X+ "HTWWFS: value of presenting %s is %f\n",
X+ HTAtom_name(rep), value);
X+ if (value > best) {
X+ best_rep = rep;
X+ best = value;
X+ best_dirbuf = *dirbuf;
X+ }
X+ } /* if best so far */
X+ } /* if match */
X+
X+ } /* end while directory entries left to read */
X+ closedir(dp);
X+
X+ if (best_rep) {
X+ format = best_rep;
X+ base[-1] = '/'; /* Restore directory name */
X+ base[0] = 0;
X+ StrAllocCat(localname, best_dirbuf.d_name);
X+ goto open_file;
X+
X+ } else { /* If not found suitable file */
X+ free(localname);
X+ return HTLoadError(sink, 403, /* List formats? */
X+ "Could not find suitable representation for transmission.");
X+ }
X+ /*NOTREACHED*/
X+ } /* if multi suffix */
X+ /*
X+ ** Check to see if the 'localname' is in fact a directory. If it is
X+ ** create a new hypertext object containing a list of files and
X+ ** subdirectories contained in the directory. All of these are links
X+ ** to the directories or files listed.
X+ ** NB This assumes the existance of a type 'STRUCT_DIRENT', which will
X+ ** hold the directory entry, and a type 'DIR' which is used to point to
X+ ** the current directory being read.
X+ */
X+
X+
X+ if (stat(localname,&dir_info) == -1) { /* get file information */
X+ /* if can't read file information */
X+ if (TRACE) fprintf(stderr, "HTWWFS: can't stat %s\n", localname);
X+
X+ } else { /* Stat was OK */
X+
X+
X+ if (((dir_info.st_mode) & S_IFMT) == S_IFDIR) {
X+ /* if localname is a directory */
X+
X+ /*
X+ **
X+ ** Read the localdirectory and present a nicely formatted list to the user
X+ ** Re-wrote most of the read directory code here, excepting for the checking
X+ ** access.
X+ **
X+ ** Author: Charles Henrich (henrich@crh.cl.msu.edu) 10-09-93
X+ **
X+ ** This is still pretty messy, need to go through and clean it up at some point
X+ **
X+ */
X+
X+ /* Define some parameters that everyone should already have */
X+
X+ #ifndef MAXPATHLEN
X+ #define MAXPATHLEN 1024
X+ #endif
X+
X+ #ifndef BUFSIZ
X+ #define BUFSIZ 4096
X+ #endif
X+
X+ char filepath[MAXPATHLEN];
X+ char buffer[4096];
X+
X+ char *ptr;
X+ char *dataptr;
X+
X+ HText * HT;
X+ HTFormat format;
X+ HTAtom *pencoding;
X+
X+ struct stat statbuf;
X+ STRUCT_DIRENT * dp;
X+ DIR *dfp;
X+
X+ int cmpr;
X+ int count;
X+
X+ if (TRACE)
X+ fprintf(stderr,"%s is a directory\n",localname);
X+ HTProgress ("Listing directory.");
X+
X+ /* Check directory access.
X+ ** Selective access means only those directories containing a
X+ ** marker file can be browsed
X+ */
X+ if (HTDirAccess == HT_DIR_FORBID) {
X+ free(localname);
X+ return HTLoadError(sink, 403,
X+ "Directory browsing is not allowed.");
X+ }
X+
X+
X+ if (HTDirAccess == HT_DIR_SELECTIVE) {
X+ char * enable_file_name =
X+ malloc(strlen(localname)+ 1 +
X+ strlen(HT_DIR_ENABLE_FILE) + 1);
X+ strcpy(enable_file_name, localname);
X+ strcat(enable_file_name, "/");
X+ strcat(enable_file_name, HT_DIR_ENABLE_FILE);
X+ if (stat(enable_file_name, &statbuf) != 0) {
X+ free(localname);
X+ return HTLoadError(sink, 403,
X+ "Selective access is not enabled for this directory.");
X+ }
X+ }
X+
X+
X+ dfp = opendir(localname);
X+ if (!dfp) {
X+ free(localname);
X+ return HTLoadError(sink, 403, "This directory is not readable.");
X+ }
X+
X+ /* Suck the directory up into a list to be sorted */
X+
X+ HTSortInit();
X+
X+ for(dp=readdir(dfp);dp != NULL;dp=readdir(dfp))
X+ {
X+ ptr = malloc(strlen(dp->d_name)+1);
X+ if(ptr == NULL)
X+ {
X+ return HTLoadError(sink, 403, "Ran out of memory in directory read!");
X+ }
X+ strcpy(ptr,dp->d_name);
X+
X+ HTSortAdd(ptr);
X+ }
X+
X+ closedir(dfp);
X+
X+ /* Sort the dir list */
X+
X+ HTSortSort();
X+
X+ /* Start a new HTML page */
X+
X+ HT = HText_new();
X+ HText_beginAppend(HT);
X+ HText_appendText(HT, "<H1>WWFS Directory ");
X+ HText_appendText(HT, filename);
X+ HText_appendText(HT, "</H1>\n");
X+ HText_appendText(HT,"<DL>\n");
X+
X+ /* Sort the list and then spit it out in a nice form */
X+
X+ /* How this for a disgusting loop :) */
X+
X+ for(count=0,dataptr=HTSortFetch(count);
X+ dataptr != NULL;
X+ free(dataptr), count++, dataptr=HTSortFetch(count))
X+ {
X+
X+ /* We dont want to see . */
X+
X+ if(strcmp(dataptr,".") == 0) continue;
X+
X+ /* If its .. *and* the current directory is / dont show anything, otherwise
X+ /* print out a nice Parent Directory entry.
X+ /* */
X+
X+ if(strcmp(dataptr,"..") == 0)
X+ {
X+ if(strcmp(localname,"/") != 0)
X+ {
X+ strcpy(buffer,filename);
X+
X+ ptr = strrchr(buffer, '/');
X+
X+ if(ptr != NULL) *ptr='\0';
X+
X+ if(buffer[0] == '\0') strcpy(buffer,"/");
X+
X+ HText_appendText(HT,"<DD><A HREF=\"");
X+ HText_appendText(HT, buffer);
X+
X+ HText_appendText(HT,"\"><IMG SRC=\"");
X+ HText_appendText(HT, HTgeticonname(NULL, "directory"));
X+
X+ HText_appendText(HT,"\"> Parent Directory</a>");
X+ continue;
X+ }
X+ else
X+ {
X+ continue;
X+ }
X+ }
X+
X+ /* Get the filesize information from a stat, if we cant stat it, we probably */
X+ /* cant read it either, so ignore it. */
X+
X+ sprintf(filepath,"%s/%s",localname, dataptr);
X+
X+ if(stat(filepath, &statbuf) == -1) continue;
X+
X+ HText_appendText(HT,"<DD><A HREF=\"");
X+ HText_appendText (HT, filename);
X+
X+ if(localname[strlen(localname)-1] != '/')
X+ {
X+ HText_appendText (HT, "/");
X+ }
X+
X+ HText_appendText (HT, dataptr);
X+ HText_appendText (HT, "\">");
X+
X+ /* If its a directory, dump out a dir icon, dont bother with anything else */
X+ /* if it is a file try and figure out what type of file it is, and grab */
X+ /* the appropriate icon. If we cant figure it out, call it text. If its */
X+ /* a compressed file, call it binary no matter what */
X+
X+ if(statbuf.st_mode & S_IFDIR)
X+ {
X+ sprintf(buffer,"%s",dataptr);
X+ HText_appendText(HT, "<IMG SRC=\"");
X+ HText_appendText(HT, HTgeticonname(NULL, "directory"));
X+ HText_appendText(HT, "\"> ");
X+ }
X+ else
X+ {
X+ sprintf(buffer,"%s (%d bytes)",
X+ dataptr, statbuf.st_size);
X+
X+ format = HTFileFormat(dataptr, &pencoding,
X+ WWW_SOURCE, &cmpr);
X+
X+ /* If its executable then call it application, else it might as well be text */
X+
X+ if(cmpr == 0)
X+ {
X+ HText_appendText(HT, "<IMG SRC=\"");
X+ if((statbuf.st_mode & S_IXUSR) ||
X+ (statbuf.st_mode & S_IXGRP) ||
X+ (statbuf.st_mode & S_IXOTH))
X+ {
X+ HText_appendText(HT,
X+ HTgeticonname(format, "application"));
X+ }
X+ else
X+ {
X+ HText_appendText(HT,
X+ HTgeticonname(format, "text"));
X+ }
X+ HText_appendText(HT, "\"> ");
X+ }
X+ else
X+ {
X+ HText_appendText(HT, "<IMG SRC=\"");
X+ HText_appendText(HT, HTgeticonname(NULL, "application"));
X+ HText_appendText(HT, "\"> ");
X+ }
X+ }
X+
X+ /* Spit out the anchor */
X+
X+ HText_appendText (HT, buffer);
X+ HText_appendText (HT, "</A>\n");
X+ }
X+
X+ /* End of list, clean up and we are done */
X+
X+ HText_appendText (HT, "</DL>\n");
X+ HText_endAppend (HT);
X+ free(localname);
X+ return HT_LOADED;
X+ } /* end if localname is directory */
X+
X+ } /* end if file stat worked */
X+
X+ /* End of directory reading section
X+ */
X+ #endif
X+ open_file:
X+ {
X+ FILE * fp = fopen(localname,"r");
X+ if(TRACE) fprintf (stderr, "HTWWFS: Opening `%s' gives %p\n",
X+ localname, (void*)fp);
X+ if (fp) { /* Good! */
X+ if (HTEditable(localname)) {
X+ HTAtom * put = HTAtom_for("PUT");
X+ HTList * methods = HTAnchor_methods(anchor);
X+ if (HTList_indexOf(methods, put) == (-1)) {
X+ HTList_addObject(methods, put);
X+ }
X+ }
X+ free(localname);
X+ HTParseFile(format, format_out, anchor, fp, sink);
X+ fclose(fp);
X+ return HT_LOADED;
X+ } /* If succesfull open */
X+ } /* scope of fp */
X+ } /* local unix file system */
X+ free(filename);
X+ }
X+
X+ /* Protocol descriptors
X+ */
X+ PUBLIC HTProtocol HTWWFS = { "wwfs", HTLoadWWFS, 0 };
Xdiff -c -r -N Mosaic-2.0/libwww2/Makefile Mosaic-2.0+wwfs/libwww2/Makefile
X*** Mosaic-2.0/libwww2/Makefile Mon Nov 1 13:04:46 1993
X--- Mosaic-2.0+wwfs/libwww2/Makefile Tue Nov 16 04:32:17 1993
X***************
X*** 30,35 ****
X--- 30,36 ----
X HTTelnet.c \
X HTWSRC.c \
X HTWriter.c \
X+ HTWWFS.c \
X SGML.c \
X HTWAIS.c \
X HTIcon.c \
Xdiff -c -r -N Mosaic-2.0/src/Makefile Mosaic-2.0+wwfs/src/Makefile
X*** Mosaic-2.0/src/Makefile Sun Nov 7 16:32:05 1993
X--- Mosaic-2.0+wwfs/src/Makefile Tue Nov 16 04:43:11 1993
X***************
X*** 5,11 ****
X LIBXMX_INC = ../libXmx
X
X PROGRAM_LIBS = $(LIBWWW_DIR)/libwww.a $(LIBHTMLW_DIR)/libhtmlw.a $(LIBXMX_DIR)/libXmx.a
X! LIBS = $(PROGRAM_LIBS) $(X_LIBS) $(DTM_LIBS) $(HDF_LIBS) $(WAIS_LIBS) $(MATH_LIB) $(SYS_LIBS)
X
X CFILES = main.c gui.c gui-dialogs.c gui-menubar.c gui-documents.c mo-www.c\
X mo-dtm.c hotlist.c whine.c history.c\
X--- 5,11 ----
X LIBXMX_INC = ../libXmx
X
X PROGRAM_LIBS = $(LIBWWW_DIR)/libwww.a $(LIBHTMLW_DIR)/libhtmlw.a $(LIBXMX_DIR)/libXmx.a
X! LIBS = $(PROGRAM_LIBS) $(X_LIBS) $(DTM_LIBS) $(HDF_LIBS) $(WAIS_LIBS) $(WWFS_LIBS) $(MATH_LIB) $(SYS_LIBS)
X
X CFILES = main.c gui.c gui-dialogs.c gui-menubar.c gui-documents.c mo-www.c\
X mo-dtm.c hotlist.c whine.c history.c\
Xdiff -c -r -N Mosaic-2.0/src/history.c Mosaic-2.0+wwfs/src/history.c
X*** Mosaic-2.0/src/history.c Fri Nov 5 18:14:31 1993
X--- Mosaic-2.0+wwfs/src/history.c Tue Nov 16 04:38:53 1993
X***************
X*** 349,354 ****
X--- 349,365 ----
X goto done;
X }
X }
X+
X+ if (!strncmp (url, "wwfs:", 5))
X+ {
X+ /* It's a WWFS file. */
X+ foo1 = url + 5;
X+
X+ title = (char *)malloc ((strlen (foo1) + 32) * sizeof (char));
X+ sprintf (title, "WWFS file %s\0", foo1);
X+
X+ goto done;
X+ }
X
X /* Punt... */
X title = (char *) malloc ((strlen (url) + 24) * sizeof (char));
Xdiff -c -r -N Mosaic-2.0/src/mo-www.c Mosaic-2.0+wwfs/src/mo-www.c
X*** Mosaic-2.0/src/mo-www.c Sun Nov 7 13:41:29 1993
X--- Mosaic-2.0+wwfs/src/mo-www.c Tue Nov 16 04:39:56 1993
X***************
X*** 774,780 ****
X /* ------------------------------ dumb stuff ------------------------------ */
X
X /* Grumble grumble... */
X! #if defined(ultrix) || defined(VMS) || defined(NeXT) || defined(M4310) || defined(vax)
X char *strdup (char *str)
X {
X char *dup;
X--- 774,783 ----
X /* ------------------------------ dumb stuff ------------------------------ */
X
X /* Grumble grumble... */
X! /*
X! * #if defined(ultrix) || defined(VMS) || defined(NeXT) || defined(M4310) || defined(vax)
X! */
X! #if defined(VMS) || defined(NeXT) || defined(M4310) || defined(vax)
X char *strdup (char *str)
X {
X char *dup;
END_OF_FILE
if test 31052 -ne `wc -c <'mosaic/Mosaic-2.0+wwfs.diff'`; then
echo shar: \"'mosaic/Mosaic-2.0+wwfs.diff'\" unpacked with wrong size!
fi
# end of 'mosaic/Mosaic-2.0+wwfs.diff'
fi
echo shar: End of archive 11 \(of 22\).
cp /dev/null ark11isdone
MISSING=""
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
if test ! -f ark${I}isdone ; then
MISSING="${MISSING} ${I}"
fi
done
if test "${MISSING}" = "" ; then
echo You have unpacked all 22 archives.
rm -f ark[1-9]isdone ark[1-9][0-9]isdone
else
echo You still must unpack the following archives:
echo " " ${MISSING}
fi
exit 0
exit 0 # Just in case...