home *** CD-ROM | disk | FTP | other *** search
/ Source Code 1994 March / Source_Code_CD-ROM_Walnut_Creek_March_1994.iso / compsrcs / misc / volume34 / fsp / part04 < prev    next >
Encoding:
Text File  |  1992-12-17  |  50.5 KB  |  1,744 lines

  1. Newsgroups: comp.sources.misc
  2. From: wen-king@vlsi.cs.caltech.edu (Wen-King Su)
  3. Subject:  v34i078:  fsp - Internet archive server and client software, Part04/04
  4. Message-ID: <1992Dec18.164053.11528@sparky.imd.sterling.com>
  5. X-Md4-Signature: a83319d39750b1ed36319d810ad735b5
  6. Date: Fri, 18 Dec 1992 16:40:53 GMT
  7. Approved: kent@sparky.imd.sterling.com
  8.  
  9. Submitted-by: wen-king@vlsi.cs.caltech.edu (Wen-King Su)
  10. Posting-number: Volume 34, Issue 78
  11. Archive-name: fsp/part04
  12. Environment: UNIX, Sockets
  13.  
  14. #! /bin/sh
  15. # This is a shell archive.  Remove anything before this line, then feed it
  16. # into a shell via "sh file" or similar.  To overwrite existing files,
  17. # type "sh file -c".
  18. # Contents:  bsd_src/Makefile bsd_src/cmp.c bsd_src/tweak.h
  19. #   bsd_src/util.c client_def.h fcat.1 fcatcmd.1 fcatcmd.c fcd.1
  20. #   fcdcmd.c fget.1 fgetcmd.1 fgetcmd.c fgrab.1 fgrabcmd.c fls.1
  21. #   flscmd.1 flscmd.c fmkdir.1 fmkdir.c fpro.1 fprocmd.1 fput.1 fput.c
  22. #   frm.1 frmcmd.1 frmcmd.c frmdir.1 frmdircmd.1 frmdircmd.c fver.1
  23. #   fver.c merge.c setup
  24. # Wrapped by kent@sparky on Fri Dec 18 10:21:26 1992
  25. PATH=/bin:/usr/bin:/usr/ucb:/usr/local/bin:/usr/lbin ; export PATH
  26. echo If this archive is complete, you will see the following message:
  27. echo '          "shar: End of archive 4 (of 4)."'
  28. if test -f 'bsd_src/Makefile' -a "${1}" != "-c" ; then 
  29.   echo shar: Will not clobber existing file \"'bsd_src/Makefile'\"
  30. else
  31.   echo shar: Extracting \"'bsd_src/Makefile'\" \(721 characters\)
  32.   sed "s/^X//" >'bsd_src/Makefile' <<'END_OF_FILE'
  33. X# This subdirectory contains modified version of files obtained from the
  34. X# uunet.uu.net archive.  You need to do 'make' in this directory first.
  35. X# You may have to edit tweak.h to get things to them to properly on your
  36. X# system.
  37. X
  38. X# The bsd glob.c file has a bug in blkfree function in that it tries to
  39. X# free something that is actually on the stack of the glob function.
  40. X# The last call to free has been commented out to fix the bug.
  41. X
  42. XCFLAGS=-g
  43. X
  44. Xall: cmp.o glob.o ls.o print.o util.o random.o
  45. X
  46. Xcmp.o: cmp.c ls.h tweak.h
  47. Xglob.o: glob.c ../client_def.h ../common_def.h tweak.h
  48. Xls.o: ls.c ../client_def.h ../common_def.h ls.h tweak.h
  49. Xprint.o: print.c ls.h tweak.h
  50. Xutil.o: util.c tweak.h
  51. Xrandom.o: random.c
  52. X
  53. Xclean:
  54. X    rm -f *.o
  55. END_OF_FILE
  56.   if test 721 -ne `wc -c <'bsd_src/Makefile'`; then
  57.     echo shar: \"'bsd_src/Makefile'\" unpacked with wrong size!
  58.   fi
  59.   # end of 'bsd_src/Makefile'
  60. fi
  61. if test -f 'bsd_src/cmp.c' -a "${1}" != "-c" ; then 
  62.   echo shar: Will not clobber existing file \"'bsd_src/cmp.c'\"
  63. else
  64.   echo shar: Extracting \"'bsd_src/cmp.c'\" \(1934 characters\)
  65.   sed "s/^X//" >'bsd_src/cmp.c' <<'END_OF_FILE'
  66. X/*
  67. X * Copyright (c) 1989 The Regents of the University of California.
  68. X * All rights reserved.
  69. X *
  70. X * This code is derived from software contributed to Berkeley by
  71. X * Michael Fischbein.
  72. X *
  73. X * Redistribution and use in source and binary forms are permitted
  74. X * provided that: (1) source distributions retain this entire copyright
  75. X * notice and comment, and (2) distributions including binaries display
  76. X * the following acknowledgement:  ``This product includes software
  77. X * developed by the University of California, Berkeley and its contributors''
  78. X * in the documentation or other materials provided with the distribution
  79. X * and in all advertising materials mentioning features or use of this
  80. X * software. Neither the name of the University nor the names of its
  81. X * contributors may be used to endorse or promote products derived
  82. X * from this software without specific prior written permission.
  83. X * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
  84. X * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
  85. X * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
  86. X */
  87. X
  88. X#ifndef lint
  89. Xstatic char sccsid[] = "@(#)cmp.c    5.2 (Berkeley) 4/8/90";
  90. X#endif /* not lint */
  91. X
  92. X#include <sys/types.h>
  93. X#include <sys/stat.h>
  94. X#include "ls.h"
  95. X#include "tweak.h"
  96. X
  97. Xnamecmp(a, b)
  98. X    LS *a, *b;
  99. X{
  100. X    return(strcmp(a->name, b->name));
  101. X}
  102. X
  103. Xrevnamecmp(a, b)
  104. X    LS *a, *b;
  105. X{
  106. X    return(strcmp(b->name, a->name));
  107. X}
  108. X
  109. Xmodcmp(a, b)
  110. X    LS *a, *b;
  111. X{
  112. X    return(-(int)(a->lstat.st_mtime - b->lstat.st_mtime));
  113. X}
  114. X
  115. Xrevmodcmp(a, b)
  116. X    LS *a, *b;
  117. X{
  118. X    return(-(int)(b->lstat.st_mtime - a->lstat.st_mtime));
  119. X}
  120. X
  121. Xacccmp(a, b)
  122. X    LS *a, *b;
  123. X{
  124. X    return(-(int)(a->lstat.st_atime - b->lstat.st_atime));
  125. X}
  126. X
  127. Xrevacccmp(a, b)
  128. X    LS *a, *b;
  129. X{
  130. X    return(-(int)(b->lstat.st_atime - a->lstat.st_atime));
  131. X}
  132. X
  133. Xstatcmp(a, b)
  134. X    LS *a, *b;
  135. X{
  136. X    return(-(int)(a->lstat.st_ctime - b->lstat.st_ctime));
  137. X}
  138. X
  139. Xrevstatcmp(a, b)
  140. X    LS *a, *b;
  141. X{
  142. X    return(-(int)(b->lstat.st_ctime - a->lstat.st_ctime));
  143. X}
  144. END_OF_FILE
  145.   if test 1934 -ne `wc -c <'bsd_src/cmp.c'`; then
  146.     echo shar: \"'bsd_src/cmp.c'\" unpacked with wrong size!
  147.   fi
  148.   # end of 'bsd_src/cmp.c'
  149. fi
  150. if test -f 'bsd_src/tweak.h' -a "${1}" != "-c" ; then 
  151.   echo shar: Will not clobber existing file \"'bsd_src/tweak.h'\"
  152. else
  153.   echo shar: Extracting \"'bsd_src/tweak.h'\" \(681 characters\)
  154.   sed "s/^X//" >'bsd_src/tweak.h' <<'END_OF_FILE'
  155. X    /*********************************************************************\
  156. X    *  Copyright (c) 1991 by Wen-King Su (wen-king@vlsi.cs.caltech.edu)   *
  157. X    *                                                                     *
  158. X    *  You may copy or modify this file in any manner you wish, provided  *
  159. X    *  that this notice is always included, and that you hold the author  *
  160. X    *  harmless for any loss or damage resulting from the installation or *
  161. X    *  use of this software.                                              *
  162. X    \*********************************************************************/
  163. X
  164. X/* #define d_ino d_fileno        /* */
  165. X/* #define mode_t unsigned short    /* */
  166. END_OF_FILE
  167.   if test 681 -ne `wc -c <'bsd_src/tweak.h'`; then
  168.     echo shar: \"'bsd_src/tweak.h'\" unpacked with wrong size!
  169.   fi
  170.   # end of 'bsd_src/tweak.h'
  171. fi
  172. if test -f 'bsd_src/util.c' -a "${1}" != "-c" ; then 
  173.   echo shar: Will not clobber existing file \"'bsd_src/util.c'\"
  174. else
  175.   echo shar: Extracting \"'bsd_src/util.c'\" \(1739 characters\)
  176.   sed "s/^X//" >'bsd_src/util.c' <<'END_OF_FILE'
  177. X/*
  178. X * Copyright (c) 1989 The Regents of the University of California.
  179. X * All rights reserved.
  180. X *
  181. X * This code is derived from software contributed to Berkeley by
  182. X * Michael Fischbein.
  183. X *
  184. X * Redistribution and use in source and binary forms are permitted
  185. X * provided that: (1) source distributions retain this entire copyright
  186. X * notice and comment, and (2) distributions including binaries display
  187. X * the following acknowledgement:  ``This product includes software
  188. X * developed by the University of California, Berkeley and its contributors''
  189. X * in the documentation or other materials provided with the distribution
  190. X * and in all advertising materials mentioning features or use of this
  191. X * software. Neither the name of the University nor the names of its
  192. X * contributors may be used to endorse or promote products derived
  193. X * from this software without specific prior written permission.
  194. X * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
  195. X * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
  196. X * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
  197. X */
  198. X
  199. X#ifndef lint
  200. Xstatic char sccsid[] = "@(#)util.c    5.7 (Berkeley) 4/8/90";
  201. X#endif /* not lint */
  202. X
  203. X#include <sys/types.h>
  204. X#include <stdio.h>
  205. X#include <ctype.h>
  206. X#include "tweak.h"
  207. X
  208. Xprcopy(src, dest, len)
  209. X    register char *src, *dest;
  210. X    register int len;
  211. X{
  212. X    register int ch;
  213. X
  214. X    while(len--) {
  215. X        ch = *src++;
  216. X        *dest++ = isprint(ch) ? ch : '?';
  217. X    }
  218. X}
  219. X
  220. Xchar
  221. X*emalloc(size)
  222. X    unsigned int size;
  223. X{
  224. X    char *retval, *malloc();
  225. X
  226. X    if (!(retval = malloc(size)))
  227. X        nomem();
  228. X    return(retval);
  229. X}
  230. X
  231. Xnomem()
  232. X{
  233. X    (void)fprintf(stderr, "ls: out of memory.\n");
  234. X    ls_bad(1);
  235. X}
  236. X
  237. Xusage()
  238. X{
  239. X    (void)fprintf(stderr, "usage: ls [-1ACFLRacdfgiklqrstu] [file ...]\n");
  240. X    ls_bad(1);
  241. X}
  242. END_OF_FILE
  243.   if test 1739 -ne `wc -c <'bsd_src/util.c'`; then
  244.     echo shar: \"'bsd_src/util.c'\" unpacked with wrong size!
  245.   fi
  246.   # end of 'bsd_src/util.c'
  247. fi
  248. if test -f 'client_def.h' -a "${1}" != "-c" ; then 
  249.   echo shar: Will not clobber existing file \"'client_def.h'\"
  250. else
  251.   echo shar: Extracting \"'client_def.h'\" \(1632 characters\)
  252.   sed "s/^X//" >'client_def.h' <<'END_OF_FILE'
  253. X    /*********************************************************************\
  254. X    *  Copyright (c) 1991 by Wen-King Su (wen-king@vlsi.cs.caltech.edu)   *
  255. X    *                                                                     *
  256. X    *  You may copy or modify this file in any manner you wish, provided  *
  257. X    *  that this notice is always included, and that you hold the author  *
  258. X    *  harmless for any loss or damage resulting from the installation or *
  259. X    *  use of this software.                                              *
  260. X    \*********************************************************************/
  261. X
  262. X#include "common_def.h"
  263. X
  264. X/****************************************************************************
  265. X* These structures are used to implement a opendir/readdir mechanism similar
  266. X* to that of the normal opendir/reader mechanism in unix.
  267. X****************************************************************************/
  268. X
  269. Xtypedef struct DDLIST {    struct DDLIST *next;
  270. X            char          *path;
  271. X            RDIRENT  **dep_root;
  272. X            int         ref_cnt; } DDLIST;
  273. X
  274. Xtypedef struct RDIR { DDLIST   *ddp;
  275. X              RDIRENT **dep; } RDIR;
  276. X
  277. Xtypedef struct rdirent { unsigned long  d_fileno;
  278. X             unsigned short d_reclen;
  279. X             unsigned short d_namlen;
  280. X             char          *d_name; } rdirent;
  281. X
  282. Xextern UBUF     *client_interact();
  283. Xextern RDIRENT **get_dir_blk();
  284. Xextern rdirent  *util_readdir();
  285. Xextern RDIR     *util_opendir();
  286. X
  287. Xextern int client_trace;
  288. Xextern int client_intr_state;
  289. Xextern int key_persists;
  290. Xextern unsigned long target_delay;
  291. Xextern unsigned long udp_sent_time;
  292. Xextern unsigned short client_buf_len;
  293. Xextern unsigned short client_net_len;
  294. END_OF_FILE
  295.   if test 1632 -ne `wc -c <'client_def.h'`; then
  296.     echo shar: \"'client_def.h'\" unpacked with wrong size!
  297.   fi
  298.   # end of 'client_def.h'
  299. fi
  300. if test -f 'fcat.1' -a "${1}" != "-c" ; then 
  301.   echo shar: Will not clobber existing file \"'fcat.1'\"
  302. else
  303.   echo shar: Extracting \"'fcat.1'\" \(27 characters\)
  304.   sed "s/^X//" >'fcat.1' <<'END_OF_FILE'
  305. X.so man1/fcatcmd.1
  306. X.SP
  307. X.I0
  308. END_OF_FILE
  309.   if test 27 -ne `wc -c <'fcat.1'`; then
  310.     echo shar: \"'fcat.1'\" unpacked with wrong size!
  311.   fi
  312.   # end of 'fcat.1'
  313. fi
  314. if test -f 'fcatcmd.1' -a "${1}" != "-c" ; then 
  315.   echo shar: Will not clobber existing file \"'fcatcmd.1'\"
  316. else
  317.   echo shar: Extracting \"'fcatcmd.1'\" \(1766 characters\)
  318.   sed "s/^X//" >'fcatcmd.1' <<'END_OF_FILE'
  319. X.TH FCAT 1 "8 December 1991"
  320. X.SH NAME
  321. Xfcatcmd, fcat \- copy files in the FSP database to stdout
  322. X.SH SYNOPSIS
  323. X.B fcatcmd
  324. X.I filename
  325. X\&.\|.\|.
  326. X.LP
  327. X.B fcat
  328. X.I filename
  329. X\&.\|.\|.
  330. X.SH DESCRIPTION
  331. X.LP
  332. XFor each file named in the argument list,
  333. X.B fcatcmd
  334. Xreads the file and writes the content of the file to its
  335. X.B stdout.
  336. X.LP
  337. X.B fcatcmd
  338. Xwill perform
  339. X.B csh
  340. Xfile name globbing based on file and directory information
  341. Xobtained from the FSP database.
  342. X.LP
  343. XSince user's command shells generally cannot do the proper globbing for
  344. Xthis program, it is recommended that user defines a shell alias or
  345. Xfucntion to turns off command shell globbing before running this program.
  346. X.B csh
  347. Xexample:
  348. X.LP
  349. X.nf
  350. Xalias fcat \e(set noglob\e; exec fcatcmd \e!\e*\e)
  351. X.fi
  352. X.SH ENVIRONMENT
  353. X.LP
  354. XThe following variables associate this program with a FSP database:
  355. X.TP
  356. X.B FSP_HOST
  357. XThe name or internet number of the machine with the FSP server.
  358. X.TP
  359. X.B FSP_PORT
  360. XThe port number of the UDP socket used by the FSP server.
  361. X.TP
  362. X.B FSP_LOCALPORT
  363. XThe port number of the UDP socket used by FSP client utilities.
  364. XThe only reason to define this varable is to ensure mutual
  365. Xexclusion of client commands when none of the udp packet
  366. Xmultiplexing mechanisms are enabled during compile time.
  367. XYou may pick any number not currently used for other purposes.
  368. X.TP
  369. X.B FSP_DIR
  370. XThe current working directory of the client in the FSP database.
  371. XThe root of the database is /.
  372. X.TP
  373. X.B FSP_TRACE
  374. XIf this variable is set,
  375. X.B fcatcmd
  376. Xwill display the number of kilo-byte blocks transfered as transfer
  377. Xprogresses.  This variable has no effect when the standard output
  378. Xis a terminal.
  379. X.SH "SEE ALSO"
  380. X.PD
  381. Xfcatcmd(1), fcdcmd(1), fgetcmd(1), fgrabcmd(1), flscmd(1), fmkdir(1),
  382. Xfprocmd(1), fput(1), frmcmd(1), frmdircmd(1), fver(1), fspd(1)
  383. END_OF_FILE
  384.   if test 1766 -ne `wc -c <'fcatcmd.1'`; then
  385.     echo shar: \"'fcatcmd.1'\" unpacked with wrong size!
  386.   fi
  387.   # end of 'fcatcmd.1'
  388. fi
  389. if test -f 'fcatcmd.c' -a "${1}" != "-c" ; then 
  390.   echo shar: Will not clobber existing file \"'fcatcmd.c'\"
  391. else
  392.   echo shar: Extracting \"'fcatcmd.c'\" \(1196 characters\)
  393.   sed "s/^X//" >'fcatcmd.c' <<'END_OF_FILE'
  394. X    /*********************************************************************\
  395. X    *  Copyright (c) 1991 by Wen-King Su (wen-king@vlsi.cs.caltech.edu)   *
  396. X    *                                                                     *
  397. X    *  You may copy or modify this file in any manner you wish, provided  *
  398. X    *  that this notice is always included, and that you hold the author  *
  399. X    *  harmless for any loss or damage resulting from the installation or *
  400. X    *  use of this software.                                              *
  401. X    \*********************************************************************/
  402. X
  403. X#include "client_def.h"
  404. X
  405. Xextern char **glob();
  406. X
  407. Xstatic void dont_die(){}
  408. X
  409. Xstatic get_file(path)
  410. X    char *path;
  411. X{
  412. X    char *name, *t2;
  413. X    FILE *fp;
  414. X
  415. X    for(name = t2 = path; *t2; t2++) if(*t2 == '/') name = t2 + 1;
  416. X    util_download(path,stdout);
  417. X}
  418. X
  419. Xmain(argc,argv,envp)
  420. X    int argc;
  421. X    char **argv,**envp;
  422. X{
  423. X    char **av, *av2[2];
  424. X
  425. X    env_client();
  426. X
  427. X    signal(SIGPIPE,dont_die);
  428. X    if(isatty(1)) client_trace = 0;
  429. X
  430. X    while(*++argv)
  431. X    {
  432. X    if(!(av = glob(*argv))) { av = av2; av2[0] = *argv; av2[1] = 0; }
  433. X    while(*av) get_file(*av++);
  434. X    }
  435. X
  436. X    client_done();
  437. X
  438. X    exit(0);
  439. X}
  440. END_OF_FILE
  441.   if test 1196 -ne `wc -c <'fcatcmd.c'`; then
  442.     echo shar: \"'fcatcmd.c'\" unpacked with wrong size!
  443.   fi
  444.   # end of 'fcatcmd.c'
  445. fi
  446. if test -f 'fcd.1' -a "${1}" != "-c" ; then 
  447.   echo shar: Will not clobber existing file \"'fcd.1'\"
  448. else
  449.   echo shar: Extracting \"'fcd.1'\" \(26 characters\)
  450.   sed "s/^X//" >'fcd.1' <<'END_OF_FILE'
  451. X.so man1/fcdcmd.1
  452. X.SP
  453. X.I0
  454. END_OF_FILE
  455.   if test 26 -ne `wc -c <'fcd.1'`; then
  456.     echo shar: \"'fcd.1'\" unpacked with wrong size!
  457.   fi
  458.   # end of 'fcd.1'
  459. fi
  460. if test -f 'fcdcmd.c' -a "${1}" != "-c" ; then 
  461.   echo shar: Will not clobber existing file \"'fcdcmd.c'\"
  462. else
  463.   echo shar: Extracting \"'fcdcmd.c'\" \(1379 characters\)
  464.   sed "s/^X//" >'fcdcmd.c' <<'END_OF_FILE'
  465. X    /*********************************************************************\
  466. X    *  Copyright (c) 1991 by Wen-King Su (wen-king@vlsi.cs.caltech.edu)   *
  467. X    *                                                                     *
  468. X    *  You may copy or modify this file in any manner you wish, provided  *
  469. X    *  that this notice is always included, and that you hold the author  *
  470. X    *  harmless for any loss or damage resulting from the installation or *
  471. X    *  use of this software.                                              *
  472. X    \*********************************************************************/
  473. X
  474. X#include "client_def.h"
  475. X
  476. Xextern char **glob();
  477. Xextern char *env_dir;
  478. Xextern char *util_abs_path();
  479. X
  480. Xstatic print_pro(p)
  481. X    char *p;
  482. X{
  483. X    UBUF *ub;
  484. X
  485. X    ub = client_interact(CC_GET_PRO,0L, strlen(p),p+1, 0,NULLP);
  486. X
  487. X    if(ub->cmd == CC_ERR)
  488. X    {
  489. X    fprintf(stderr,"ERR: %s\n",ub->buf);
  490. X    return(0);
  491. X
  492. X    } else
  493. X    {
  494. X    fprintf(stderr,"directory mode: %s\n",ub->buf);
  495. X    return(1);
  496. X    }
  497. X}
  498. X
  499. Xmain(argc,argv,envp)
  500. X    int argc;
  501. X    char **argv, **envp;
  502. X{
  503. X    char *np;
  504. X    char **av, *av2[2];
  505. X
  506. X    env_client();
  507. X    if(argc == 1)
  508. X    {
  509. X    print_pro("/");
  510. X    puts("/");
  511. X    }
  512. X    else
  513. X    {
  514. X        if(!(av = glob(argv[1]))) { av = av2; av2[0] = *argv; av2[1] = 0; }
  515. X    np = util_abs_path(*av);
  516. X    if(print_pro(np)) puts(np); else puts(env_dir);
  517. X    }
  518. X    client_done();
  519. X    exit(0);
  520. X}
  521. END_OF_FILE
  522.   if test 1379 -ne `wc -c <'fcdcmd.c'`; then
  523.     echo shar: \"'fcdcmd.c'\" unpacked with wrong size!
  524.   fi
  525.   # end of 'fcdcmd.c'
  526. fi
  527. if test -f 'fget.1' -a "${1}" != "-c" ; then 
  528.   echo shar: Will not clobber existing file \"'fget.1'\"
  529. else
  530.   echo shar: Extracting \"'fget.1'\" \(27 characters\)
  531.   sed "s/^X//" >'fget.1' <<'END_OF_FILE'
  532. X.so man1/fgetcmd.1
  533. X.SP
  534. X.I0
  535. END_OF_FILE
  536.   if test 27 -ne `wc -c <'fget.1'`; then
  537.     echo shar: \"'fget.1'\" unpacked with wrong size!
  538.   fi
  539.   # end of 'fget.1'
  540. fi
  541. if test -f 'fgetcmd.1' -a "${1}" != "-c" ; then 
  542.   echo shar: Will not clobber existing file \"'fgetcmd.1'\"
  543. else
  544.   echo shar: Extracting \"'fgetcmd.1'\" \(1890 characters\)
  545.   sed "s/^X//" >'fgetcmd.1' <<'END_OF_FILE'
  546. X.TH FGET 1 "8 December 1991"
  547. X.SH NAME
  548. Xfgetcmd, fget \- download files from the FSP database
  549. X.SH SYNOPSIS
  550. X.B fgetcmd
  551. X.br
  552. X.B fgetcmd
  553. X.I filename
  554. X\&.\|.\|.
  555. X.LP
  556. X.B fget
  557. X.br
  558. X.B fget
  559. X.I filename
  560. X\&.\|.\|.
  561. X.SH DESCRIPTION
  562. X.LP
  563. XWhen used without arguments, a list of file names is read from the
  564. Xstandard input.  When arguments are given, the arguments are taken
  565. Xto be the list of file names.  For each file named in the list,
  566. X.B fgetcmd
  567. Xcopies the file to the client's current working directory in the
  568. Xclient machine.
  569. X.B fgetcmd
  570. Xwill perform
  571. X.B csh
  572. Xfile name globbing based on file and directory information
  573. Xobtained from the FSP database.
  574. X.LP
  575. XSince user's command shells generally cannot do the proper globbing for
  576. Xthis program, it is recommended that user defines a shell alias or
  577. Xfucntion to turns off command shell globbing before running this program.
  578. X.B csh
  579. Xexample:
  580. X.LP
  581. X.nf
  582. Xalias fget \e(set noglob\e; exec fgetcmd \e!\e*\e)
  583. X.fi
  584. X.SH ENVIRONMENT
  585. X.LP
  586. XThe following variables associate this program with a FSP database:
  587. X.TP
  588. X.B FSP_HOST
  589. XThe name or internet number of the machine with the FSP server.
  590. X.TP
  591. X.B FSP_PORT
  592. XThe port number of the UDP socket used by the FSP server.
  593. X.TP
  594. X.B FSP_LOCALPORT
  595. XThe port number of the UDP socket used by FSP client utilities.
  596. XThe only reason to define this varable is to ensure mutual
  597. Xexclusion of client commands when none of the udp packet
  598. Xmultiplexing mechanisms are enabled during compile time.
  599. XYou may pick any number not currently used for other purposes.
  600. X.TP
  601. X.B FSP_DIR
  602. XThe current working directory of the client in the FSP database.
  603. XThe root of the database is /.
  604. X.TP
  605. X.B FSP_TRACE
  606. XIf this variable is set,   
  607. X.B fgetcmd
  608. Xwill display the number of kilo-byte blocks transfered as transfer 
  609. Xprogresses. 
  610. X.SH "SEE ALSO"
  611. X.PD
  612. Xfcatcmd(1), fcdcmd(1), fgetcmd(1), fgrabcmd(1), flscmd(1), fmkdir(1),
  613. Xfprocmd(1), fput(1), frmcmd(1), frmdircmd(1), fver(1), fspd(1)
  614. END_OF_FILE
  615.   if test 1890 -ne `wc -c <'fgetcmd.1'`; then
  616.     echo shar: \"'fgetcmd.1'\" unpacked with wrong size!
  617.   fi
  618.   # end of 'fgetcmd.1'
  619. fi
  620. if test -f 'fgetcmd.c' -a "${1}" != "-c" ; then 
  621.   echo shar: Will not clobber existing file \"'fgetcmd.c'\"
  622. else
  623.   echo shar: Extracting \"'fgetcmd.c'\" \(1580 characters\)
  624.   sed "s/^X//" >'fgetcmd.c' <<'END_OF_FILE'
  625. X    /*********************************************************************\
  626. X    *  Copyright (c) 1991 by Wen-King Su (wen-king@vlsi.cs.caltech.edu)   *
  627. X    *                                                                     *
  628. X    *  You may copy or modify this file in any manner you wish, provided  *
  629. X    *  that this notice is always included, and that you hold the author  *
  630. X    *  harmless for any loss or damage resulting from the installation or *
  631. X    *  use of this software.                                              *
  632. X    \*********************************************************************/
  633. X
  634. X#include "client_def.h"
  635. X
  636. Xextern char **glob();
  637. X
  638. Xstatic get_file(path)
  639. X    char *path;
  640. X{
  641. X    char *name, *t2;
  642. X    FILE *fp;
  643. X
  644. X    for(name = t2 = path; *t2; t2++) if(*t2 == '/') name = t2 + 1;
  645. X
  646. X    if(fp = fopen(name,"w"))
  647. X    {
  648. X    if(util_download(path,fp) == -1) { fclose(fp); unlink(name); }
  649. X                    else { fclose(fp);               }
  650. X
  651. X    } else fprintf(stderr,"Cannot write %s\n",name);
  652. X}
  653. X
  654. Xmain(argc,argv,envp)
  655. X    int argc;
  656. X    char **argv,**envp;
  657. X{
  658. X    char **av, *av2[2], n[1024];
  659. X    int prompt;
  660. X
  661. X    env_client();
  662. X
  663. X    if(argc > 1)
  664. X    {
  665. X    while(*++argv)
  666. X    {
  667. X        if(!(av = glob(*argv))) { av = av2; av2[0] = *argv; av2[1] = 0; }
  668. X        while(*av) get_file(*av++);
  669. X    }
  670. X    } else
  671. X    {
  672. X    prompt = isatty(0);
  673. X
  674. X    while(1)
  675. X    {
  676. X        if(prompt) { fputs("fget: ",stdout); fflush(stdout); }
  677. X        if(!gets(n)) break;
  678. X        if(!*n) continue;
  679. X        if(!(av = glob(n))) { av = av2; av2[0] = n; av2[1] = 0; }
  680. X        while(*av) get_file(*av++);
  681. X    }
  682. X    }
  683. X
  684. X    client_done();
  685. X
  686. X    exit(0);
  687. X}
  688. END_OF_FILE
  689.   if test 1580 -ne `wc -c <'fgetcmd.c'`; then
  690.     echo shar: \"'fgetcmd.c'\" unpacked with wrong size!
  691.   fi
  692.   # end of 'fgetcmd.c'
  693. fi
  694. if test -f 'fgrab.1' -a "${1}" != "-c" ; then 
  695.   echo shar: Will not clobber existing file \"'fgrab.1'\"
  696. else
  697.   echo shar: Extracting \"'fgrab.1'\" \(28 characters\)
  698.   sed "s/^X//" >'fgrab.1' <<'END_OF_FILE'
  699. X.so man1/fgrabcmd.1
  700. X.SP
  701. X.I0
  702. END_OF_FILE
  703.   if test 28 -ne `wc -c <'fgrab.1'`; then
  704.     echo shar: \"'fgrab.1'\" unpacked with wrong size!
  705.   fi
  706.   # end of 'fgrab.1'
  707. fi
  708. if test -f 'fgrabcmd.c' -a "${1}" != "-c" ; then 
  709.   echo shar: Will not clobber existing file \"'fgrabcmd.c'\"
  710. else
  711.   echo shar: Extracting \"'fgrabcmd.c'\" \(1586 characters\)
  712.   sed "s/^X//" >'fgrabcmd.c' <<'END_OF_FILE'
  713. X    /*********************************************************************\
  714. X    *  Copyright (c) 1991 by Wen-King Su (wen-king@vlsi.cs.caltech.edu)   *
  715. X    *                                                                     *
  716. X    *  You may copy or modify this file in any manner you wish, provided  *
  717. X    *  that this notice is always included, and that you hold the author  *
  718. X    *  harmless for any loss or damage resulting from the installation or *
  719. X    *  use of this software.                                              *
  720. X    \*********************************************************************/
  721. X
  722. X#include "client_def.h"
  723. X
  724. Xextern char **glob();
  725. X
  726. Xstatic grab_file(path)
  727. X    char *path;
  728. X{
  729. X    char *name, *t2;
  730. X    FILE *fp;
  731. X
  732. X    for(name = t2 = path; *t2; t2++) if(*t2 == '/') name = t2 + 1;
  733. X
  734. X    if(fp = fopen(name,"w"))
  735. X    {
  736. X    if(util_grab_file(path,fp) == -1) { fclose(fp); unlink(name); }
  737. X                     else { fclose(fp);               }
  738. X
  739. X    } else fprintf(stderr,"Cannot write %s\n",name);
  740. X}
  741. X
  742. Xmain(argc,argv,envp)
  743. X    int argc;
  744. X    char **argv,**envp;
  745. X{
  746. X    char **av, *av2[2], n[1024];
  747. X    int prompt;
  748. X
  749. X    env_client();
  750. X
  751. X    if(argc > 1)
  752. X    {
  753. X    while(*++argv)
  754. X    {
  755. X        if(!(av = glob(*argv))) { av = av2; av2[0] = *argv; av2[1] = 0; }
  756. X        while(*av) grab_file(*av++);
  757. X    }
  758. X    } else
  759. X    {
  760. X    prompt = isatty(0);
  761. X
  762. X    while(1)
  763. X    {
  764. X        if(prompt) { fputs("fgrab: ",stdout); fflush(stdout); }
  765. X        if(!gets(n)) break;
  766. X        if(!*n) continue;
  767. X        if(!(av = glob(n))) { av = av2; av2[0] = n; av2[1] = 0; }
  768. X        while(*av) grab_file(*av++);
  769. X    }
  770. X    }
  771. X
  772. X    client_done();
  773. X
  774. X    exit(0);
  775. X}
  776. END_OF_FILE
  777.   if test 1586 -ne `wc -c <'fgrabcmd.c'`; then
  778.     echo shar: \"'fgrabcmd.c'\" unpacked with wrong size!
  779.   fi
  780.   # end of 'fgrabcmd.c'
  781. fi
  782. if test -f 'fls.1' -a "${1}" != "-c" ; then 
  783.   echo shar: Will not clobber existing file \"'fls.1'\"
  784. else
  785.   echo shar: Extracting \"'fls.1'\" \(26 characters\)
  786.   sed "s/^X//" >'fls.1' <<'END_OF_FILE'
  787. X.so man1/flscmd.1
  788. X.SP
  789. X.I0
  790. END_OF_FILE
  791.   if test 26 -ne `wc -c <'fls.1'`; then
  792.     echo shar: \"'fls.1'\" unpacked with wrong size!
  793.   fi
  794.   # end of 'fls.1'
  795. fi
  796. if test -f 'flscmd.1' -a "${1}" != "-c" ; then 
  797.   echo shar: Will not clobber existing file \"'flscmd.1'\"
  798. else
  799.   echo shar: Extracting \"'flscmd.1'\" \(1939 characters\)
  800.   sed "s/^X//" >'flscmd.1' <<'END_OF_FILE'
  801. X.TH FLS 1 "8 December 1991"
  802. X.SH NAME
  803. Xflscmd, fls \- list the contents of a FSP database
  804. X.SH SYNOPSIS
  805. X.B flscmd
  806. X[
  807. X.B unix ls flags
  808. X]
  809. X.I filename
  810. X\&.\|.\|.
  811. X.LP
  812. X.B fls
  813. X[
  814. X.B unix ls flags
  815. X]
  816. X.I filename
  817. X\&.\|.\|.
  818. X.SH DESCRIPTION
  819. X.LP
  820. X.B flscmd
  821. Xlists the content of the FSP database.  All usual
  822. Xflags and usages for the unix
  823. X.B ls
  824. Xcommand are accepted.
  825. X.LP
  826. X.B flscmd
  827. Xwill perform
  828. X.B csh
  829. Xfile name globbing based on file and directory information
  830. Xobtained from the FSP database.
  831. X.LP
  832. XSince user's command shells generally cannot do the proper globbing for
  833. Xthis program, it is recommended that user defines a shell alias or
  834. Xfucntion to turns off command shell globbing before running this program.
  835. X.B csh
  836. Xexample:
  837. X.LP
  838. X.nf
  839. Xalias fls \e(set noglob\e; exec flscmd \e!\e*\e)
  840. X.fi
  841. X.SH ENVIRONMENT
  842. X.LP
  843. XThe following variables associate this program with a FSP database:
  844. X.TP
  845. X.B FSP_HOST
  846. XThe name or internet number of the machine with the FSP server.
  847. X.TP
  848. X.B FSP_PORT
  849. XThe port number of the UDP socket used by the FSP server.
  850. X.TP
  851. X.B FSP_LOCALPORT
  852. XThe port number of the UDP socket used by FSP client utilities.
  853. XThe only reason to define this varable is to ensure mutual
  854. Xexclusion of client commands when none of the udp packet
  855. Xmultiplexing mechanisms are enabled during compile time.
  856. XYou may pick any number not currently used for other purposes.
  857. X.TP
  858. X.B FSP_DIR
  859. XThe current working directory of the client in the FSP database.
  860. XThe root of the database is /.
  861. X.SH "SEE ALSO"
  862. X.PD
  863. Xfcatcmd(1), fcdcmd(1), fgetcmd(1), fgrabcmd(1), flscmd(1), fmkdir(1),
  864. Xfprocmd(1), fput(1), frmcmd(1), frmdircmd(1), fver(1), fspd(1)
  865. X.br
  866. X.ne 5
  867. X.SH BUGS
  868. X.LP
  869. X.B flscmd
  870. Xis based on 4.3
  871. X.B ls
  872. Xcode.  It inherits any bugs found in 4.3
  873. X.B ls.
  874. XIn addition, only four pieces of information for each file and directory
  875. Xare available through FSP:
  876. X.B name,
  877. X.B time,
  878. X.B size,
  879. Xand
  880. X.B type.
  881. XAll other information that
  882. X.B flscmd
  883. Xdisplay are for compatibility purposes only
  884. Xand are forged locally.
  885. END_OF_FILE
  886.   if test 1939 -ne `wc -c <'flscmd.1'`; then
  887.     echo shar: \"'flscmd.1'\" unpacked with wrong size!
  888.   fi
  889.   # end of 'flscmd.1'
  890. fi
  891. if test -f 'flscmd.c' -a "${1}" != "-c" ; then 
  892.   echo shar: Will not clobber existing file \"'flscmd.c'\"
  893. else
  894.   echo shar: Extracting \"'flscmd.c'\" \(880 characters\)
  895.   sed "s/^X//" >'flscmd.c' <<'END_OF_FILE'
  896. X    /*********************************************************************\
  897. X    *  Copyright (c) 1991 by Wen-King Su (wen-king@vlsi.cs.caltech.edu)   *
  898. X    *                                                                     *
  899. X    *  You may copy or modify this file in any manner you wish, provided  *
  900. X    *  that this notice is always included, and that you hold the author  *
  901. X    *  harmless for any loss or damage resulting from the installation or *
  902. X    *  use of this software.                                              *
  903. X    \*********************************************************************/
  904. X
  905. X#include "client_def.h"
  906. X
  907. Xls_bad(n)
  908. X    int n;
  909. X{
  910. X    client_done();
  911. X    exit(n);
  912. X}
  913. X
  914. Xmain(argc,argv,envp)
  915. X    int argc;
  916. X    char **argv,**envp;
  917. X{
  918. X    unsigned long pos;
  919. X    RDIRENT **dp;
  920. X
  921. X    env_client();
  922. X
  923. X    fls_main(argc,argv,envp);
  924. X
  925. X    client_done();
  926. X
  927. X    exit(0);
  928. X}
  929. END_OF_FILE
  930.   if test 880 -ne `wc -c <'flscmd.c'`; then
  931.     echo shar: \"'flscmd.c'\" unpacked with wrong size!
  932.   fi
  933.   # end of 'flscmd.c'
  934. fi
  935. if test -f 'fmkdir.1' -a "${1}" != "-c" ; then 
  936.   echo shar: Will not clobber existing file \"'fmkdir.1'\"
  937. else
  938.   echo shar: Extracting \"'fmkdir.1'\" \(1351 characters\)
  939.   sed "s/^X//" >'fmkdir.1' <<'END_OF_FILE'
  940. X.TH FMKDIR 1 "8 December 1991"
  941. X.SH NAME
  942. Xfmkdir \- create directories in the FSP database
  943. X.SH SYNOPSIS
  944. X.B fmkdir
  945. X.I name
  946. X\&.\|.\|.
  947. X.SH DESCRIPTION
  948. X.LP
  949. XFor each
  950. X.I name
  951. Xappearing in the argument list,
  952. X.B fmkdir
  953. Xcreates a directory in the client's current working directory
  954. Xin the FSP database.  The new directories are owned by the
  955. Xclient machine, and permission for other machines to create or
  956. Xdelete items in these directories are initially turned off.
  957. XThe client may alter the permission states with the
  958. X.B fprocmd
  959. Xcommand.
  960. X.SH ENVIRONMENT
  961. X.LP
  962. XThe following variables associate this program with a FSP database:
  963. X.TP
  964. X.B FSP_HOST
  965. XThe name or internet number of the machine with the FSP server.
  966. X.TP
  967. X.B FSP_PORT
  968. XThe port number of the UDP socket used by the FSP server.
  969. X.TP
  970. X.B FSP_LOCALPORT
  971. XThe port number of the UDP socket used by FSP client utilities.
  972. XThe only reason to define this varable is to ensure mutual
  973. Xexclusion of client commands when none of the udp packet
  974. Xmultiplexing mechanisms are enabled during compile time.
  975. XYou may pick any number not currently used for other purposes.
  976. X.TP
  977. X.B FSP_DIR
  978. XThe current working directory of the client in the FSP database.
  979. XThe root of the database is /.
  980. X.SH "SEE ALSO"
  981. X.PD
  982. Xfcatcmd(1), fcdcmd(1), fgetcmd(1), fgrabcmd(1), flscmd(1), fmkdir(1),
  983. Xfprocmd(1), fput(1), frmcmd(1), frmdircmd(1), fver(1), fspd(1)
  984. END_OF_FILE
  985.   if test 1351 -ne `wc -c <'fmkdir.1'`; then
  986.     echo shar: \"'fmkdir.1'\" unpacked with wrong size!
  987.   fi
  988.   # end of 'fmkdir.1'
  989. fi
  990. if test -f 'fmkdir.c' -a "${1}" != "-c" ; then 
  991.   echo shar: Will not clobber existing file \"'fmkdir.c'\"
  992. else
  993.   echo shar: Extracting \"'fmkdir.c'\" \(1193 characters\)
  994.   sed "s/^X//" >'fmkdir.c' <<'END_OF_FILE'
  995. X    /*********************************************************************\
  996. X    *  Copyright (c) 1991 by Wen-King Su (wen-king@vlsi.cs.caltech.edu)   *
  997. X    *                                                                     *
  998. X    *  You may copy or modify this file in any manner you wish, provided  *
  999. X    *  that this notice is always included, and that you hold the author  *
  1000. X    *  harmless for any loss or damage resulting from the installation or *
  1001. X    *  use of this software.                                              *
  1002. X    \*********************************************************************/
  1003. X
  1004. X#include "client_def.h"
  1005. X
  1006. Xextern char **glob(), *util_abs_path();
  1007. X
  1008. Xstatic make_dir(p)
  1009. X    char *p;
  1010. X{
  1011. X    char *op;
  1012. X    UBUF *ub;
  1013. X
  1014. X    op = util_abs_path(p);
  1015. X
  1016. X    ub = client_interact(CC_MAKE_DIR,0L, strlen(op),op+1, 0,NULLP);
  1017. X
  1018. X    if(ub->cmd == CC_ERR)
  1019. X    {
  1020. X    fprintf(stderr,"Can't create %s: %s\n",p,ub->buf);
  1021. X    free(op); return(-1);
  1022. X    }
  1023. X
  1024. X    printf("%s\t: %s\n",p,ub->buf);
  1025. X
  1026. X    free(op);
  1027. X    return(0);
  1028. X}
  1029. X
  1030. Xmain(argc,argv,envp)
  1031. X    int argc;
  1032. X    char **argv,**envp;
  1033. X{
  1034. X    char **av, *av2[2];
  1035. X
  1036. X    env_client();
  1037. X    while(*++argv) make_dir(*argv);
  1038. X    client_done();
  1039. X
  1040. X    exit(0);
  1041. X}
  1042. END_OF_FILE
  1043.   if test 1193 -ne `wc -c <'fmkdir.c'`; then
  1044.     echo shar: \"'fmkdir.c'\" unpacked with wrong size!
  1045.   fi
  1046.   # end of 'fmkdir.c'
  1047. fi
  1048. if test -f 'fpro.1' -a "${1}" != "-c" ; then 
  1049.   echo shar: Will not clobber existing file \"'fpro.1'\"
  1050. else
  1051.   echo shar: Extracting \"'fpro.1'\" \(27 characters\)
  1052.   sed "s/^X//" >'fpro.1' <<'END_OF_FILE'
  1053. X.so man1/fprocmd.1
  1054. X.SP
  1055. X.I0
  1056. END_OF_FILE
  1057.   if test 27 -ne `wc -c <'fpro.1'`; then
  1058.     echo shar: \"'fpro.1'\" unpacked with wrong size!
  1059.   fi
  1060.   # end of 'fpro.1'
  1061. fi
  1062. if test -f 'fprocmd.1' -a "${1}" != "-c" ; then 
  1063.   echo shar: Will not clobber existing file \"'fprocmd.1'\"
  1064. else
  1065.   echo shar: Extracting \"'fprocmd.1'\" \(2035 characters\)
  1066.   sed "s/^X//" >'fprocmd.1' <<'END_OF_FILE'
  1067. X.TH FPRO 1 "8 December 1991"
  1068. X.SH NAME
  1069. Xfprocmd, fpro \- get or set permissions for directories in the FSP database
  1070. X.SH SYNOPSIS
  1071. X.B fprocmd
  1072. X[
  1073. X.B +c|-c|+d|-d
  1074. X]
  1075. X.I directory
  1076. X\&.\|.\|.
  1077. X.LP
  1078. X.B fpro
  1079. X[
  1080. X.B +c|-c|+d|-d
  1081. X]
  1082. X.I directory
  1083. X\&.\|.\|.
  1084. X.SH DESCRIPTION
  1085. X.LP
  1086. XIf no flags are specified, for each file named in the argument list,
  1087. X.B fprocmd
  1088. Xdisplays the current permission settings for each directory named.
  1089. XIf a flag is present (only one may be specified each time),
  1090. X.B fprocmd
  1091. Xwill perform the following operations
  1092. Xand display the resulting settings for each named directory:
  1093. X.TP
  1094. X.B +c
  1095. XGive others permission to create new items.
  1096. X.TP
  1097. X.B -c
  1098. XDeny others permission to create new items.
  1099. X.TP
  1100. X.B +d
  1101. XGive others permission to delete old items.
  1102. X.TP
  1103. X.B -d
  1104. XDeny others permission to delete old items.
  1105. X.LP
  1106. X.B fprocmd
  1107. Xwill perform
  1108. X.B csh
  1109. Xfile name globbing based on file and directory information
  1110. Xobtained from the FSP database.
  1111. X.LP
  1112. XSince user's command shells generally cannot do the proper globbing for
  1113. Xthis program, it is recommended that user defines a shell alias or
  1114. Xfucntion to turns off command shell globbing before running this program.
  1115. X.B csh
  1116. Xexample:
  1117. X.LP
  1118. X.nf
  1119. Xalias fpro \e(set noglob\e; exec fprocmd \e!\e*\e)
  1120. X.fi
  1121. X.SH ENVIRONMENT
  1122. X.LP
  1123. XThe following variables associate this program with a FSP database:
  1124. X.TP
  1125. X.B FSP_HOST
  1126. XThe name or internet number of the machine with the FSP server.
  1127. X.TP
  1128. X.B FSP_PORT
  1129. XThe port number of the UDP socket used by the FSP server.
  1130. X.TP
  1131. X.B FSP_LOCALPORT
  1132. XThe port number of the UDP socket used by FSP client utilities.
  1133. XThe only reason to define this varable is to ensure mutual
  1134. Xexclusion of client commands when none of the udp packet
  1135. Xmultiplexing mechanisms are enabled during compile time.
  1136. XYou may pick any number not currently used for other purposes.
  1137. X.TP
  1138. X.B FSP_DIR
  1139. XThe current working directory of the client in the FSP database.
  1140. XThe root of the database is /.
  1141. X.SH "SEE ALSO"
  1142. X.PD
  1143. Xfcatcmd(1), fcdcmd(1), fgetcmd(1), fgrabcmd(1), flscmd(1), fmkdir(1),
  1144. Xfprocmd(1), fput(1), frmcmd(1), frmdircmd(1), fver(1), fspd(1)
  1145. END_OF_FILE
  1146.   if test 2035 -ne `wc -c <'fprocmd.1'`; then
  1147.     echo shar: \"'fprocmd.1'\" unpacked with wrong size!
  1148.   fi
  1149.   # end of 'fprocmd.1'
  1150. fi
  1151. if test -f 'fput.1' -a "${1}" != "-c" ; then 
  1152.   echo shar: Will not clobber existing file \"'fput.1'\"
  1153. else
  1154.   echo shar: Extracting \"'fput.1'\" \(1423 characters\)
  1155.   sed "s/^X//" >'fput.1' <<'END_OF_FILE'
  1156. X.TH FPUT 1 "8 December 1991"
  1157. X.SH NAME
  1158. Xfput \- upload files to the FSP database
  1159. X.SH SYNOPSIS
  1160. X.B fput
  1161. X.br
  1162. X.B fput
  1163. X.I filename
  1164. X\&.\|.\|.
  1165. X.SH DESCRIPTION
  1166. X.LP
  1167. XWhen used without arguments, a list of file names is read from the
  1168. Xstandard input.  When arguments are given, the arguments are taken
  1169. Xto be the list of file names.  For each file named in the list,
  1170. X.B fput
  1171. Xcopies the file from the client's current working directory in the
  1172. Xclient machine to the FSP database.
  1173. X.SH ENVIRONMENT
  1174. X.LP
  1175. XThe following variables associate this program with a FSP database:
  1176. X.TP
  1177. X.B FSP_HOST
  1178. XThe name or internet number of the machine with the FSP server.
  1179. X.TP
  1180. X.B FSP_PORT
  1181. XThe port number of the UDP socket used by the FSP server.
  1182. X.TP
  1183. X.B FSP_LOCALPORT
  1184. XThe port number of the UDP socket used by FSP client utilities.
  1185. XThe only reason to define this varable is to ensure mutual
  1186. Xexclusion of client commands when none of the udp packet
  1187. Xmultiplexing mechanisms are enabled during compile time.
  1188. XYou may pick any number not currently used for other purposes.
  1189. X.TP
  1190. X.B FSP_DIR
  1191. XThe current working directory of the client in the FSP database.
  1192. XThe root of the database is /.
  1193. X.TP
  1194. X.B FSP_TRACE
  1195. XIf this variable is set,   
  1196. X.B fput
  1197. Xwill display the number of kilo-byte blocks transfered as transfer 
  1198. Xprogresses. 
  1199. X.SH "SEE ALSO"
  1200. X.PD
  1201. Xfcatcmd(1), fcdcmd(1), fgetcmd(1), fgrabcmd(1), flscmd(1), fmkdir(1),
  1202. Xfprocmd(1), fput(1), frmcmd(1), frmdircmd(1), fver(1), fspd(1)
  1203. END_OF_FILE
  1204.   if test 1423 -ne `wc -c <'fput.1'`; then
  1205.     echo shar: \"'fput.1'\" unpacked with wrong size!
  1206.   fi
  1207.   # end of 'fput.1'
  1208. fi
  1209. if test -f 'fput.c' -a "${1}" != "-c" ; then 
  1210.   echo shar: Will not clobber existing file \"'fput.c'\"
  1211. else
  1212.   echo shar: Extracting \"'fput.c'\" \(1450 characters\)
  1213.   sed "s/^X//" >'fput.c' <<'END_OF_FILE'
  1214. X    /*********************************************************************\
  1215. X    *  Copyright (c) 1991 by Wen-King Su (wen-king@vlsi.cs.caltech.edu)   *
  1216. X    *                                                                     *
  1217. X    *  You may copy or modify this file in any manner you wish, provided  *
  1218. X    *  that this notice is always included, and that you hold the author  *
  1219. X    *  harmless for any loss or damage resulting from the installation or *
  1220. X    *  use of this software.                                              *
  1221. X    \*********************************************************************/
  1222. X
  1223. X#include "client_def.h"
  1224. X
  1225. Xstatic put_file(path)
  1226. X    char *path;
  1227. X{
  1228. X    struct stat sb;
  1229. X    char *name, *t2;
  1230. X    FILE *fp;
  1231. X
  1232. X    if(stat(path,&sb) != 0) { perror(path); return; }
  1233. X    if(!(S_IFREG & sb.st_mode)) { fprintf(stderr,"%s: not a file\n",path);
  1234. X                return; }
  1235. X
  1236. X    for(name = t2 = path; *t2; t2++) if(*t2 == '/') name = t2 + 1;
  1237. X
  1238. X    if(fp = fopen(path,"r"))
  1239. X    {
  1240. X    util_upload(name,fp);
  1241. X    fclose(fp);
  1242. X
  1243. X    } else fprintf(stderr,"Cannot read %s\n",path);
  1244. X}
  1245. X
  1246. Xmain(argc,argv,envp)
  1247. X    int argc;
  1248. X    char **argv,**envp;
  1249. X{
  1250. X    char n[1024];
  1251. X    int prompt;
  1252. X
  1253. X    env_client();
  1254. X
  1255. X    if(argc > 1) while(*++argv) put_file(*argv); else
  1256. X    {
  1257. X    prompt = isatty(0);
  1258. X
  1259. X    while(1)
  1260. X    {
  1261. X        if(prompt) { fputs("fput: ",stdout); fflush(stdout); }
  1262. X        if(!gets(n)) break;
  1263. X        if(!*n) continue;
  1264. X        put_file(n);
  1265. X    }
  1266. X    }
  1267. X
  1268. X    client_done();
  1269. X
  1270. X    exit(0);
  1271. X}
  1272. END_OF_FILE
  1273.   if test 1450 -ne `wc -c <'fput.c'`; then
  1274.     echo shar: \"'fput.c'\" unpacked with wrong size!
  1275.   fi
  1276.   # end of 'fput.c'
  1277. fi
  1278. if test -f 'frm.1' -a "${1}" != "-c" ; then 
  1279.   echo shar: Will not clobber existing file \"'frm.1'\"
  1280. else
  1281.   echo shar: Extracting \"'frm.1'\" \(26 characters\)
  1282.   sed "s/^X//" >'frm.1' <<'END_OF_FILE'
  1283. X.so man1/frmcmd.1
  1284. X.SP
  1285. X.I0
  1286. END_OF_FILE
  1287.   if test 26 -ne `wc -c <'frm.1'`; then
  1288.     echo shar: \"'frm.1'\" unpacked with wrong size!
  1289.   fi
  1290.   # end of 'frm.1'
  1291. fi
  1292. if test -f 'frmcmd.1' -a "${1}" != "-c" ; then 
  1293.   echo shar: Will not clobber existing file \"'frmcmd.1'\"
  1294. else
  1295.   echo shar: Extracting \"'frmcmd.1'\" \(1483 characters\)
  1296.   sed "s/^X//" >'frmcmd.1' <<'END_OF_FILE'
  1297. X.TH FRM 1 "8 December 1991"
  1298. X.SH NAME
  1299. Xfrmcmd, frm \- remove files from the FSP database
  1300. X.SH SYNOPSIS
  1301. X.B frmcmd
  1302. X.I filename
  1303. X\&.\|.\|.
  1304. X.LP
  1305. X.B frm
  1306. X.I filename
  1307. X\&.\|.\|.
  1308. X.SH DESCRIPTION
  1309. X.LP
  1310. X.B frmcmd
  1311. Xdeletes the named files from the FSP database.
  1312. X.B frmcmd
  1313. Xwill perform
  1314. X.B csh
  1315. Xfile name globbing based on file and directory information
  1316. Xobtained from the FSP database.
  1317. X.LP
  1318. XSince user's command shells generally cannot do the proper globbing for
  1319. Xthis program, it is recommended that user defines a shell alias or
  1320. Xfucntion to turns off command shell globbing before running this program.
  1321. X.B csh
  1322. Xexample:
  1323. X.LP
  1324. X.nf
  1325. Xalias frm \e(set noglob\e; exec frmcmd \e!\e*\e)
  1326. X.fi
  1327. X.SH ENVIRONMENT
  1328. X.LP
  1329. XThe following variables associate this program with a FSP database:
  1330. X.TP
  1331. X.B FSP_HOST
  1332. XThe name or internet number of the machine with the FSP server.
  1333. X.TP
  1334. X.B FSP_PORT
  1335. XThe port number of the UDP socket used by the FSP server.
  1336. X.TP
  1337. X.B FSP_LOCALPORT
  1338. XThe port number of the UDP socket used by FSP client utilities.
  1339. XThe only reason to define this varable is to ensure mutual
  1340. Xexclusion of client commands when none of the udp packet
  1341. Xmultiplexing mechanisms are enabled during compile time.
  1342. XYou may pick any number not currently used for other purposes.
  1343. X.TP
  1344. X.B FSP_DIR
  1345. XThe current working directory of the client in the FSP database.
  1346. XThe root of the database is /.
  1347. X.SH "SEE ALSO"
  1348. X.PD
  1349. Xfcatcmd(1), fcdcmd(1), fgetcmd(1), fgrabcmd(1), flscmd(1), fmkdir(1),
  1350. Xfprocmd(1), fput(1), frmcmd(1), frmdircmd(1), fver(1), fspd(1)
  1351. END_OF_FILE
  1352.   if test 1483 -ne `wc -c <'frmcmd.1'`; then
  1353.     echo shar: \"'frmcmd.1'\" unpacked with wrong size!
  1354.   fi
  1355.   # end of 'frmcmd.1'
  1356. fi
  1357. if test -f 'frmcmd.c' -a "${1}" != "-c" ; then 
  1358.   echo shar: Will not clobber existing file \"'frmcmd.c'\"
  1359. else
  1360.   echo shar: Extracting \"'frmcmd.c'\" \(1237 characters\)
  1361.   sed "s/^X//" >'frmcmd.c' <<'END_OF_FILE'
  1362. X    /*********************************************************************\
  1363. X    *  Copyright (c) 1991 by Wen-King Su (wen-king@vlsi.cs.caltech.edu)   *
  1364. X    *                                                                     *
  1365. X    *  You may copy or modify this file in any manner you wish, provided  *
  1366. X    *  that this notice is always included, and that you hold the author  *
  1367. X    *  harmless for any loss or damage resulting from the installation or *
  1368. X    *  use of this software.                                              *
  1369. X    \*********************************************************************/
  1370. X
  1371. X#include "client_def.h"
  1372. X
  1373. Xextern char **glob(), *util_abs_path();
  1374. X
  1375. Xstatic remove_it(p)
  1376. X    char *p;
  1377. X{
  1378. X    char *op;
  1379. X    UBUF *ub;
  1380. X
  1381. X    op = util_abs_path(p);
  1382. X
  1383. X    ub = client_interact(CC_DEL_FILE,0L, strlen(op),op+1, 0,NULLP);
  1384. X
  1385. X    if(ub->cmd == CC_ERR)
  1386. X    {
  1387. X    fprintf(stderr,"Can't remove %s: %s\n",p,ub->buf);
  1388. X    free(op); return(-1);
  1389. X    }
  1390. X
  1391. X    return(0);
  1392. X}
  1393. X
  1394. Xmain(argc,argv,envp)
  1395. X    int argc;
  1396. X    char **argv,**envp;
  1397. X{
  1398. X    char **av, *av2[2];
  1399. X
  1400. X    env_client();
  1401. X
  1402. X    while(*++argv)
  1403. X    {
  1404. X    if(!(av = glob(*argv))) { av = av2; av2[0] = *argv; av2[1] = 0; }
  1405. X    while(*av) remove_it(*av++);
  1406. X    }
  1407. X
  1408. X    client_done();
  1409. X
  1410. X    exit(0);
  1411. X}
  1412. END_OF_FILE
  1413.   if test 1237 -ne `wc -c <'frmcmd.c'`; then
  1414.     echo shar: \"'frmcmd.c'\" unpacked with wrong size!
  1415.   fi
  1416.   # end of 'frmcmd.c'
  1417. fi
  1418. if test -f 'frmdir.1' -a "${1}" != "-c" ; then 
  1419.   echo shar: Will not clobber existing file \"'frmdir.1'\"
  1420. else
  1421.   echo shar: Extracting \"'frmdir.1'\" \(29 characters\)
  1422.   sed "s/^X//" >'frmdir.1' <<'END_OF_FILE'
  1423. X.so man1/frmdircmd.1
  1424. X.SP
  1425. X.I0
  1426. END_OF_FILE
  1427.   if test 29 -ne `wc -c <'frmdir.1'`; then
  1428.     echo shar: \"'frmdir.1'\" unpacked with wrong size!
  1429.   fi
  1430.   # end of 'frmdir.1'
  1431. fi
  1432. if test -f 'frmdircmd.1' -a "${1}" != "-c" ; then 
  1433.   echo shar: Will not clobber existing file \"'frmdircmd.1'\"
  1434. else
  1435.   echo shar: Extracting \"'frmdircmd.1'\" \(1524 characters\)
  1436.   sed "s/^X//" >'frmdircmd.1' <<'END_OF_FILE'
  1437. X.TH FRMDIR 1 "8 December 1991"
  1438. X.SH NAME
  1439. Xfrmdircmd, frmdir \- remove directories from the FSP database
  1440. X.SH SYNOPSIS
  1441. X.B frmdircmd
  1442. X.I directory
  1443. X\&.\|.\|.
  1444. X.LP
  1445. X.B frmdir
  1446. X.I directory
  1447. X\&.\|.\|.
  1448. X.SH DESCRIPTION
  1449. X.LP
  1450. X.B frmdircmd
  1451. Xdeletes the named directories from the FSP database.
  1452. X.B frmdircmd
  1453. Xwill perform
  1454. X.B csh
  1455. Xfile name globbing based on file and directory information
  1456. Xobtained from the FSP database.
  1457. X.LP
  1458. XSince user's command shells generally cannot do the proper globbing for
  1459. Xthis program, it is recommended that user defines a shell alias or
  1460. Xfucntion to turns off command shell globbing before running this program.
  1461. X.B csh
  1462. Xexample:
  1463. X.LP
  1464. X.nf
  1465. Xalias frmdir \e(set noglob\e; exec frmdircmd \e!\e*\e)
  1466. X.fi
  1467. X.SH ENVIRONMENT
  1468. X.LP
  1469. XThe following variables associate this program with a FSP database:
  1470. X.TP
  1471. X.B FSP_HOST
  1472. XThe name or internet number of the machine with the FSP server.
  1473. X.TP
  1474. X.B FSP_PORT
  1475. XThe port number of the UDP socket used by the FSP server.
  1476. X.TP
  1477. X.B FSP_LOCALPORT
  1478. XThe port number of the UDP socket used by FSP client utilities.
  1479. XThe only reason to define this varable is to ensure mutual
  1480. Xexclusion of client commands when none of the udp packet
  1481. Xmultiplexing mechanisms are enabled during compile time.
  1482. XYou may pick any number not currently used for other purposes.
  1483. X.TP
  1484. X.B FSP_DIR
  1485. XThe current working directory of the client in the FSP database.
  1486. XThe root of the database is /.
  1487. X.SH "SEE ALSO"
  1488. X.PD
  1489. Xfcatcmd(1), fcdcmd(1), fgetcmd(1), fgrabcmd(1), flscmd(1), fmkdir(1),
  1490. Xfprocmd(1), fput(1), frmcmd(1), frmdircmd(1), fver(1), fspd(1)
  1491. END_OF_FILE
  1492.   if test 1524 -ne `wc -c <'frmdircmd.1'`; then
  1493.     echo shar: \"'frmdircmd.1'\" unpacked with wrong size!
  1494.   fi
  1495.   # end of 'frmdircmd.1'
  1496. fi
  1497. if test -f 'frmdircmd.c' -a "${1}" != "-c" ; then 
  1498.   echo shar: Will not clobber existing file \"'frmdircmd.c'\"
  1499. else
  1500.   echo shar: Extracting \"'frmdircmd.c'\" \(1236 characters\)
  1501.   sed "s/^X//" >'frmdircmd.c' <<'END_OF_FILE'
  1502. X    /*********************************************************************\
  1503. X    *  Copyright (c) 1991 by Wen-King Su (wen-king@vlsi.cs.caltech.edu)   *
  1504. X    *                                                                     *
  1505. X    *  You may copy or modify this file in any manner you wish, provided  *
  1506. X    *  that this notice is always included, and that you hold the author  *
  1507. X    *  harmless for any loss or damage resulting from the installation or *
  1508. X    *  use of this software.                                              *
  1509. X    \*********************************************************************/
  1510. X
  1511. X#include "client_def.h"
  1512. X
  1513. Xextern char **glob(), *util_abs_path();
  1514. X
  1515. Xstatic remove_it(p)
  1516. X    char *p;
  1517. X{
  1518. X    char *op;
  1519. X    UBUF *ub;
  1520. X
  1521. X    op = util_abs_path(p);
  1522. X
  1523. X    ub = client_interact(CC_DEL_DIR,0L, strlen(op),op+1, 0,NULLP);
  1524. X
  1525. X    if(ub->cmd == CC_ERR)
  1526. X    {
  1527. X    fprintf(stderr,"Can't remove %s: %s\n",p,ub->buf);
  1528. X    free(op); return(-1);
  1529. X    }
  1530. X
  1531. X    return(0);
  1532. X}
  1533. X
  1534. Xmain(argc,argv,envp)
  1535. X    int argc;
  1536. X    char **argv,**envp;
  1537. X{
  1538. X    char **av, *av2[2];
  1539. X
  1540. X    env_client();
  1541. X
  1542. X    while(*++argv)
  1543. X    {
  1544. X    if(!(av = glob(*argv))) { av = av2; av2[0] = *argv; av2[1] = 0; }
  1545. X    while(*av) remove_it(*av++);
  1546. X    }
  1547. X
  1548. X    client_done();
  1549. X
  1550. X    exit(0);
  1551. X}
  1552. END_OF_FILE
  1553.   if test 1236 -ne `wc -c <'frmdircmd.c'`; then
  1554.     echo shar: \"'frmdircmd.c'\" unpacked with wrong size!
  1555.   fi
  1556.   # end of 'frmdircmd.c'
  1557. fi
  1558. if test -f 'fver.1' -a "${1}" != "-c" ; then 
  1559.   echo shar: Will not clobber existing file \"'fver.1'\"
  1560. else
  1561.   echo shar: Extracting \"'fver.1'\" \(1120 characters\)
  1562.   sed "s/^X//" >'fver.1' <<'END_OF_FILE'
  1563. X.TH FVER 1 "8 December 1991"
  1564. X.SH NAME
  1565. Xfver \- displays the version number string of the FSP database
  1566. X.SH SYNOPSIS
  1567. X.B fver
  1568. X.I [-l]
  1569. X.SH DESCRIPTION
  1570. X.LP
  1571. XWithout arguments,
  1572. X.B fver
  1573. Xdisplays the version string of the FSP database.
  1574. XOtherwise, the version string of the client utilities is displayed.
  1575. X.SH ENVIRONMENT
  1576. X.LP
  1577. XThe following variables associate this program with a FSP database:
  1578. X.TP
  1579. X.B FSP_HOST
  1580. XThe name or internet number of the machine with the FSP server.
  1581. X.TP
  1582. X.B FSP_PORT
  1583. XThe port number of the UDP socket used by the FSP server.
  1584. X.TP
  1585. X.B FSP_LOCALPORT
  1586. XThe port number of the UDP socket used by FSP client utilities.
  1587. XThe only reason to define this varable is to ensure mutual
  1588. Xexclusion of client commands when none of the udp packet
  1589. Xmultiplexing mechanisms are enabled during compile time.
  1590. XYou may pick any number not currently used for other purposes.
  1591. X.TP
  1592. X.B FSP_DIR
  1593. XThe current working directory of the client in the FSP database.
  1594. XThe root of the database is /.
  1595. X.SH "SEE ALSO"
  1596. X.PD
  1597. Xfcatcmd(1), fcdcmd(1), fgetcmd(1), fgrabcmd(1), flscmd(1), fmkdir(1),
  1598. Xfprocmd(1), fput(1), frmcmd(1), frmdircmd(1), fver(1), fspd(1)
  1599. END_OF_FILE
  1600.   if test 1120 -ne `wc -c <'fver.1'`; then
  1601.     echo shar: \"'fver.1'\" unpacked with wrong size!
  1602.   fi
  1603.   # end of 'fver.1'
  1604. fi
  1605. if test -f 'fver.c' -a "${1}" != "-c" ; then 
  1606.   echo shar: Will not clobber existing file \"'fver.c'\"
  1607. else
  1608.   echo shar: Extracting \"'fver.c'\" \(1018 characters\)
  1609.   sed "s/^X//" >'fver.c' <<'END_OF_FILE'
  1610. X    /*********************************************************************\
  1611. X    *  Copyright (c) 1991 by Wen-King Su (wen-king@vlsi.cs.caltech.edu)   *
  1612. X    *                                                                     *
  1613. X    *  You may copy or modify this file in any manner you wish, provided  *
  1614. X    *  that this notice is always included, and that you hold the author  *
  1615. X    *  harmless for any loss or damage resulting from the installation or *
  1616. X    *  use of this software.                                              *
  1617. X    \*********************************************************************/
  1618. X
  1619. X#include <stdio.h>
  1620. X#include "client_def.h"
  1621. X
  1622. Xmain(argc,argv,envp)
  1623. X    int argc;
  1624. X    char **argv,**envp;
  1625. X{
  1626. X    UBUF *ub;
  1627. X
  1628. X    if(argc == 1)    /* no arg supplied, get version string of server */
  1629. X    {
  1630. X    env_client();
  1631. X    ub = client_interact(CC_VERSION,0L, 0,NULLP, 0,NULLP);
  1632. X    printf("FSP version: %s\n",ub->buf);
  1633. X    client_done();
  1634. X
  1635. X    } else
  1636. X    {
  1637. X    printf("Local FSP version: %s\n",VERSION_STR);
  1638. X    }
  1639. X
  1640. X    exit(0);
  1641. X}
  1642. END_OF_FILE
  1643.   if test 1018 -ne `wc -c <'fver.c'`; then
  1644.     echo shar: \"'fver.c'\" unpacked with wrong size!
  1645.   fi
  1646.   # end of 'fver.c'
  1647. fi
  1648. if test -f 'merge.c' -a "${1}" != "-c" ; then 
  1649.   echo shar: Will not clobber existing file \"'merge.c'\"
  1650. else
  1651.   echo shar: Extracting \"'merge.c'\" \(1620 characters\)
  1652.   sed "s/^X//" >'merge.c' <<'END_OF_FILE'
  1653. X    /*********************************************************************\
  1654. X    *  Copyright (c) 1992 by Wen-King Su (wen-king@vlsi.cs.caltech.edu)   *
  1655. X    *                                                                     *
  1656. X    *  You may copy or modify this file in any manner you wish, provided  *
  1657. X    *  that this notice is always included, and that you hold the author  *
  1658. X    *  harmless for any loss or damage resulting from the installation or *
  1659. X    *  use of this software.                                              *
  1660. X    \*********************************************************************/
  1661. X
  1662. X#include <stdio.h>
  1663. X
  1664. Xmain(argc,argv,envp)
  1665. X    int    argc;
  1666. X    char **argv;
  1667. X    char **envp;
  1668. X{
  1669. X    char *p, *q;
  1670. X
  1671. X    for(p = q = argv[0]; *p; p++) if(*p == '/') q = p+1;
  1672. X
  1673. X    if(!strcmp(q,"fcatcmd"  )) fcatcmd_main  (argc,argv,envp); else
  1674. X    if(!strcmp(q,"fcdcmd"   )) fcdcmd_main   (argc,argv,envp); else
  1675. X    if(!strcmp(q,"fgetcmd"  )) fgetcmd_main  (argc,argv,envp); else
  1676. X    if(!strcmp(q,"fgrabcmd" )) fgrabcmd_main (argc,argv,envp); else
  1677. X    if(!strcmp(q,"flscmd"   )) flscmd_main   (argc,argv,envp); else
  1678. X    if(!strcmp(q,"fmkdir"   )) fmkdir_main   (argc,argv,envp); else
  1679. X    if(!strcmp(q,"fprocmd"  )) fprocmd_main  (argc,argv,envp); else
  1680. X    if(!strcmp(q,"fput"     )) fput_main     (argc,argv,envp); else
  1681. X    if(!strcmp(q,"frmcmd"   )) frmcmd_main   (argc,argv,envp); else
  1682. X    if(!strcmp(q,"frmdircmd")) frmdircmd_main(argc,argv,envp); else
  1683. X    if(!strcmp(q,"fver"     )) fver_main     (argc,argv,envp); else
  1684. X    {
  1685. X    fprintf(stderr,"Unknown FSP client command: %s\n",q);
  1686. X    exit(1);
  1687. X    }
  1688. X
  1689. X    exit(0);
  1690. X}
  1691. END_OF_FILE
  1692.   if test 1620 -ne `wc -c <'merge.c'`; then
  1693.     echo shar: \"'merge.c'\" unpacked with wrong size!
  1694.   fi
  1695.   # end of 'merge.c'
  1696. fi
  1697. if test -f 'setup' -a "${1}" != "-c" ; then 
  1698.   echo shar: Will not clobber existing file \"'setup'\"
  1699. else
  1700.   echo shar: Extracting \"'setup'\" \(673 characters\)
  1701.   sed "s/^X//" >'setup' <<'END_OF_FILE'
  1702. X
  1703. X# Sample csh initialization file.
  1704. X
  1705. Xsetenv FSP_PORT 21
  1706. Xsetenv FSP_HOST 131.215.131.148
  1707. Xsetenv FSP_DIR  /
  1708. Xsetenv FSP_TRACE
  1709. Xsetenv FSP_DELAY 3000
  1710. X
  1711. Xalias fcd setenv FSP_DIR \`\(set noglob\; exec fcdcmd \!\*\)\`
  1712. Xalias fls    \(set noglob\; exec flscmd    \!\*\)
  1713. Xalias fget   \(set noglob\; exec fgetcmd   \!\*\)
  1714. Xalias fgrab  \(set noglob\; exec fgrabcmd  \!\*\)
  1715. Xalias fcat   \(set noglob\; exec fcatcmd   \!\*\)
  1716. Xalias fmore  \(set noglob\; exec fcatcmd   \!\* \| less \)
  1717. Xalias frm    \(set noglob\; exec frmcmd    \!\*\)
  1718. Xalias frmdir \(set noglob\; exec frmdircmd \!\*\)
  1719. Xalias fpro   \(set noglob\; exec fprocmd   \!\*\)
  1720. Xalias fpwd echo \$FSP_DIR on \$FSP_HOST port \$FSP_PORT
  1721. END_OF_FILE
  1722.   if test 673 -ne `wc -c <'setup'`; then
  1723.     echo shar: \"'setup'\" unpacked with wrong size!
  1724.   fi
  1725.   # end of 'setup'
  1726. fi
  1727. echo shar: End of archive 4 \(of 4\).
  1728. cp /dev/null ark4isdone
  1729. MISSING=""
  1730. for I in 1 2 3 4 ; do
  1731.     if test ! -f ark${I}isdone ; then
  1732.     MISSING="${MISSING} ${I}"
  1733.     fi
  1734. done
  1735. if test "${MISSING}" = "" ; then
  1736.     echo You have unpacked all 4 archives.
  1737.     rm -f ark[1-9]isdone
  1738. else
  1739.     echo You still must unpack the following archives:
  1740.     echo "        " ${MISSING}
  1741. fi
  1742. exit 0
  1743. exit 0 # Just in case...
  1744.