home *** CD-ROM | disk | FTP | other *** search
- From: vac@CS.CMU.EDU (Vincent.Cate)
- Newsgroups: comp.sources.misc
- Subject: v42i051: alex - NFS/FTP global filesystem, Part13/13
- Date: 30 Mar 1994 20:58:27 -0600
- Organization: Sterling Software
- Sender: kent@sparky.sterling.com
- Approved: kent@sparky.sterling.com
- Message-ID: <2nde8j$jkq@sparky.sterling.com>
- X-Md4-Signature: bc581bbd92cf11181e8f93a886e1480b
-
- Submitted-by: vac@CS.CMU.EDU (Vincent.Cate)
- Posting-number: Volume 42, Issue 51
- Archive-name: alex/part13
- Environment: Most Unix machines - with 100 MB to 10 GB of free disk
-
- #! /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: alexsrvr/alex-cache/readme alexsrvr/bin/readme
- # alexsrvr/doc/README alexsrvr/doc/alex.html
- # alexsrvr/doc/alexuser.html alexsrvr/etc/unfsd_exports
- # alexsrvr/lib/README alexsrvr/lib/fix.hostslist
- # alexsrvr/logs/readme alexsrvr/src/UidStrA.awk
- # alexsrvr/src/UidStrB.awk alexsrvr/src/alexincs.h
- # alexsrvr/src/compat.c alexsrvr/src/config.nfs.h alexsrvr/src/cp-rs
- # alexsrvr/src/fh.h alexsrvr/src/install alexsrvr/src/libdefs
- # alexsrvr/src/mount.h alexsrvr/src/mount_svc.c
- # alexsrvr/src/mount_xdr.c alexsrvr/src/num alexsrvr/src/patchalex
- # alexsrvr/src/remtimezonemain.c alexsrvr/src/rpc/auth_unix.h
- # alexsrvr/src/rpc/netdb.h alexsrvr/src/rpc/pmap_clnt.h
- # alexsrvr/src/rpc/pmap_prot.h alexsrvr/src/rpc/pmap_rmt.h
- # alexsrvr/src/rpc/rpc.h alexsrvr/src/rpc/types.h
- # alexsrvr/src/scripts/alex.nanny alexsrvr/src/scripts/evictor.nanny
- # alexsrvr/src/scripts/grepnkill alexsrvr/src/scripts/grepnkill9
- # alexsrvr/src/scripts/regression.test
- # alexsrvr/src/scripts/restart.alex alexsrvr/src/scripts/runalexfsck
- # alexsrvr/src/scripts/stop.alex alexsrvr/src/todo.c
- # alexsrvr/src/unfsd.h alexsrvr/tmp/readme
- # Wrapped by kent@sparky on Tue Mar 29 21:56:24 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 13 (of 13)."'
- if test -f 'alexsrvr/alex-cache/readme' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'alexsrvr/alex-cache/readme'\"
- else
- echo shar: Extracting \"'alexsrvr/alex-cache/readme'\" \(147 characters\)
- sed "s/^X//" >'alexsrvr/alex-cache/readme' <<'END_OF_FILE'
- X
- X
- XThis directory can be remoted and /usr/alexsrvr/alex-cache can be a link
- Xoff to somplace else as long as the right user owns that other place.
- X
- X
- END_OF_FILE
- if test 147 -ne `wc -c <'alexsrvr/alex-cache/readme'`; then
- echo shar: \"'alexsrvr/alex-cache/readme'\" unpacked with wrong size!
- fi
- # end of 'alexsrvr/alex-cache/readme'
- fi
- if test -f 'alexsrvr/bin/readme' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'alexsrvr/bin/readme'\"
- else
- echo shar: Extracting \"'alexsrvr/bin/readme'\" \(141 characters\)
- sed "s/^X//" >'alexsrvr/bin/readme' <<'END_OF_FILE'
- X
- XYou should not edit scripts in this directory, edit them in
- X~alexsrvr/src/scripts where they will come from when you
- Xdo a "make install".
- X
- END_OF_FILE
- if test 141 -ne `wc -c <'alexsrvr/bin/readme'`; then
- echo shar: \"'alexsrvr/bin/readme'\" unpacked with wrong size!
- fi
- # end of 'alexsrvr/bin/readme'
- fi
- if test -f 'alexsrvr/doc/README' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'alexsrvr/doc/README'\"
- else
- echo shar: Extracting \"'alexsrvr/doc/README'\" \(1136 characters\)
- sed "s/^X//" >'alexsrvr/doc/README' <<'END_OF_FILE'
- XAlex is a filesystem that lets users access files in FTP sites around
- Xthe world just like they access local files. The name Alex comes from
- Xthe ancient Library of Alexandria. Alexandria gathered information from
- Xaround the world into one easy to access location. Alex does an analogous
- Xthing in a very modern way.
- X
- XSource to Alex is now available.
- X
- Xalex.post - Latest version of file that is posted to internet.
- X If you want to save just one file on Alex, save this.
- X Explains the easy ways to get a server up.
- X
- X
- Xusenix.wofs92.ps - paper on Alex as published in Usenix Workshop on File
- X Systems May of 1992.
- X
- X
- Xintro.ps - same as above paper but with a few updates
- X
- Xusenix.wofs92.talk.ps - Slides for above talk
- X
- Xalex.html - Alex www/xmosaic page
- X
- Xalexuser.html - Alex users www/xmosaic page
- X
- XREADME.TOP - copy of /alex/README
- X
- X
- XKeywords: Alexandria, Alex, technical papers, techreport
- XMaster copy: /alex/edu/cmu/cs/sp/alex/doc/README
- X
- X
- X Vincent Cate
- X vac@cs.cmu.edu
- X
- END_OF_FILE
- if test 1136 -ne `wc -c <'alexsrvr/doc/README'`; then
- echo shar: \"'alexsrvr/doc/README'\" unpacked with wrong size!
- fi
- # end of 'alexsrvr/doc/README'
- fi
- if test -f 'alexsrvr/doc/alex.html' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'alexsrvr/doc/alex.html'\"
- else
- echo shar: Extracting \"'alexsrvr/doc/alex.html'\" \(2118 characters\)
- sed "s/^X//" >'alexsrvr/doc/alex.html' <<'END_OF_FILE'
- X<TITLE>Alex FTP Filesystem</TITLE>
- X<H1>Alex FTP Filesystem </H1>
- X
- X<BODY>
- X
- XAlex is a filesystem that lets users access files in FTP sites around
- Xthe world just like they access local files. Alex pathnames are
- Xcomposed of 3 parts. First is /alex. Second is a reversed hostname.
- XLast is the path on that host. For example,
- X/alex/edu/berkeley/pub/virus.patch is a file at berkeley.edu.
- X
- X
- X<MENU>
- X<LI> <A href="file://alex.sp.cs.cmu.edu/doc/alex.post">Post on netnews about Alex</A>
- X
- X<LI> <A href="file://alex.sp.cs.cmu.edu/doc/README">Alex README file</A>
- X
- X<LI> <A href="file://alex.sp.cs.cmu.edu/doc/NIR.Tool">Alex NIR entry</A>
- X
- X<LI> <A href="file://alex.sp.cs.cmu.edu/doc/intro.ps">Usenix paper on Alex intro.ps</A>
- X
- X<LI> <A href="file://alex.sp.cs.cmu.edu/src/README">Source code README</A>
- X</MENU>
- X
- X<H2>Getting Alex or trying it out</H2>
- X
- X<MENU>
- X<LI> <A href="file://alex.sp.cs.cmu.edu/src/getalex">Script to get and install Alex - getalex</A>
- X
- X<LI> <A href="file://alex.sp.cs.cmu.edu/alex"> Mosaic/WWW Alex demo starting at /alex </A>
- X
- X<LI> <A href="file://alex.sp.cs.cmu.edu/links"> Mosaic/WWW Alex demo starting at links </A>
- X
- X<LI> <A href="file://alex.sp.cs.cmu.edu/demo/alex.demo.mount"> Two line script to demo mount Alex </A>
- X</MENU>
- X
- X<H2>User Commands</H2>
- X
- X<MENU>
- X<LI> <A href="file://alex.sp.cs.cmu.edu/user/man-html/alexuser.html"> Man pages for Alex user commands </A>
- X
- X<LI> <A href="file://alex.sp.cs.cmu.edu/user/man-html/alexurl.html"> Alex support for URLs </A>
- X
- X<LI> <A href="file://alex.sp.cs.cmu.edu/links/thisdir.html"> alex2html of links tree </A>
- X</MENU>
- X
- X<H2>Other internet related systems</H2>
- X
- X<MENU>
- X<LI> <A href="file://ftp.rpi.edu/pub/communications/internet-tools.html"> internet-tools.html </A>
- X
- X<LI> <A href="file://alex.sp.cs.cmu.edu/links/information-systems"> directory of alex links to other systems </A>
- X
- X<LI> <A href="ftp://mailbase.ac.uk/pub/lists/nir/files/nir.status.report"> NIR status report </A>
- X
- X<LI> <A href="http://www.ai.mit.edu/the-net"> Index of /the-net</A>
- X</MENU>
- X
- X
- X<H3><A href=file://alex.sp.cs.cmu.edu/www/vincent-cate.html>Vincent Cate</A></H3>
- X
- X</BODY>
- END_OF_FILE
- if test 2118 -ne `wc -c <'alexsrvr/doc/alex.html'`; then
- echo shar: \"'alexsrvr/doc/alex.html'\" unpacked with wrong size!
- fi
- # end of 'alexsrvr/doc/alex.html'
- fi
- if test -f 'alexsrvr/doc/alexuser.html' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'alexsrvr/doc/alexuser.html'\"
- else
- echo shar: Extracting \"'alexsrvr/doc/alexuser.html'\" \(3315 characters\)
- sed "s/^X//" >'alexsrvr/doc/alexuser.html' <<'END_OF_FILE'
- X<TITLE>Alex User Commands</TITLE>
- X<H1>Alex User Commands</H1>
- X
- X<P>
- XAlex is an experimental filesystem that tries to give users
- Xtransparent read access to anonymous FTP sites. Alex path-
- Xnames are really composed of 3 parts. First is /alex.
- XSecond is a reversed hostname. Last is the path on that
- Xhost. For example, /alex/edu/berkeley/pub/virus.patch is a
- Xfile at berkeley.edu.
- X<P>
- XThis document and the documents referenced by it describe
- Xsome commands that users may fine useful. If you want
- Xinformation on the server <A HREF=ftp://alex.sp.cs.cmu.edu/www/alex.html>click here</A>.
- X
- X<H2><A HREF=ftp://alex.sp.cs.cmu.edu/user/man-html/mountalex.html>NFS Mount Alex</A></H2>
- X
- XAlex is a funny NFS server that needs special timeouts options
- X(FTPs take longer than disk accesses). The mountalex script
- Xhandles all of this. It will also make /alex if it needs
- Xto.
- X
- X<H2><A HREF=ftp://alex.sp.cs.cmu.edu/user/man-html/installalexuser.html>Install User Commands</A></H2>
- X
- XThis page tells how to install all of the user commands and html pages.
- X
- X<H2><A HREF=ftp://alex.sp.cs.cmu.edu/user/man-html/alexurl.html>Commands to use with URLs (WWW/Mosaic)</A></H2>
- X
- XThere are a number of user commands for useful to Mosaic users.
- XThey are all collected under this section.
- X
- X<H2><A HREF=ftp://alex.sp.cs.cmu.edu/user/man-html/alexaliases.html>Alex Aliases</A></H2>
- X
- XA bunch of aliases that make using Alex faster. These include things
- Xlike cdh (cd host) and <A HREF=ftp://alex.sp.cs.cmu.edu/user/man-html/cdu.html>cdu</A> for going to a URL.
- X
- X<H2><A HREF=ftp://alex.sp.cs.cmu.edu/user/man-html/searchalex.html>Searching Through Alex</A></H2>
- X
- XThis is a collection of commands for searching and browsing Alex.
- X
- X
- X<H2><A HREF=ftp://alex.sp.cs.cmu.edu/user/man-html/other.html>Other Alex User Commands</A></H2>
- X
- XThis is a another bunch of Alex user commands.
- X
- X
- X<H2>FILES</H2>
- X
- XAll of the user related man pages and commands can be found
- Xunder /alex/edu/cmu/cs/sp/alex/user.
- X
- X<H2>DEMO</H2>
- X
- XTo demo Alex get a copy of <A HREF=ftp://alex.sp.cs.cmu.edu/demo/alex.demo.mount>
- Xalex.demo.mount</A> and run it as
- Xroot. This will do an NFS mount of the demo server.
- X
- X
- X<H2>SEE ALSO</H2>
- X <A HREF=ftp://alex.sp.cs.cmu.edu/user/man-html/cdu.html>cdu</A>, <A HREF=ftp://alex.sp.cs.cmu.edu/user/man-html//lnu.html>lnu</A>, <A HREF=ftp://alex.sp.cs.cmu.edu/user/man-html/mountalex.html>mountalex</A>, <A HREF=ftp://alex.sp.cs.cmu.edu/user/man-html/alexaliases.html>alexaliases</A>, <A HREF=ftp://alex.sp.cs.cmu.edu/user/man-html/archia.html>archia</A>,
- X <A HREF=ftp://alex.sp.cs.cmu.edu/user/man-html/alexupdate.html>alexupdate</A>, <A HREF=ftp://alex.sp.cs.cmu.edu/user/man-html/readmes.html>readmes</A>, <A HREF=ftp://alex.sp.cs.cmu.edu/user/man-html/cmuftp.html>cmuftp</A>, <A HREF=ftp://alex.sp.cs.cmu.edu/user/man-html/alexurl.html>alexurl</A>, <A HREF=ftp://alex.sp.cs.cmu.edu/user/man-html/url2alex.html>url2alex</A>, <A HREF=ftp://alex.sp.cs.cmu.edu/user/man-html/alex2url.html>alex2url</A>, <A HREF=ftp://alex.sp.cs.cmu.edu/user/man-html/alex2html.html>alex2html</A>, <A HREF=ftp://alex.sp.cs.cmu.edu/user/man-html/alexinalex.html>alexinalex</A>
- X
- X
- X
- X<H2>BUGS</H2>
- X
- X To report bugs please send mail to vac@cs.cmu.edu.
- X
- X
- X<H2>AUTHOR</H2>
- X<H3><A href=file://alex.sp.cs.cmu.edu/www/vincent-cate.html>Vincent Cate</A></H3>
- X
- END_OF_FILE
- if test 3315 -ne `wc -c <'alexsrvr/doc/alexuser.html'`; then
- echo shar: \"'alexsrvr/doc/alexuser.html'\" unpacked with wrong size!
- fi
- # end of 'alexsrvr/doc/alexuser.html'
- fi
- if test -f 'alexsrvr/etc/unfsd_exports' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'alexsrvr/etc/unfsd_exports'\"
- else
- echo shar: Extracting \"'alexsrvr/etc/unfsd_exports'\" \(196 characters\)
- sed "s/^X//" >'alexsrvr/etc/unfsd_exports' <<'END_OF_FILE'
- X/usr0/alex HOKUSAI.TRUST.CS.CMU.EDU hokusai.trust.cs.cmu.edu
- X/usr0/alex FURMINT.NECTAR.CS.CMU.EDU furmint.nectar.cs.cmu.edu
- X
- XDUCK.WARP.CS.CMU.EDU
- XCONCORD.NECTAR.CS.CMU.EDU
- XROBIN.WARP.CS.CMU.EDU
- END_OF_FILE
- if test 196 -ne `wc -c <'alexsrvr/etc/unfsd_exports'`; then
- echo shar: \"'alexsrvr/etc/unfsd_exports'\" unpacked with wrong size!
- fi
- # end of 'alexsrvr/etc/unfsd_exports'
- fi
- if test -f 'alexsrvr/lib/README' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'alexsrvr/lib/README'\"
- else
- echo shar: Extracting \"'alexsrvr/lib/README'\" \(385 characters\)
- sed "s/^X//" >'alexsrvr/lib/README' <<'END_OF_FILE'
- X
- X
- XIf you need to edit the HostsList file do the following:
- X
- X 1) grepnkill alexd - to get it to save the current version
- X (note that alex.nanny will restart it)
- X
- X 2) cp HostsList HostsList.new
- X
- X 3) edit HostsList.new as needed (usually just remove old stuff)
- X
- X 4) grepnkill alexd
- X will save HostsList but then find HostsList.new and use that
- X
- X
- X
- END_OF_FILE
- if test 385 -ne `wc -c <'alexsrvr/lib/README'`; then
- echo shar: \"'alexsrvr/lib/README'\" unpacked with wrong size!
- fi
- # end of 'alexsrvr/lib/README'
- fi
- if test -f 'alexsrvr/lib/fix.hostslist' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'alexsrvr/lib/fix.hostslist'\"
- else
- echo shar: Extracting \"'alexsrvr/lib/fix.hostslist'\" \(117 characters\)
- sed "s/^X//" >'alexsrvr/lib/fix.hostslist' <<'END_OF_FILE'
- X#!/bin/csh
- X#
- X#
- X# This is an example of fixing HostsList
- X
- X
- Xsort +0 -1 -u HostsList > HostsList.new
- X
- Xgrepnkill alexd
- X
- END_OF_FILE
- if test 117 -ne `wc -c <'alexsrvr/lib/fix.hostslist'`; then
- echo shar: \"'alexsrvr/lib/fix.hostslist'\" unpacked with wrong size!
- fi
- chmod +x 'alexsrvr/lib/fix.hostslist'
- # end of 'alexsrvr/lib/fix.hostslist'
- fi
- if test -f 'alexsrvr/logs/readme' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'alexsrvr/logs/readme'\"
- else
- echo shar: Extracting \"'alexsrvr/logs/readme'\" \(236 characters\)
- sed "s/^X//" >'alexsrvr/logs/readme' <<'END_OF_FILE'
- X
- XThis directory can be removed and alex-logs made to be a symbolic
- Xlink off to someplace else if you would rather.
- X
- XAlso note that "config.h" can be edited such that "COMPRESSPATH" is
- X"/bin/rm" which is known to save more disk space.
- X
- X
- END_OF_FILE
- if test 236 -ne `wc -c <'alexsrvr/logs/readme'`; then
- echo shar: \"'alexsrvr/logs/readme'\" unpacked with wrong size!
- fi
- # end of 'alexsrvr/logs/readme'
- fi
- if test -f 'alexsrvr/src/UidStrA.awk' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'alexsrvr/src/UidStrA.awk'\"
- else
- echo shar: Extracting \"'alexsrvr/src/UidStrA.awk'\" \(39 characters\)
- sed "s/^X//" >'alexsrvr/src/UidStrA.awk' <<'END_OF_FILE'
- XBEGIN {FS = ":"}
- X{print $3 " " $5}
- X
- X
- END_OF_FILE
- if test 39 -ne `wc -c <'alexsrvr/src/UidStrA.awk'`; then
- echo shar: \"'alexsrvr/src/UidStrA.awk'\" unpacked with wrong size!
- fi
- # end of 'alexsrvr/src/UidStrA.awk'
- fi
- if test -f 'alexsrvr/src/UidStrB.awk' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'alexsrvr/src/UidStrB.awk'\"
- else
- echo shar: Extracting \"'alexsrvr/src/UidStrB.awk'\" \(82 characters\)
- sed "s/^X//" >'alexsrvr/src/UidStrB.awk' <<'END_OF_FILE'
- X{printf "%s %s",$1,$2 ; for (i = 3; i<= NF; i++) printf ".%s",$i ; printf "\n" }
- END_OF_FILE
- if test 82 -ne `wc -c <'alexsrvr/src/UidStrB.awk'`; then
- echo shar: \"'alexsrvr/src/UidStrB.awk'\" unpacked with wrong size!
- fi
- # end of 'alexsrvr/src/UidStrB.awk'
- fi
- if test -f 'alexsrvr/src/alexincs.h' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'alexsrvr/src/alexincs.h'\"
- else
- echo shar: Extracting \"'alexsrvr/src/alexincs.h'\" \(2375 characters\)
- sed "s/^X//" >'alexsrvr/src/alexincs.h' <<'END_OF_FILE'
- X
- X#ifdef __alpha
- X#define ALPHAOSF
- X#endif
- X
- X#include <stdio.h>
- X#include <errno.h>
- X#include <sys/types.h>
- X#include <sys/wait.h>
- X#include <sys/stat.h>
- X#include <strings.h>
- X#include <ctype.h>
- X#include <sys/param.h>
- X
- X#if !defined(ultrix) && !defined(__386BSD__) && !defined(ALPHAOSF) && !defined(__NetBSD__)
- X# include <sys/vfs.h>
- X#endif
- X
- X#include <sys/time.h>
- X#include <sys/timeb.h>
- X
- X#if defined(ultrix) || defined(ALPHAOSF)
- X# include <netinet/in.h> /* needs to be before rpc/*.h and nfs/*.h */
- X# include <ufs/fs.h>
- X# include <rpc/types.h>
- X# include <malloc.h>
- X#endif
- X
- X#ifdef ultrix
- X extern double rint(); /* for some reason this isn't in math.h */
- X# include <sys/mount.h>
- X# include <nfs/nfs_clnt.h>
- X# include <nfs/vfs.h>
- X#else
- X# ifdef MACH
- X# include <sys/inode.h> /* ufs/inode.h on many machines */
- X# include <sys/fs.h> /* ufs/fs.h on many machines */
- X extern char *malloc(); /* seems there is no malloc.h */
- X extern char *realloc();
- X#else
- X# ifdef __linux__
- X# include <malloc.h>
- X# else
- X
- X# if defined(__386BSD__) || defined(__NetBSD__)
- X# include <sys/uio.h>
- X# include <sys/proc.h>
- X# include <sys/ucred.h>
- X# include <ufs/quota.h>
- X# endif
- X# include <sys/vnode.h>
- X# ifdef hpux
- X# include <sys/inode.h>
- X# include <sys/fs.h>
- X# else
- X# include <ufs/inode.h>
- X# include <ufs/fs.h>
- X# endif
- X# if defined(__386BSD__) || defined(__NetBSD__)
- X# include <sys/malloc.h>
- X# else
- X# ifndef NeXT
- X# include <malloc.h> /* Next arpa name server file includes */
- X# endif /* some conflicting definitions */
- X# endif
- X# endif
- X#endif
- X#endif
- X
- X#include <signal.h>
- X#include <netdb.h>
- X#include <arpa/nameser.h>
- X#include <netinet/in.h>
- X#include <arpa/inet.h>
- X#include <resolv.h>
- X#include <sys/socket.h>
- X#include <pwd.h>
- X#if !defined(ultrix) && !defined(__386BSD__) && !defined(ALPHAOSF) && !defined(__NetBSD__)
- X# include <mntent.h>
- X#endif
- X
- X#include <sys/dir.h>
- X#include <math.h>
- X#ifdef hpux
- X#define rint(x) (floor(x + 0.5))
- X#endif
- X
- X#include <sys/ioctl.h>
- X#include <varargs.h>
- X
- X
- X/* ftpparent ftp child stuff */
- X#include <string.h>
- X#include <arpa/ftp.h>
- X#include <arpa/telnet.h>
- X
- X/* unfsd and unfsmntd stuff */
- X#include <sys/file.h>
- X#include <syslog.h>
- X#include <rpc/rpc.h>
- X
- X
- X#ifdef __NetBSD__
- X#include <sys/mount.h>
- X#endif
- X
- X
- END_OF_FILE
- if test 2375 -ne `wc -c <'alexsrvr/src/alexincs.h'`; then
- echo shar: \"'alexsrvr/src/alexincs.h'\" unpacked with wrong size!
- fi
- # end of 'alexsrvr/src/alexincs.h'
- fi
- if test -f 'alexsrvr/src/compat.c' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'alexsrvr/src/compat.c'\"
- else
- echo shar: Extracting \"'alexsrvr/src/compat.c'\" \(338 characters\)
- sed "s/^X//" >'alexsrvr/src/compat.c' <<'END_OF_FILE'
- X
- X#include "config.h"
- X
- X
- X#ifdef hpux
- X
- Xint getdtablesize()
- X{
- X return(64);
- X}
- X
- X#endif
- X
- X#if defined(hpux) || defined(ultrix)
- X
- Xint usleep (us)
- Xunsigned us;
- X{
- X double seconds;
- X int secs;
- X
- X seconds = us/1000000.0;
- X secs = 1 + seconds; /* we will go slower on these machines */
- X
- X sleep(secs);
- X
- X return(0);
- X}
- X
- X#endif
- X
- X
- END_OF_FILE
- if test 338 -ne `wc -c <'alexsrvr/src/compat.c'`; then
- echo shar: \"'alexsrvr/src/compat.c'\" unpacked with wrong size!
- fi
- # end of 'alexsrvr/src/compat.c'
- fi
- if test -f 'alexsrvr/src/config.nfs.h' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'alexsrvr/src/config.nfs.h'\"
- else
- echo shar: Extracting \"'alexsrvr/src/config.nfs.h'\" \(376 characters\)
- sed "s/^X//" >'alexsrvr/src/config.nfs.h' <<'END_OF_FILE'
- X
- X/* By default Alex is world mountable, so the following
- X * should not matter. When alexd is started with a -p
- X * it is "permiscuous".
- X */
- X#define ALEXEXPORTSFILE "/usr/alexsrvr/etc/unfsd_exports"
- X
- X#define ALEXNFSPROG 100003 /* NFS is 100003 */
- X#define ALEXMOUNTPROG 100005 /* NFS is 100005 */
- X#define ALEXNFSPORT 2049 /* NFS is 2049 */
- X
- X
- END_OF_FILE
- if test 376 -ne `wc -c <'alexsrvr/src/config.nfs.h'`; then
- echo shar: \"'alexsrvr/src/config.nfs.h'\" unpacked with wrong size!
- fi
- # end of 'alexsrvr/src/config.nfs.h'
- fi
- if test -f 'alexsrvr/src/cp-rs' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'alexsrvr/src/cp-rs'\"
- else
- echo shar: Extracting \"'alexsrvr/src/cp-rs'\" \(395 characters\)
- sed "s/^X//" >'alexsrvr/src/cp-rs' <<'END_OF_FILE'
- X#!/bin/sh
- X
- X# cp-rs: written by Tony Robinson, ajr@eng.cam.ac.uk
- X# please send me bug reports
- X
- X
- Xif [ $# != 2 -o ! -d $1 ]; then
- X echo Syntax: $0 "<alex dir> <local dir>"
- X exit 1
- Xfi
- X
- Xif [ ! -d $2 ] ; then mkdir $2 ; fi
- X
- Xfor name in `cd $1 ; ls -a` ; do
- X if [ -d $1/$name ] ; then
- X if [ $name != . -a $name != .. ] ; then
- X sh $0 $1/$name $2/$name
- X fi
- X else
- X ln -s $1/$name $2/$name
- X fi
- Xdone
- END_OF_FILE
- if test 395 -ne `wc -c <'alexsrvr/src/cp-rs'`; then
- echo shar: \"'alexsrvr/src/cp-rs'\" unpacked with wrong size!
- fi
- chmod +x 'alexsrvr/src/cp-rs'
- # end of 'alexsrvr/src/cp-rs'
- fi
- if test -f 'alexsrvr/src/fh.h' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'alexsrvr/src/fh.h'\"
- else
- echo shar: Extracting \"'alexsrvr/src/fh.h'\" \(716 characters\)
- sed "s/^X//" >'alexsrvr/src/fh.h' <<'END_OF_FILE'
- X/* UNFSD - copyright Mark A Shand, May 1988.
- X * This software maybe be used for any purpose provided
- X * the above copyright notice is retained. It is supplied
- X * as is, with no warranty expressed or implied.
- X */
- X
- X/* compatibility between mount and nfs_prot */
- X#ifndef NFS_FHSIZE
- X#define NFS_FHSIZE FHSIZE
- X#endif
- X
- X#define INODEARRAYLEN (NFS_FHSIZE/sizeof(u_long)) /* 32/4 = 8 */
- X#define INODEARRAYBYTES INODEARRAY*sizof(u_long) /* for bcmp and bcopy */
- X
- Xtypedef struct
- X{
- X u_long InodeArray[INODEARRAYLEN]; /* first is our inode, next is parents ... */
- X}
- X svc_fh;
- X
- Xextern fh_init();
- Xextern int fh_fd();
- Xextern int fh_path();
- Xextern int fh_compose();
- X
- Xextern char *fh_pr();
- X
- END_OF_FILE
- if test 716 -ne `wc -c <'alexsrvr/src/fh.h'`; then
- echo shar: \"'alexsrvr/src/fh.h'\" unpacked with wrong size!
- fi
- # end of 'alexsrvr/src/fh.h'
- fi
- if test -f 'alexsrvr/src/install' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'alexsrvr/src/install'\"
- else
- echo shar: Extracting \"'alexsrvr/src/install'\" \(1152 characters\)
- sed "s/^X//" >'alexsrvr/src/install' <<'END_OF_FILE'
- X#!/bin/csh -f
- X#
- X# This is used by the makefile after things have been compiled.
- X# This should not be used directly.
- X#
- X
- X
- Xset INSTALLDIR = `./defs install`
- Xset ALEXSRVR = `./defs alexsrvr`
- Xset HOSTNAME = `hostname`
- Xset CACHEDIRVAR = `./defs cachedir`
- Xset ALEXSRVRHOME = `./defs home`
- X
- X/bin/rm -f $INSTALLDIR/defs
- Xcp defs $INSTALLDIR/defs
- X
- X
- Xif ($1 == basic) then
- X echo "updating alexd and alexmountd"
- X /bin/rm -f $INSTALLDIR/alexd
- X /bin/rm -f $INSTALLDIR/alexmountd
- X cp alexd $INSTALLDIR
- X cp alexmountd $INSTALLDIR
- X
- X foreach SCRIPT (`ls scripts`)
- X echo $SCRIPT
- X cat scripts/$SCRIPT | sed s/DEFAULTSERVERHOST/${HOSTNAME}/g | sed s-BINDIR-${INSTALLDIR}-g > $INSTALLDIR/$SCRIPT
- X chmod +x $INSTALLDIR/$SCRIPT
- X end
- Xendif
- X
- Xif ($1 == nonbasic) then
- X echo "updating nonbasic"
- X /bin/rm -f $INSTALLDIR/alexfsck
- X /bin/rm -f $INSTALLDIR/evictor
- X /bin/rm -f $INSTALLDIR/printinfo
- X cp alexfsck $INSTALLDIR
- X cp evictor $INSTALLDIR
- X cp printinfo $INSTALLDIR
- X /bin/rm -f $CACHEDIRVAR/README
- X cp $ALEXSRVRHOME/doc/README.TOP $CACHEDIRVAR/README
- Xendif
- X
- X
- X
- END_OF_FILE
- if test 1152 -ne `wc -c <'alexsrvr/src/install'`; then
- echo shar: \"'alexsrvr/src/install'\" unpacked with wrong size!
- fi
- chmod +x 'alexsrvr/src/install'
- # end of 'alexsrvr/src/install'
- fi
- if test -f 'alexsrvr/src/libdefs' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'alexsrvr/src/libdefs'\"
- else
- echo shar: Extracting \"'alexsrvr/src/libdefs'\" \(245 characters\)
- sed "s/^X//" >'alexsrvr/src/libdefs' <<'END_OF_FILE'
- X#!/bin/csh -f
- X
- X
- Xset LIB = ""
- Xforeach POSIBILITY (/usr/lib/librpc.a /usr/misc/.nfs/lib/librpc.a /usr/lib/librpcsvc.a)
- X if (-f $POSIBILITY) then
- X set LIB=$POSIBILITY
- X endif
- Xend
- X
- Xset RESOLVER = `./defs resolver`
- X
- Xecho $LIB $RESOLVER
- X
- END_OF_FILE
- if test 245 -ne `wc -c <'alexsrvr/src/libdefs'`; then
- echo shar: \"'alexsrvr/src/libdefs'\" unpacked with wrong size!
- fi
- chmod +x 'alexsrvr/src/libdefs'
- # end of 'alexsrvr/src/libdefs'
- fi
- if test -f 'alexsrvr/src/mount.h' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'alexsrvr/src/mount.h'\"
- else
- echo shar: Extracting \"'alexsrvr/src/mount.h'\" \(1613 characters\)
- sed "s/^X//" >'alexsrvr/src/mount.h' <<'END_OF_FILE'
- X#define MNTPATHLEN 1024
- X#define MNTNAMLEN 255
- X#define FHSIZE 32
- X
- Xstruct alex_fhandle {
- X char data[FHSIZE];
- X};
- Xtypedef struct alex_fhandle alex_fhandle;
- Xbool_t xdr_alex_fhandle();
- X
- X
- Xstruct fhstatus {
- X u_int fhs_status;
- X union {
- X struct alex_fhandle fhs_fhandle;
- X } fhstatus_u;
- X};
- Xtypedef struct fhstatus fhstatus;
- Xbool_t xdr_fhstatus();
- X
- X
- Xtypedef char *dirpath;
- Xbool_t xdr_dirpath();
- X
- X
- Xtypedef char *name;
- Xbool_t xdr_name();
- X
- X
- Xtypedef struct mountbody *mountlist;
- Xbool_t xdr_mountlist();
- X
- X
- Xstruct mountbody {
- X name ml_hostname;
- X dirpath ml_directory;
- X mountlist ml_next;
- X};
- Xtypedef struct mountbody mountbody;
- Xbool_t xdr_mountbody();
- X
- X
- Xtypedef struct groupnode *grouplist;
- Xbool_t xdr_grouplist();
- X
- X
- Xstruct groupnode {
- X name gr_name;
- X grouplist gr_next;
- X};
- Xtypedef struct groupnode groupnode;
- Xbool_t xdr_groupnode();
- X
- X
- Xtypedef struct exportnode *exportlist;
- Xbool_t xdr_exportlist();
- X
- X
- Xstruct exportnode {
- X dirpath ex_dir;
- X grouplist ex_groups;
- X exportlist ex_next;
- X};
- Xtypedef struct exportnode exportnode;
- Xbool_t xdr_exportnode();
- X
- X
- X#define MOUNTPROG ((u_long)100005)
- X#define MOUNTVERS ((u_long)1)
- X#define MOUNTPROC_NULL ((u_long)0)
- Xextern void *mountproc_null_1();
- X#define MOUNTPROC_MNT ((u_long)1)
- Xextern fhstatus *mountproc_mnt_1();
- X#define MOUNTPROC_DUMP ((u_long)2)
- Xextern mountlist *mountproc_dump_1();
- X#define MOUNTPROC_UMNT ((u_long)3)
- Xextern void *mountproc_umnt_1();
- X#define MOUNTPROC_UMNTALL ((u_long)4)
- Xextern void *mountproc_umntall_1();
- X#define MOUNTPROC_EXPORT ((u_long)5)
- Xextern exportlist *mountproc_export_1();
- X#define MOUNTPROC_EXPORTALL ((u_long)6)
- Xextern exportlist *mountproc_exportall_1();
- X
- END_OF_FILE
- if test 1613 -ne `wc -c <'alexsrvr/src/mount.h'`; then
- echo shar: \"'alexsrvr/src/mount.h'\" unpacked with wrong size!
- fi
- # end of 'alexsrvr/src/mount.h'
- fi
- if test -f 'alexsrvr/src/mount_svc.c' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'alexsrvr/src/mount_svc.c'\"
- else
- echo shar: Extracting \"'alexsrvr/src/mount_svc.c'\" \(2252 characters\)
- sed "s/^X//" >'alexsrvr/src/mount_svc.c' <<'END_OF_FILE'
- X#include <stdio.h>
- X#include <rpc/rpc.h>
- X#include "mount.h"
- X
- Xstatic void mountprog_1();
- X
- Xmain(argc,argv) int argc; char **argv;
- X{
- X SVCXPRT *transp;
- X
- X (void)init_Log(); pmap_unset(MOUNTPROG, MOUNTVERS);
- X
- X transp = svcudp_create(RPC_ANYSOCK);
- X if (transp == NULL) {
- X (void)fprintf(stderr, "cannot create udp service.\n");
- X exit(1);
- X }
- X if (!svc_register(transp, MOUNTPROG, MOUNTVERS, mountprog_1, IPPROTO_UDP)) {
- X (void)fprintf(stderr, "unable to register (MOUNTPROG, MOUNTVERS, udp).\n");
- X exit(1);
- X }
- X unfsmntd_init(argc,argv); svc_run();
- X (void)fprintf(stderr, "svc_run returned\n");
- X exit(1);
- X}
- X
- Xstatic void
- Xmountprog_1(rqstp, transp)
- X struct svc_req *rqstp;
- X SVCXPRT *transp;
- X{
- X union {
- X dirpath mountproc_mnt_1_arg;
- X dirpath mountproc_umnt_1_arg;
- X } argument;
- X char *result;
- X bool_t (*xdr_argument)(), (*xdr_result)();
- X char *(*local)();
- X
- X switch (rqstp->rq_proc) {
- X case MOUNTPROC_NULL:
- X xdr_argument = xdr_void;
- X xdr_result = xdr_void;
- X local = (char *(*)()) mountproc_null_1;
- X break;
- X
- X case MOUNTPROC_MNT:
- X xdr_argument = xdr_dirpath;
- X xdr_result = xdr_fhstatus;
- X local = (char *(*)()) mountproc_mnt_1;
- X break;
- X
- X case MOUNTPROC_DUMP:
- X xdr_argument = xdr_void;
- X xdr_result = xdr_mountlist;
- X local = (char *(*)()) mountproc_dump_1;
- X break;
- X
- X case MOUNTPROC_UMNT:
- X xdr_argument = xdr_dirpath;
- X xdr_result = xdr_void;
- X local = (char *(*)()) mountproc_umnt_1;
- X break;
- X
- X case MOUNTPROC_UMNTALL:
- X xdr_argument = xdr_void;
- X xdr_result = xdr_void;
- X local = (char *(*)()) mountproc_umntall_1;
- X break;
- X
- X case MOUNTPROC_EXPORT:
- X xdr_argument = xdr_void;
- X xdr_result = xdr_exportlist;
- X local = (char *(*)()) mountproc_export_1;
- X break;
- X
- X case MOUNTPROC_EXPORTALL:
- X xdr_argument = xdr_void;
- X xdr_result = xdr_exportlist;
- X local = (char *(*)()) mountproc_exportall_1;
- X break;
- X
- X default:
- X svcerr_noproc(transp);
- X return;
- X }
- X bzero((char *)&argument, sizeof(argument));
- X if (!svc_getargs(transp, xdr_argument, &argument)) {
- X svcerr_decode(transp);
- X return;
- X }
- X result = (*local)(&argument, rqstp);
- X if (result != NULL && !svc_sendreply(transp, xdr_result, result)) {
- X svcerr_systemerr(transp);
- X }
- X if (!svc_freeargs(transp, xdr_argument, &argument)) {
- X (void)fprintf(stderr, "unable to free arguments\n");
- X exit(1);
- X }
- X}
- X
- END_OF_FILE
- if test 2252 -ne `wc -c <'alexsrvr/src/mount_svc.c'`; then
- echo shar: \"'alexsrvr/src/mount_svc.c'\" unpacked with wrong size!
- fi
- # end of 'alexsrvr/src/mount_svc.c'
- fi
- if test -f 'alexsrvr/src/mount_xdr.c' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'alexsrvr/src/mount_xdr.c'\"
- else
- echo shar: Extracting \"'alexsrvr/src/mount_xdr.c'\" \(2141 characters\)
- sed "s/^X//" >'alexsrvr/src/mount_xdr.c' <<'END_OF_FILE'
- X#include <rpc/rpc.h>
- X#include "mount.h"
- X
- X
- Xbool_t
- Xxdr_alex_fhandle(xdrs, objp)
- X XDR *xdrs;
- X alex_fhandle *objp;
- X{
- X if (!xdr_opaque(xdrs, objp->data, FHSIZE)) {
- X return (FALSE);
- X }
- X return (TRUE);
- X}
- X
- X
- X
- X
- Xbool_t
- Xxdr_fhstatus(xdrs, objp)
- X XDR *xdrs;
- X fhstatus *objp;
- X{
- X if (!xdr_u_int(xdrs, &objp->fhs_status)) {
- X return (FALSE);
- X }
- X switch (objp->fhs_status) {
- X case 0:
- X if (!xdr_alex_fhandle(xdrs, &objp->fhstatus_u.fhs_fhandle)) {
- X return (FALSE);
- X }
- X break;
- X }
- X return (TRUE);
- X}
- X
- X
- X
- X
- Xbool_t
- Xxdr_dirpath(xdrs, objp)
- X XDR *xdrs;
- X dirpath *objp;
- X{
- X if (!xdr_string(xdrs, objp, MNTPATHLEN)) {
- X return (FALSE);
- X }
- X return (TRUE);
- X}
- X
- X
- X
- X
- Xbool_t
- Xxdr_name(xdrs, objp)
- X XDR *xdrs;
- X name *objp;
- X{
- X if (!xdr_string(xdrs, objp, MNTNAMLEN)) {
- X return (FALSE);
- X }
- X return (TRUE);
- X}
- X
- X
- X
- X
- Xbool_t
- Xxdr_mountlist(xdrs, objp)
- X XDR *xdrs;
- X mountlist *objp;
- X{
- X if (!xdr_pointer(xdrs, (char **)objp, sizeof(struct mountbody), xdr_mountbody)) {
- X return (FALSE);
- X }
- X return (TRUE);
- X}
- X
- X
- X
- X
- Xbool_t
- Xxdr_mountbody(xdrs, objp)
- X XDR *xdrs;
- X mountbody *objp;
- X{
- X if (!xdr_name(xdrs, &objp->ml_hostname)) {
- X return (FALSE);
- X }
- X if (!xdr_dirpath(xdrs, &objp->ml_directory)) {
- X return (FALSE);
- X }
- X if (!xdr_mountlist(xdrs, &objp->ml_next)) {
- X return (FALSE);
- X }
- X return (TRUE);
- X}
- X
- X
- X
- X
- Xbool_t
- Xxdr_grouplist(xdrs, objp)
- X XDR *xdrs;
- X grouplist *objp;
- X{
- X if (!xdr_pointer(xdrs, (char **)objp, sizeof(struct groupnode), xdr_groupnode)) {
- X return (FALSE);
- X }
- X return (TRUE);
- X}
- X
- X
- X
- X
- Xbool_t
- Xxdr_groupnode(xdrs, objp)
- X XDR *xdrs;
- X groupnode *objp;
- X{
- X if (!xdr_name(xdrs, &objp->gr_name)) {
- X return (FALSE);
- X }
- X if (!xdr_grouplist(xdrs, &objp->gr_next)) {
- X return (FALSE);
- X }
- X return (TRUE);
- X}
- X
- X
- X
- X
- Xbool_t
- Xxdr_exportlist(xdrs, objp)
- X XDR *xdrs;
- X exportlist *objp;
- X{
- X if (!xdr_pointer(xdrs, (char **)objp, sizeof(struct exportnode), xdr_exportnode)) {
- X return (FALSE);
- X }
- X return (TRUE);
- X}
- X
- X
- X
- X
- Xbool_t
- Xxdr_exportnode(xdrs, objp)
- X XDR *xdrs;
- X exportnode *objp;
- X{
- X if (!xdr_dirpath(xdrs, &objp->ex_dir)) {
- X return (FALSE);
- X }
- X if (!xdr_grouplist(xdrs, &objp->ex_groups)) {
- X return (FALSE);
- X }
- X if (!xdr_exportlist(xdrs, &objp->ex_next)) {
- X return (FALSE);
- X }
- X return (TRUE);
- X}
- X
- X
- END_OF_FILE
- if test 2141 -ne `wc -c <'alexsrvr/src/mount_xdr.c'`; then
- echo shar: \"'alexsrvr/src/mount_xdr.c'\" unpacked with wrong size!
- fi
- # end of 'alexsrvr/src/mount_xdr.c'
- fi
- if test -f 'alexsrvr/src/num' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'alexsrvr/src/num'\"
- else
- echo shar: Extracting \"'alexsrvr/src/num'\" \(3 characters\)
- sed "s/^X//" >'alexsrvr/src/num' <<'END_OF_FILE'
- X45
- END_OF_FILE
- if test 3 -ne `wc -c <'alexsrvr/src/num'`; then
- echo shar: \"'alexsrvr/src/num'\" unpacked with wrong size!
- fi
- # end of 'alexsrvr/src/num'
- fi
- if test -f 'alexsrvr/src/patchalex' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'alexsrvr/src/patchalex'\"
- else
- echo shar: Extracting \"'alexsrvr/src/patchalex'\" \(882 characters\)
- sed "s/^X//" >'alexsrvr/src/patchalex' <<'END_OF_FILE'
- X#!/bin/csh -f
- X#
- X# The Alex release comes with a ~/src/num that indicates what
- X# patch level it is up to. This script can then be used to
- X# update from there to the current release.
- X#
- X
- Xset DIFFDIR = /alex/edu/cmu/cs/sp/alex/src/diffs
- X
- Xcat $DIFFDIR/.alex.update >& /dev/null
- X
- Xset WEHAVEFILE = ~/src/num
- Xif (-f $WEHAVEFILE) then
- X set WEHAVE = `cat $WEHAVEFILE`
- Xelse
- X echo "You can only run patchalex on versions shipped with a num file."
- X exit -1
- Xendif
- X
- Xset CURRENT = `cat $DIFFDIR/num`
- X
- Xcd ~
- X
- Xecho "We have $WEHAVE and current is $CURRENT"
- X
- X
- Xwhile ($WEHAVE < $CURRENT)
- X @ next = $WEHAVE + 1
- X echo " "
- X echo "About to do $DIFFDIR/$next"
- X patch < $DIFFDIR/$next
- X set WEHAVE = $next
- X echo $WEHAVE > $WEHAVEFILE
- Xend
- X
- Xecho $WEHAVE > $WEHAVEFILE
- X
- Xecho " "
- Xecho "patchalex will try to list any rejected patches in src (want No match, Exit 1)"
- X/bin/ls -l src/*.rej
- X
- END_OF_FILE
- if test 882 -ne `wc -c <'alexsrvr/src/patchalex'`; then
- echo shar: \"'alexsrvr/src/patchalex'\" unpacked with wrong size!
- fi
- chmod +x 'alexsrvr/src/patchalex'
- # end of 'alexsrvr/src/patchalex'
- fi
- if test -f 'alexsrvr/src/remtimezonemain.c' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'alexsrvr/src/remtimezonemain.c'\"
- else
- echo shar: Extracting \"'alexsrvr/src/remtimezonemain.c'\" \(772 characters\)
- sed "s/^X//" >'alexsrvr/src/remtimezonemain.c' <<'END_OF_FILE'
- X#include "alexincs.h"
- X#include "alex.h"
- X
- X
- XFILE *debugLog = NULL;
- X
- Xfh_fdclose()
- X{
- X}
- X
- Xmain(argc, argv)
- Xint argc;
- Xchar **argv;
- X{
- X char *myname, *hostname;
- X char name[100];
- X int hesok, timezone;
- X
- X myname = argv[0];
- X if (argc > 2) {
- X printf("usage: %s hostname\n", myname);
- X exit(1);
- X } else if (argc == 2) {
- X hostname = argv[1];
- X } else {
- X (void) scanf("%s", name);
- X hostname=name;
- X }
- X
- X
- X do {
- X hesok=HisClockIsOK(name);
- X if (hesok) {
- X printf("His clock is ok. \n");
- X } else {
- X printf("His clock is ok. \n");
- X }
- X
- X timezone=RemTimeZone(name);
- X printf("And the answer is %d\n", timezone);
- X } while (scanf("%s", name) != EOF);
- X
- X}
- X
- X
- X
- X
- END_OF_FILE
- if test 772 -ne `wc -c <'alexsrvr/src/remtimezonemain.c'`; then
- echo shar: \"'alexsrvr/src/remtimezonemain.c'\" unpacked with wrong size!
- fi
- # end of 'alexsrvr/src/remtimezonemain.c'
- fi
- if test -f 'alexsrvr/src/rpc/auth_unix.h' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'alexsrvr/src/rpc/auth_unix.h'\"
- else
- echo shar: Extracting \"'alexsrvr/src/rpc/auth_unix.h'\" \(2413 characters\)
- sed "s/^X//" >'alexsrvr/src/rpc/auth_unix.h' <<'END_OF_FILE'
- X/* @(#)auth_unix.h 2.2 88/07/29 4.0 RPCSRC; from 1.8 88/02/08 SMI */
- X/*
- X * Sun RPC is a product of Sun Microsystems, Inc. and is provided for
- X * unrestricted use provided that this legend is included on all tape
- X * media and as a part of the software program in whole or part. Users
- X * may copy or modify Sun RPC without charge, but are not authorized
- X * to license or distribute it to anyone else except as part of a product or
- X * program developed by the user.
- X *
- X * SUN RPC IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING THE
- X * WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
- X * PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE.
- X *
- X * Sun RPC is provided with no support and without any obligation on the
- X * part of Sun Microsystems, Inc. to assist in its use, correction,
- X * modification or enhancement.
- X *
- X * SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE
- X * INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY SUN RPC
- X * OR ANY PART THEREOF.
- X *
- X * In no event will Sun Microsystems, Inc. be liable for any lost revenue
- X * or profits or other special, indirect and consequential damages, even if
- X * Sun has been advised of the possibility of such damages.
- X *
- X * Sun Microsystems, Inc.
- X * 2550 Garcia Avenue
- X * Mountain View, California 94043
- X */
- X/* @(#)auth_unix.h 1.5 86/07/16 SMI */
- X
- X/*
- X * auth_unix.h, Protocol for UNIX style authentication parameters for RPC
- X *
- X * Copyright (C) 1984, Sun Microsystems, Inc.
- X */
- X
- X/*
- X * The system is very weak. The client uses no encryption for it
- X * credentials and only sends null verifiers. The server sends backs
- X * null verifiers or optionally a verifier that suggests a new short hand
- X * for the credentials.
- X */
- X
- X/* The machine name is part of a credential; it may not exceed 255 bytes */
- X#define MAX_MACHINE_NAME 255
- X
- X/* gids compose part of a credential; there may not be more than 16 of them */
- X#define NGRPS 16
- X
- X/*
- X * Unix style credentials.
- X */
- Xstruct authunix_parms {
- X u_long aup_time;
- X char *aup_machname;
- X int aup_uid;
- X int aup_gid;
- X u_int aup_len;
- X int *aup_gids;
- X};
- X
- Xextern bool_t xdr_authunix_parms();
- X
- X/*
- X * If a response verifier has flavor AUTH_SHORT,
- X * then the body of the response verifier encapsulates the following structure;
- X * again it is serialized in the obvious fashion.
- X */
- Xstruct short_hand_verf {
- X struct opaque_auth new_cred;
- X};
- END_OF_FILE
- if test 2413 -ne `wc -c <'alexsrvr/src/rpc/auth_unix.h'`; then
- echo shar: \"'alexsrvr/src/rpc/auth_unix.h'\" unpacked with wrong size!
- fi
- # end of 'alexsrvr/src/rpc/auth_unix.h'
- fi
- if test -f 'alexsrvr/src/rpc/netdb.h' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'alexsrvr/src/rpc/netdb.h'\"
- else
- echo shar: Extracting \"'alexsrvr/src/rpc/netdb.h'\" \(1660 characters\)
- sed "s/^X//" >'alexsrvr/src/rpc/netdb.h' <<'END_OF_FILE'
- X/* @(#)netdb.h 2.1 88/07/29 3.9 RPCSRC */
- X/*
- X * Sun RPC is a product of Sun Microsystems, Inc. and is provided for
- X * unrestricted use provided that this legend is included on all tape
- X * media and as a part of the software program in whole or part. Users
- X * may copy or modify Sun RPC without charge, but are not authorized
- X * to license or distribute it to anyone else except as part of a product or
- X * program developed by the user.
- X *
- X * SUN RPC IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING THE
- X * WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
- X * PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE.
- X *
- X * Sun RPC is provided with no support and without any obligation on the
- X * part of Sun Microsystems, Inc. to assist in its use, correction,
- X * modification or enhancement.
- X *
- X * SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE
- X * INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY SUN RPC
- X * OR ANY PART THEREOF.
- X *
- X * In no event will Sun Microsystems, Inc. be liable for any lost revenue
- X * or profits or other special, indirect and consequential damages, even if
- X * Sun has been advised of the possibility of such damages.
- X *
- X * Sun Microsystems, Inc.
- X * 2550 Garcia Avenue
- X * Mountain View, California 94043
- X */
- X/* @(#)rpc.h 1.8 87/07/24 SMI */
- X
- X/* Really belongs in <netdb.h> */
- X
- X/* vac 2/18/91
- X
- Xstruct rpcent {
- X char *r_name; /* name of server for this rpc program * /
- X char **r_aliases; /* alias list * /
- X int r_number; /* rpc program number * /
- X};
- X
- X*/
- X
- Xstruct rpcent *getrpcbyname(), *getrpcbynumber(), *getrpcent();
- END_OF_FILE
- if test 1660 -ne `wc -c <'alexsrvr/src/rpc/netdb.h'`; then
- echo shar: \"'alexsrvr/src/rpc/netdb.h'\" unpacked with wrong size!
- fi
- # end of 'alexsrvr/src/rpc/netdb.h'
- fi
- if test -f 'alexsrvr/src/rpc/pmap_clnt.h' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'alexsrvr/src/rpc/pmap_clnt.h'\"
- else
- echo shar: Extracting \"'alexsrvr/src/rpc/pmap_clnt.h'\" \(2509 characters\)
- sed "s/^X//" >'alexsrvr/src/rpc/pmap_clnt.h' <<'END_OF_FILE'
- X/* @(#)pmap_clnt.h 2.1 88/07/29 4.0 RPCSRC; from 1.11 88/02/08 SMI */
- X/*
- X * Sun RPC is a product of Sun Microsystems, Inc. and is provided for
- X * unrestricted use provided that this legend is included on all tape
- X * media and as a part of the software program in whole or part. Users
- X * may copy or modify Sun RPC without charge, but are not authorized
- X * to license or distribute it to anyone else except as part of a product or
- X * program developed by the user.
- X *
- X * SUN RPC IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING THE
- X * WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
- X * PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE.
- X *
- X * Sun RPC is provided with no support and without any obligation on the
- X * part of Sun Microsystems, Inc. to assist in its use, correction,
- X * modification or enhancement.
- X *
- X * SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE
- X * INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY SUN RPC
- X * OR ANY PART THEREOF.
- X *
- X * In no event will Sun Microsystems, Inc. be liable for any lost revenue
- X * or profits or other special, indirect and consequential damages, even if
- X * Sun has been advised of the possibility of such damages.
- X *
- X * Sun Microsystems, Inc.
- X * 2550 Garcia Avenue
- X * Mountain View, California 94043
- X */
- X
- X/*
- X * pmap_clnt.h
- X * Supplies C routines to get to portmap services.
- X *
- X * Copyright (C) 1984, Sun Microsystems, Inc.
- X */
- X
- X/*
- X * Usage:
- X * success = pmap_set(program, version, protocol, port);
- X * success = pmap_unset(program, version);
- X * port = pmap_getport(address, program, version, protocol);
- X * head = pmap_getmaps(address);
- X * clnt_stat = pmap_rmtcall(address, program, version, procedure,
- X * xdrargs, argsp, xdrres, resp, tout, port_ptr)
- X * (works for udp only.)
- X * clnt_stat = clnt_broadcast(program, version, procedure,
- X * xdrargs, argsp, xdrres, resp, eachresult)
- X * (like pmap_rmtcall, except the call is broadcasted to all
- X * locally connected nets. For each valid response received,
- X * the procedure eachresult is called. Its form is:
- X * done = eachresult(resp, raddr)
- X * bool_t done;
- X * caddr_t resp;
- X * struct sockaddr_in raddr;
- X * where resp points to the results of the call and raddr is the
- X * address if the responder to the broadcast.
- X */
- X
- Xextern bool_t pmap_set();
- Xextern bool_t pmap_unset();
- Xextern struct pmaplist *pmap_getmaps();
- Xenum clnt_stat pmap_rmtcall();
- Xenum clnt_stat clnt_broadcast();
- Xextern u_short pmap_getport();
- END_OF_FILE
- if test 2509 -ne `wc -c <'alexsrvr/src/rpc/pmap_clnt.h'`; then
- echo shar: \"'alexsrvr/src/rpc/pmap_clnt.h'\" unpacked with wrong size!
- fi
- # end of 'alexsrvr/src/rpc/pmap_clnt.h'
- fi
- if test -f 'alexsrvr/src/rpc/pmap_prot.h' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'alexsrvr/src/rpc/pmap_prot.h'\"
- else
- echo shar: Extracting \"'alexsrvr/src/rpc/pmap_prot.h'\" \(3333 characters\)
- sed "s/^X//" >'alexsrvr/src/rpc/pmap_prot.h' <<'END_OF_FILE'
- X/* @(#)pmap_prot.h 2.1 88/07/29 4.0 RPCSRC; from 1.14 88/02/08 SMI */
- X/*
- X * Sun RPC is a product of Sun Microsystems, Inc. and is provided for
- X * unrestricted use provided that this legend is included on all tape
- X * media and as a part of the software program in whole or part. Users
- X * may copy or modify Sun RPC without charge, but are not authorized
- X * to license or distribute it to anyone else except as part of a product or
- X * program developed by the user.
- X *
- X * SUN RPC IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING THE
- X * WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
- X * PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE.
- X *
- X * Sun RPC is provided with no support and without any obligation on the
- X * part of Sun Microsystems, Inc. to assist in its use, correction,
- X * modification or enhancement.
- X *
- X * SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE
- X * INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY SUN RPC
- X * OR ANY PART THEREOF.
- X *
- X * In no event will Sun Microsystems, Inc. be liable for any lost revenue
- X * or profits or other special, indirect and consequential damages, even if
- X * Sun has been advised of the possibility of such damages.
- X *
- X * Sun Microsystems, Inc.
- X * 2550 Garcia Avenue
- X * Mountain View, California 94043
- X */
- X
- X/*
- X * pmap_prot.h
- X * Protocol for the local binder service, or pmap.
- X *
- X * Copyright (C) 1984, Sun Microsystems, Inc.
- X *
- X * The following procedures are supported by the protocol:
- X *
- X * PMAPPROC_NULL() returns ()
- X * takes nothing, returns nothing
- X *
- X * PMAPPROC_SET(struct pmap) returns (bool_t)
- X * TRUE is success, FALSE is failure. Registers the tuple
- X * [prog, vers, prot, port].
- X *
- X * PMAPPROC_UNSET(struct pmap) returns (bool_t)
- X * TRUE is success, FALSE is failure. Un-registers pair
- X * [prog, vers]. prot and port are ignored.
- X *
- X * PMAPPROC_GETPORT(struct pmap) returns (long unsigned).
- X * 0 is failure. Otherwise returns the port number where the pair
- X * [prog, vers] is registered. It may lie!
- X *
- X * PMAPPROC_DUMP() RETURNS (struct pmaplist *)
- X *
- X * PMAPPROC_CALLIT(unsigned, unsigned, unsigned, string<>)
- X * RETURNS (port, string<>);
- X * usage: encapsulatedresults = PMAPPROC_CALLIT(prog, vers, proc, encapsulatedargs);
- X * Calls the procedure on the local machine. If it is not registered,
- X * this procedure is quite; ie it does not return error information!!!
- X * This procedure only is supported on rpc/udp and calls via
- X * rpc/udp. This routine only passes null authentication parameters.
- X * This file has no interface to xdr routines for PMAPPROC_CALLIT.
- X *
- X * The service supports remote procedure calls on udp/ip or tcp/ip socket 111.
- X */
- X
- X#define PMAPPORT ((u_short)111)
- X#define PMAPPROG ((u_long)100000)
- X#define PMAPVERS ((u_long)2)
- X#define PMAPVERS_PROTO ((u_long)2)
- X#define PMAPVERS_ORIG ((u_long)1)
- X#define PMAPPROC_NULL ((u_long)0)
- X#define PMAPPROC_SET ((u_long)1)
- X#define PMAPPROC_UNSET ((u_long)2)
- X#define PMAPPROC_GETPORT ((u_long)3)
- X#define PMAPPROC_DUMP ((u_long)4)
- X#define PMAPPROC_CALLIT ((u_long)5)
- X
- Xstruct pmap {
- X long unsigned pm_prog;
- X long unsigned pm_vers;
- X long unsigned pm_prot;
- X long unsigned pm_port;
- X};
- X
- Xextern bool_t xdr_pmap();
- X
- Xstruct pmaplist {
- X struct pmap pml_map;
- X struct pmaplist *pml_next;
- X};
- X
- Xextern bool_t xdr_pmaplist();
- END_OF_FILE
- if test 3333 -ne `wc -c <'alexsrvr/src/rpc/pmap_prot.h'`; then
- echo shar: \"'alexsrvr/src/rpc/pmap_prot.h'\" unpacked with wrong size!
- fi
- # end of 'alexsrvr/src/rpc/pmap_prot.h'
- fi
- if test -f 'alexsrvr/src/rpc/pmap_rmt.h' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'alexsrvr/src/rpc/pmap_rmt.h'\"
- else
- echo shar: Extracting \"'alexsrvr/src/rpc/pmap_rmt.h'\" \(1761 characters\)
- sed "s/^X//" >'alexsrvr/src/rpc/pmap_rmt.h' <<'END_OF_FILE'
- X/* @(#)pmap_rmt.h 2.1 88/07/29 4.0 RPCSRC; from 1.2 88/02/08 SMI */
- X/*
- X * Sun RPC is a product of Sun Microsystems, Inc. and is provided for
- X * unrestricted use provided that this legend is included on all tape
- X * media and as a part of the software program in whole or part. Users
- X * may copy or modify Sun RPC without charge, but are not authorized
- X * to license or distribute it to anyone else except as part of a product or
- X * program developed by the user.
- X *
- X * SUN RPC IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING THE
- X * WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
- X * PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE.
- X *
- X * Sun RPC is provided with no support and without any obligation on the
- X * part of Sun Microsystems, Inc. to assist in its use, correction,
- X * modification or enhancement.
- X *
- X * SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE
- X * INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY SUN RPC
- X * OR ANY PART THEREOF.
- X *
- X * In no event will Sun Microsystems, Inc. be liable for any lost revenue
- X * or profits or other special, indirect and consequential damages, even if
- X * Sun has been advised of the possibility of such damages.
- X *
- X * Sun Microsystems, Inc.
- X * 2550 Garcia Avenue
- X * Mountain View, California 94043
- X */
- X
- X/*
- X * Structures and XDR routines for parameters to and replies from
- X * the portmapper remote-call-service.
- X *
- X * Copyright (C) 1986, Sun Microsystems, Inc.
- X */
- X
- Xstruct rmtcallargs {
- X u_long prog, vers, proc, arglen;
- X caddr_t args_ptr;
- X xdrproc_t xdr_args;
- X};
- X
- Xbool_t xdr_rmtcall_args();
- X
- Xstruct rmtcallres {
- X u_long *port_ptr;
- X u_long resultslen;
- X caddr_t results_ptr;
- X xdrproc_t xdr_results;
- X};
- X
- Xbool_t xdr_rmtcallres();
- END_OF_FILE
- if test 1761 -ne `wc -c <'alexsrvr/src/rpc/pmap_rmt.h'`; then
- echo shar: \"'alexsrvr/src/rpc/pmap_rmt.h'\" unpacked with wrong size!
- fi
- # end of 'alexsrvr/src/rpc/pmap_rmt.h'
- fi
- if test -f 'alexsrvr/src/rpc/rpc.h' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'alexsrvr/src/rpc/rpc.h'\"
- else
- echo shar: Extracting \"'alexsrvr/src/rpc/rpc.h'\" \(2792 characters\)
- sed "s/^X//" >'alexsrvr/src/rpc/rpc.h' <<'END_OF_FILE'
- X/* @(#)rpc.h 2.3 88/08/10 4.0 RPCSRC; from 1.9 88/02/08 SMI */
- X/*
- X * Sun RPC is a product of Sun Microsystems, Inc. and is provided for
- X * unrestricted use provided that this legend is included on all tape
- X * media and as a part of the software program in whole or part. Users
- X * may copy or modify Sun RPC without charge, but are not authorized
- X * to license or distribute it to anyone else except as part of a product or
- X * program developed by the user.
- X *
- X * SUN RPC IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING THE
- X * WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
- X * PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE.
- X *
- X * Sun RPC is provided with no support and without any obligation on the
- X * part of Sun Microsystems, Inc. to assist in its use, correction,
- X * modification or enhancement.
- X *
- X * SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE
- X * INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY SUN RPC
- X * OR ANY PART THEREOF.
- X *
- X * In no event will Sun Microsystems, Inc. be liable for any lost revenue
- X * or profits or other special, indirect and consequential damages, even if
- X * Sun has been advised of the possibility of such damages.
- X *
- X * Sun Microsystems, Inc.
- X * 2550 Garcia Avenue
- X * Mountain View, California 94043
- X */
- X
- X/*
- X * rpc.h, Just includes the billions of rpc header files necessary to
- X * do remote procedure calling.
- X *
- X * Copyright (C) 1984, Sun Microsystems, Inc.
- X */
- X#ifndef __RPC_HEADER__
- X#define __RPC_HEADER__
- X
- X#include <rpc/types.h> /* some typedefs */
- X#include <netinet/in.h>
- X
- X/* external data representation interfaces */
- X#include <rpc/xdr.h> /* generic (de)serializer */
- X
- X/* Client side only authentication */
- X#include <rpc/auth.h> /* generic authenticator (client side) */
- X
- X/* Client side (mostly) remote procedure call */
- X#include <rpc/clnt.h> /* generic rpc stuff */
- X
- X/* semi-private protocol headers */
- X#include <rpc/rpc_msg.h> /* protocol for rpc messages */
- X#include <rpc/auth_unix.h> /* protocol for unix style cred */
- X/*
- X * Uncomment-out the next line if you are building the rpc library with
- X * DES Authentication (see the README file in the secure_rpc/ directory).
- X */
- X/*#include <rpc/auth_des.h> /* protocol for des style cred */
- X
- X/* Server side only remote procedure callee */
- X#include <rpc/svc.h> /* service manager and multiplexer */
- X#include <rpc/svc_auth.h> /* service side authenticator */
- X
- X/*
- X * COMMENT OUT THE NEXT INCLUDE IF RUNNING ON SUN OS OR ON A VERSION
- X * OF UNIX BASED ON NFSSRC. These systems will already have the structures
- X * defined by <rpc/netdb.h> included in <netdb.h>.
- X */
- X/* routines for parsing /etc/rpc */
- X#include <rpc/netdb.h> /* structures and routines to parse /etc/rpc */
- X
- X#endif /* ndef __RPC_HEADER__ */
- END_OF_FILE
- if test 2792 -ne `wc -c <'alexsrvr/src/rpc/rpc.h'`; then
- echo shar: \"'alexsrvr/src/rpc/rpc.h'\" unpacked with wrong size!
- fi
- # end of 'alexsrvr/src/rpc/rpc.h'
- fi
- if test -f 'alexsrvr/src/rpc/types.h' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'alexsrvr/src/rpc/types.h'\"
- else
- echo shar: Extracting \"'alexsrvr/src/rpc/types.h'\" \(2008 characters\)
- sed "s/^X//" >'alexsrvr/src/rpc/types.h' <<'END_OF_FILE'
- X/* @(#)types.h 2.3 88/08/15 4.0 RPCSRC */
- X/*
- X * Sun RPC is a product of Sun Microsystems, Inc. and is provided for
- X * unrestricted use provided that this legend is included on all tape
- X * media and as a part of the software program in whole or part. Users
- X * may copy or modify Sun RPC without charge, but are not authorized
- X * to license or distribute it to anyone else except as part of a product or
- X * program developed by the user.
- X *
- X * SUN RPC IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING THE
- X * WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
- X * PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE.
- X *
- X * Sun RPC is provided with no support and without any obligation on the
- X * part of Sun Microsystems, Inc. to assist in its use, correction,
- X * modification or enhancement.
- X *
- X * SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE
- X * INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY SUN RPC
- X * OR ANY PART THEREOF.
- X *
- X * In no event will Sun Microsystems, Inc. be liable for any lost revenue
- X * or profits or other special, indirect and consequential damages, even if
- X * Sun has been advised of the possibility of such damages.
- X *
- X * Sun Microsystems, Inc.
- X * 2550 Garcia Avenue
- X * Mountain View, California 94043
- X */
- X/* @(#)types.h 1.18 87/07/24 SMI */
- X
- X/*
- X * Rpc additions to <sys/types.h>
- X */
- X#ifndef __TYPES_RPC_HEADER__
- X#define __TYPES_RPC_HEADER__
- X
- X#define bool_t int
- X#define enum_t int
- X#define FALSE (0)
- X#define TRUE (1)
- X#define __dontcare__ -1
- X#ifndef NULL
- X# define NULL 0
- X#endif
- X
- Xextern char *malloc();
- X#define mem_alloc(bsize) malloc(bsize)
- X#define mem_free(ptr, bsize) free(ptr)
- X
- X#ifndef makedev /* ie, we haven't already included it */
- X#include <sys/types.h>
- X#endif
- X#include <sys/time.h>
- X
- X/* vac
- X#ifndef INADDR_LOOPBACK
- X#define INADDR_LOOPBACK (u_long)0x7F000001
- X#endif
- X */
- X
- X#ifndef MAXHOSTNAMELEN
- X#define MAXHOSTNAMELEN 64
- X#endif
- X
- X#endif /* ndef __TYPES_RPC_HEADER__ */
- END_OF_FILE
- if test 2008 -ne `wc -c <'alexsrvr/src/rpc/types.h'`; then
- echo shar: \"'alexsrvr/src/rpc/types.h'\" unpacked with wrong size!
- fi
- # end of 'alexsrvr/src/rpc/types.h'
- fi
- if test -f 'alexsrvr/src/scripts/alex.nanny' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'alexsrvr/src/scripts/alex.nanny'\"
- else
- echo shar: Extracting \"'alexsrvr/src/scripts/alex.nanny'\" \(1292 characters\)
- sed "s/^X//" >'alexsrvr/src/scripts/alex.nanny' <<'END_OF_FILE'
- X#!/bin/csh -f
- X#
- X# If Alex crashes save the logs and restart
- X#
- X# the ls -l gets the top 2 levels in the file handle cache
- X# the actual fh can reach up 7 levels to something in the cache
- X# this means that paths of 9 or more should work even after restarts
- X#
- X# wait is waiting for alexd to crash (which makes restart.alex finish)
- X
- Xset NUM=1
- X
- Xset LOGDIR = `BINDIR/defs logdir`
- Xset ALEXSRVR = `BINDIR/defs alexsrvr`
- Xset DEBUGLEVEL = `BINDIR/defs debuglevel`
- X
- X
- Xset EPIC = `/bin/date | awk '{print $2_$3_$4}'`
- Xset OLDLOGS = $LOGDIR/oldlogs.$EPIC
- Xmkdir $OLDLOGS
- Xchown $ALEXSRVR $OLDLOGS
- Xset nonomatch
- Xmv -f $LOGDIR/old.* $OLDLOGS
- Xmv -f $LOGDIR/alex.log.* $OLDLOGS
- X
- Xif ($DEBUGLEVEL < 5) then
- X echo "Will remove oldlogs.* in background"
- X (sleep 60; /bin/rm -rf $LOGDIR/oldlogs.*) &
- Xendif
- X
- Xwhile (1)
- X date
- X (sleep 10; if (-d /alex/edu) /bin/ls -l /alex) >& /dev/null &
- X
- X BINDIR/restart.alex
- X
- X set NEWDIR=$LOGDIR/old.$NUM
- X mkdir $NEWDIR
- X chown $ALEXSRVR $NEWDIR
- X mv $LOGDIR/alex.log* $NEWDIR
- X /bin/rm -f $LOGDIR/ftp.log* >& /dev/null
- X if ($DEBUGLEVEL < 5) then
- X echo "Will remove the old logs in 10 minutes"
- X (sleep 600; /bin/rm -rf $NEWDIR) &
- X endif
- X
- X @ NUM++
- X echo $0
- X echo $NUM
- X date
- X sleep 10
- Xend
- X
- X
- X
- END_OF_FILE
- if test 1292 -ne `wc -c <'alexsrvr/src/scripts/alex.nanny'`; then
- echo shar: \"'alexsrvr/src/scripts/alex.nanny'\" unpacked with wrong size!
- fi
- chmod +x 'alexsrvr/src/scripts/alex.nanny'
- # end of 'alexsrvr/src/scripts/alex.nanny'
- fi
- if test -f 'alexsrvr/src/scripts/evictor.nanny' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'alexsrvr/src/scripts/evictor.nanny'\"
- else
- echo shar: Extracting \"'alexsrvr/src/scripts/evictor.nanny'\" \(1298 characters\)
- sed "s/^X//" >'alexsrvr/src/scripts/evictor.nanny' <<'END_OF_FILE'
- X#!/bin/csh -f
- X#
- X# This makes a list of files with ages and sizes,
- X# and then feeds this to "evictor" which evicts files from the
- X# cache as disk space is needed.
- X#
- X# Evictor exits every night at 4 am so that a new find can be done,
- X# or when it has used up too many files.
- X#
- X# evictor.output has output for the last day
- X#
- X
- Xset DEFS = BINDIR/defs
- X
- Xset ALEXSRVR = `$DEFS alexsrvr`
- Xset EFFUSER = `whoami`
- X
- Xif (($EFFUSER == root ) || ($EFFUSER == rootl)) then
- X echo "Going to run as $ALEXSRVR"
- X exec su $ALEXSRVR -c BINDIR/evictor.nanny
- X exit $status
- Xendif
- X
- Xif ($EFFUSER != $ALEXSRVR ) then
- X echo "Must be run by root or $ALEXSRVR not $EFFUSER"
- X exit -8
- Xendif
- X
- Xnice +10
- X
- X
- Xset CACHEDIR=`$DEFS cachedir`
- Xecho "CACHEDIR is $CACHEDIR"
- X
- Xset CACHEINFOHEAD = `$DEFS cacheinfohead`
- Xecho "CACHEINFOHEAD is $CACHEINFOHEAD"
- X
- Xset T=`$DEFS tmpdir`
- Xecho "The temporary directory we are using is $T"
- X
- Xif (! -e $T) then
- X echo "Making tmp directory"
- X mkdir $T
- Xendif
- X
- X
- Xwhile (1)
- X date
- X if (! -f $T/nofind) then
- X find $CACHEDIR -print | BINDIR/printinfo | sort -nr -T $T | compress -c > $T/cacheinfo.Z
- X zcat $T/cacheinfo.Z | head -1 > $CACHEINFOHEAD
- X date
- X endif
- X /bin/rm -f $T/evictor.output
- X zcat $T/cacheinfo.Z | BINDIR/evictor >& $T/evictor.output
- Xend
- X
- X
- X
- END_OF_FILE
- if test 1298 -ne `wc -c <'alexsrvr/src/scripts/evictor.nanny'`; then
- echo shar: \"'alexsrvr/src/scripts/evictor.nanny'\" unpacked with wrong size!
- fi
- chmod +x 'alexsrvr/src/scripts/evictor.nanny'
- # end of 'alexsrvr/src/scripts/evictor.nanny'
- fi
- if test -f 'alexsrvr/src/scripts/grepnkill' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'alexsrvr/src/scripts/grepnkill'\"
- else
- echo shar: Extracting \"'alexsrvr/src/scripts/grepnkill'\" \(428 characters\)
- sed "s/^X//" >'alexsrvr/src/scripts/grepnkill' <<'END_OF_FILE'
- X#! /bin/csh -f
- X# grepnkill - Grep and Kill
- X#
- X# grep ps -x for $1 and kill that process.
- X#
- X# Note that this process and the grep process are saved by the grep -v grep
- X# because the name of this script includes "grep"
- X#
- X
- Xif (-f /hp-ux) then
- X set NUM=`ps -ef | grep $1 | grep -v grep | awk '{print $2}'`
- Xelse
- X set NUM=`ps -auxww | grep $1 | grep -v grep | awk '{print $2}'`
- Xendif
- X
- Xecho "About to kill $NUM"
- Xkill -1 $NUM
- X
- END_OF_FILE
- if test 428 -ne `wc -c <'alexsrvr/src/scripts/grepnkill'`; then
- echo shar: \"'alexsrvr/src/scripts/grepnkill'\" unpacked with wrong size!
- fi
- chmod +x 'alexsrvr/src/scripts/grepnkill'
- # end of 'alexsrvr/src/scripts/grepnkill'
- fi
- if test -f 'alexsrvr/src/scripts/grepnkill9' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'alexsrvr/src/scripts/grepnkill9'\"
- else
- echo shar: Extracting \"'alexsrvr/src/scripts/grepnkill9'\" \(427 characters\)
- sed "s/^X//" >'alexsrvr/src/scripts/grepnkill9' <<'END_OF_FILE'
- X#! /bin/csh -f
- X# grepnkill - Grep and Kill
- X#
- X# grep ps -x for $1 and kill that process.
- X#
- X# Note that this process and the grep process are saved by the grep -v grep
- X# because the name of this script includes "grep"
- X#
- X
- Xif (-f /hp-ux) then
- X set NUM=`ps -ef | grep $1 | grep -v grep | awk '{print $2}'`
- Xelse
- X set NUM=`ps -auxww | grep $1 | grep -v grep | awk '{print $2}'`
- Xendif
- X
- Xecho "About to kill $NUM"
- Xkill -9 $NUM
- X
- END_OF_FILE
- if test 427 -ne `wc -c <'alexsrvr/src/scripts/grepnkill9'`; then
- echo shar: \"'alexsrvr/src/scripts/grepnkill9'\" unpacked with wrong size!
- fi
- chmod +x 'alexsrvr/src/scripts/grepnkill9'
- # end of 'alexsrvr/src/scripts/grepnkill9'
- fi
- if test -f 'alexsrvr/src/scripts/regression.test' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'alexsrvr/src/scripts/regression.test'\"
- else
- echo shar: Extracting \"'alexsrvr/src/scripts/regression.test'\" \(3874 characters\)
- sed "s/^X//" >'alexsrvr/src/scripts/regression.test' <<'END_OF_FILE'
- X#!/bin/csh -f
- X#
- X# usage: regression.test [filewithpaths]
- X#
- X# examples:
- X# regression.test
- X# regression.test ~/lib/testfiles
- X# regression.test ~/lib/testfiles.furmint
- X#
- X# Removes each of these files from the cache and then checks that
- X# the size Alex shows is the same as what wc gives through alex
- X# and what ends up in the cache - all of which must not be zero.
- X#
- X
- Xif (.$1. == ..) then
- X set INPUT = $0
- X set COMMAND = "tail -11 "
- Xelse
- X set INPUT = $1
- X set COMMAND = cat
- Xendif
- X
- Xecho $0
- X
- Xset DEFS = BINDIR/defs
- Xset CACHEDIR=`$DEFS cachedir`
- Xecho "The cache directory is $CACHEDIR"
- X
- Xecho "Removing furmint tree from cache"
- X/bin/rm -rf $CACHEDIR/edu/cmu/cs/nectar/furmint
- X
- Xecho "Removing sp tree from cache to remove .alex.info with info on alex hostalias"
- X/bin/rm -rf $CACHEDIR/edu/cmu/cs/sp
- X
- Xecho "Removing /ca/ucalgary/cpsc and children to test adding hosts"
- X/bin/rm -rf $CACHEDIR/ca/ucalgary/cpsc
- X
- Xecho "Removing furmint, alex, and /alex/ca/ucalgary/cpsc (and spsc/*) from HostsList"
- Xgrep -v "/edu/cmu/cs/nectar/furmint" ~/lib/HostsList | \
- X grep -v "/edu/cmu/cs/sp/alex" | grep -v "/ca/ucalgary/cpsc" > ~/lib/HostsList.new
- X
- Xsleep 10
- Xecho "Going to kill alexd both to see if it restarts ok and to use latest code"
- XBINDIR/grepnkill alexd
- X
- X
- Xsleep 30
- Xecho "Doing an ls /alex"
- X/bin/ls /alex
- X
- Xset TMP = /tmp/reg.test.tmp
- X
- X
- Xset COUNTFIVE = 0
- Xforeach FILE (`$COMMAND $INPUT`)
- X echo " "
- X echo $FILE
- X set CACHEDFILE = `echo $FILE | sed s./alex.$CACHEDIR.`
- X
- X @ COUNTFIVE ++
- X echo $COUNTFIVE
- X# 1,2,3 we remove - 4, we leave alone
- X# 5+ we make file wrong size if there and wait enough that Alex will refetch it then to 0
- X if ($COUNTFIVE > 4) then
- X (echo "Date to make wrong size" >> $CACHEDFILE) >& /dev/null
- X if ($status == 0) then
- X echo "Have made file in cache the wrong size - wait a bit"
- X sleep 65
- X set COUNTFIVE = 0
- X else
- X echo "Could not make wrong size - directory must not exist"
- X endif
- X else
- X if ($COUNTFIVE < 4) then
- X /bin/rm -f $CACHEDFILE
- X endif
- X endif
- X
- X echo "Going to do latency check"
- X /bin/time strings $FILE | head >& /dev/null
- X
- X set WCSIZE = `/bin/time cat $FILE | wc -c`
- X if ($status != 0) goto error
- X
- X set LSSIZE = `/bin/ls -l $FILE | awk '{print $4}'`
- X if ($status != 0) goto error
- X
- X /bin/rm -f $TMP
- X sleep 1
- X (/bin/ls -l $CACHEDFILE > $TMP ) >& /dev/null
- X if ($status != 0) then
- X set CSIZE = 0
- X else
- X set CSIZE = `head -2 $TMP | tail -1 | awk '{print $4}'`
- X endif
- X
- X
- X echo "LS= $LSSIZE WC= $WCSIZE C= $CSIZE"
- X
- X if (($LSSIZE > 0) && ($LSSIZE == $WCSIZE) && ($WCSIZE == $CSIZE)) then
- X echo "Looks fine."
- X else
- X if (($LSSIZE > 0) && ($LSSIZE == $WCSIZE)) then
- X echo "Probably ok but ls-l of cached file shows wrong size "
- X else
- X echo "$FILE *****ERROR******"
- X endif
- X endif
- X
- X echo " "
- X set status = 0
- Xend
- X
- Xexit 0
- X
- Xerror: echo "ERROR $status $FILE"
- Xexit -1
- X
- X
- X**************************************************************************
- XBelow this are the 10 default test files (tail above has number).
- X**************************************************************************
- X
- X/alex/edu/cmu/cs/sp/alex/src/README
- X/alex/edu/cmu/cs/sp/alex/src/alex.tar.Z
- X/alex/edu/cmu/cs/nectar/furmint/chimphuman.mail/34
- X/alex/edu/cmu/cs/nectar/furmint/space-companies
- X/alex/gov/nasa/gsfc/nsinic/images/gif/nasa/best1.gif
- X/alex/edu/cmu/cs/nectar/furmint/space-investors.mail/88
- X/alex/edu/ucar/unidata/pub/gopherd/gopher-data/Images/sample.sat/eir.gif
- X/alex/edu/duke/cs/dist/papers/NUMAtic/CS-1990-10.ps.Z
- X/alex/edu/ucla/cs/delphi/pub/ficus/usenix_summer_90.ps.gz
- X/alex/edu/ohio-state/cis/archive/pub/tech-report/1993/TR07.ps.gz
- X/alex/net/concert/ncnoc/rfc/rfc-index.txt
- END_OF_FILE
- if test 3874 -ne `wc -c <'alexsrvr/src/scripts/regression.test'`; then
- echo shar: \"'alexsrvr/src/scripts/regression.test'\" unpacked with wrong size!
- fi
- chmod +x 'alexsrvr/src/scripts/regression.test'
- # end of 'alexsrvr/src/scripts/regression.test'
- fi
- if test -f 'alexsrvr/src/scripts/restart.alex' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'alexsrvr/src/scripts/restart.alex'\"
- else
- echo shar: Extracting \"'alexsrvr/src/scripts/restart.alex'\" \(129 characters\)
- sed "s/^X//" >'alexsrvr/src/scripts/restart.alex' <<'END_OF_FILE'
- X#!/bin/csh -f
- X
- Xecho $0
- Xdate
- X
- Xsetenv HOME `BINDIR/defs home`
- Xsetenv USER `BINDIR/defs alexsrvr`
- X
- Xcd $HOME
- X
- Xexec BINDIR/alexd -p
- X
- END_OF_FILE
- if test 129 -ne `wc -c <'alexsrvr/src/scripts/restart.alex'`; then
- echo shar: \"'alexsrvr/src/scripts/restart.alex'\" unpacked with wrong size!
- fi
- chmod +x 'alexsrvr/src/scripts/restart.alex'
- # end of 'alexsrvr/src/scripts/restart.alex'
- fi
- if test -f 'alexsrvr/src/scripts/runalexfsck' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'alexsrvr/src/scripts/runalexfsck'\"
- else
- echo shar: Extracting \"'alexsrvr/src/scripts/runalexfsck'\" \(1318 characters\)
- sed "s/^X//" >'alexsrvr/src/scripts/runalexfsck' <<'END_OF_FILE'
- X#!/bin/csh -f
- X#
- X# It is not clear this script is ready for general consumption.
- X# Removing everything under CACHDIR is a fine option if this
- X# does not work - remember that it is only a cache.
- X#
- X# Flags:
- X# r - print out readmes
- X# q - quick - do not check consistency (currently does not work with r)
- X# h - print histograms
- X#
- X
- Xunlimit datasize
- Xunlimit stacksize
- X
- Xset DEFS = BINDIR/defs
- Xset CACHEDIR=`$DEFS cachedir`
- Xecho "The cache directory is $CACHEDIR"
- X
- X# /usr/bin/sort only takes up to 21 chars in path so this could be too long
- X# depending on what all is in CACHEDIR
- Xset T = `$DEFS tmpdir`
- X
- Xif (! -e $T) then
- X echo "Making tmp directory"
- X mkdir $T
- Xendif
- X
- Xecho "The tmpdir is $T"
- Xcd $T
- X
- Xdate
- Xfind $CACHEDIR -name .alex.info -print | sed s-/.alex.info-- | sort -T $T > alex.info.dirs
- Xdate
- X
- Xcat alex.info.dirs | BINDIR/alexfsck $1 >& results.fsck
- Xdate
- X
- X
- Xgrep "was new in" results.fsck | awk '{print $7}' > no.dot
- Xgrep "did not point" results.fsck | awk '{print $11}' | sed s-/.alex.info-- > no.dotdot
- X
- X
- Xcat no.dot no.dotdot | sed s.$CACHEDIR./alex. | sort -u > need.update
- X
- Xwc need.update
- X
- Xmkdir .split
- X/bin/rm .split/*
- X
- Xsplit -100 need.update .split/
- Xforeach SET ( `ls .split` )
- X date
- X foreach PATH (`cat .split/$SET`)
- X echo $PATH
- X cat $PATH/.alex.update
- X end
- Xend
- X
- END_OF_FILE
- if test 1318 -ne `wc -c <'alexsrvr/src/scripts/runalexfsck'`; then
- echo shar: \"'alexsrvr/src/scripts/runalexfsck'\" unpacked with wrong size!
- fi
- chmod +x 'alexsrvr/src/scripts/runalexfsck'
- # end of 'alexsrvr/src/scripts/runalexfsck'
- fi
- if test -f 'alexsrvr/src/scripts/stop.alex' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'alexsrvr/src/scripts/stop.alex'\"
- else
- echo shar: Extracting \"'alexsrvr/src/scripts/stop.alex'\" \(390 characters\)
- sed "s/^X//" >'alexsrvr/src/scripts/stop.alex' <<'END_OF_FILE'
- X#!/bin/csh -f
- X
- X
- Xecho "Trying to unmount /alex"
- XBINDIR/mountalex -u &
- Xsleep 30
- X
- Xalias gk BINDIR/grepnkill
- Xalias gk9 BINDIR/grepnkill9
- X
- X
- Xecho "Killing nannys"
- Xgk9 alex.nanny
- Xgk9 evictor.nanny
- X
- Xsleep 5
- Xecho "Killing evictor"
- Xgk9 evictor
- Xgk9 cacheinfo.Z
- X
- Xecho "Terminating alexd and alexmountd"
- Xgk alexd
- Xgk9 alexmountd
- X
- X
- Xecho "Waiting for alexd to shut down"
- Xsleep 120
- X
- Xgk9 alexd
- X
- Xsleep 10
- X
- X
- END_OF_FILE
- if test 390 -ne `wc -c <'alexsrvr/src/scripts/stop.alex'`; then
- echo shar: \"'alexsrvr/src/scripts/stop.alex'\" unpacked with wrong size!
- fi
- chmod +x 'alexsrvr/src/scripts/stop.alex'
- # end of 'alexsrvr/src/scripts/stop.alex'
- fi
- if test -f 'alexsrvr/src/todo.c' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'alexsrvr/src/todo.c'\"
- else
- echo shar: Extracting \"'alexsrvr/src/todo.c'\" \(981 characters\)
- sed "s/^X//" >'alexsrvr/src/todo.c' <<'END_OF_FILE'
- X
- X/*
- X
- X This is a wish list for Alex changes. If someone wants to
- Xhack on Alex, these are things I think would really help.
- X
- X
- X 1) Make RemTimeZone() be off in a child process (as FTPs are).
- X The parent can just return AWORKING if the child does not
- X have the answer right then. This way the main process would
- X not block.
- X
- X 2) OutputHostsBefore() in dirtoinfo.c does a linear scan of
- X the list of known hosts (order 6,000) doing a strcmp() for
- X each, on every update of a directory. This takes some time.
- X A tree datastructure that mirrors the hierarchy of the hostnames
- X with entries pointing to the current list would not be too hard.
- X This would let OutputHostsBefore() just walk down the node for
- X the current directory. This would be far faster.
- X
- X 3) I would love to see the output of a profile program run on Alex.
- X I could not get the profilers here to work. Something like
- X pixie woudl be wonderful.
- X
- X
- X -- Vince
- X
- X
- X*/
- X
- END_OF_FILE
- if test 981 -ne `wc -c <'alexsrvr/src/todo.c'`; then
- echo shar: \"'alexsrvr/src/todo.c'\" unpacked with wrong size!
- fi
- # end of 'alexsrvr/src/todo.c'
- fi
- if test -f 'alexsrvr/src/unfsd.h' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'alexsrvr/src/unfsd.h'\"
- else
- echo shar: Extracting \"'alexsrvr/src/unfsd.h'\" \(998 characters\)
- sed "s/^X//" >'alexsrvr/src/unfsd.h' <<'END_OF_FILE'
- X/* UNFSD - copyright Mark A Shand, May 1988.
- X * This software maybe be used for any purpose provided
- X * the above copyright notice is retained. It is supplied
- X * as is, with no warranty expressed or implied.
- X */
- X
- X
- X#include "nfs_prot.h"
- X
- X
- X
- Xtypedef struct options
- X{
- X /* uid/gid mapping functions */
- X enum {map_daemon, identity} uidmap;
- X int root_squash;
- X /* client options */
- X int secure_port;
- X int read_only;
- X int link_relative;
- X}
- X options;
- X
- Xtypedef struct clnt_param
- X{
- X struct clnt_param *next;
- X
- X struct in_addr clnt_addr;
- X char *clnt_name;
- X char *mount_point;
- X options o;
- X}
- X clnt_param;
- X
- Xextern ftype ft_map[16];
- Xextern int svc_euid;
- Xextern int svc_egid;
- Xextern int cur_gid;
- Xextern int svc_ngids;
- Xextern int svc_gids[NGROUPS+2];
- X
- X#define ft_extr(x) ((x & S_IFMT) >> 12)
- X#define in_gid_set(gid) ((gid) == cur_gid || _in_gid_set(gid))
- X
- Xextern int _in_gid_set();
- Xextern clnt_param *knownclient();
- X
- X#define LogUnfsd(n, a, r) LogUnfsdReal(10, n, a, r)
- Xextern LogUnfsdReal();
- X
- Xextern int AlexInit();
- X
- END_OF_FILE
- if test 998 -ne `wc -c <'alexsrvr/src/unfsd.h'`; then
- echo shar: \"'alexsrvr/src/unfsd.h'\" unpacked with wrong size!
- fi
- # end of 'alexsrvr/src/unfsd.h'
- fi
- if test -f 'alexsrvr/tmp/readme' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'alexsrvr/tmp/readme'\"
- else
- echo shar: Extracting \"'alexsrvr/tmp/readme'\" \(149 characters\)
- sed "s/^X//" >'alexsrvr/tmp/readme' <<'END_OF_FILE'
- X
- XThis is where temprorary files go.
- XThe more interesting alexd log files are in /usr/alexsrvr/log.
- X
- XThis file is partly here to make tar work right.
- END_OF_FILE
- if test 149 -ne `wc -c <'alexsrvr/tmp/readme'`; then
- echo shar: \"'alexsrvr/tmp/readme'\" unpacked with wrong size!
- fi
- # end of 'alexsrvr/tmp/readme'
- fi
- echo shar: End of archive 13 \(of 13\).
- cp /dev/null ark13isdone
- MISSING=""
- for I in 1 2 3 4 5 6 7 8 9 10 11 12 13 ; do
- if test ! -f ark${I}isdone ; then
- MISSING="${MISSING} ${I}"
- fi
- done
- if test "${MISSING}" = "" ; then
- echo You have unpacked all 13 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...
-