diff --git a/clients/ffindcmd.c b/clients/ffindcmd.c new file mode 100644 index 0000000..1c1bac2 --- /dev/null +++ b/clients/ffindcmd.c @@ -0,0 +1,123 @@ +/*- + * Copyright (c) 1990 The Regents of the University of California. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. All advertising materials mentioning features or use of this software + * must display the following acknowledgement: + * This product includes software developed by the University of + * California, Berkeley and its contributors. + * 4. Neither the name of the University nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + + /*********************************************************************\ + * Copyright (c) 1993 by Michael Meskes * + * (meskes@ulysses.informatik.rwth-aachen.de) * + * * + * You may copy or modify this file in any manner you wish, provided * + * that this notice is always included, and that you hold the author * + * harmless for any loss or damage resulting from the installation or * + * use of this software. * + \*********************************************************************/ + +#include "tweak.h" +#include "client_def.h" +#include "c_extern.h" +#include "bsd_extern.h" +#include +#include +#include +#include +#ifdef STDC_HEADERS +#include +#endif +#ifdef HAVE_UNISTD_H +#include +#endif +#include "find.h" + +extern PLAN *plan; + +time_t now; /* time find was run */ +int isoutput; /* user specified output operator */ +int process; /* process current directory */ + +static void usage_ffind PROTO0((void)); + +static void eval_file PROTO4(char *, name, struct stat *, sbufp, + int, mode, int, level) +{ + register PLAN *p; + + for (p = plan; p && (p->eval)(p, sbufp, name); p = p->next); +} + +static int eval_dir PROTO3(char *, name, struct stat *, sbufp, u_long *, sum) +{ + register PLAN *p; + + process = 0; + for (p = plan; p && (p->eval)(p, sbufp, name); p = p->next); + return (process); +} + +int main PROTO2(int, argc, char **, argv) +{ + register char **p; + char *singlefile[2], **files; + + env_client(); + (void)time(&now); /* initialize the time-of-day */ + + p = ++argv; + + /* First option delimits the file list. */ + while (*p && !option(*p)) p++; + if (p == argv) usage_ffind(); + + find_formplan(p); + + /* Execute plan for all file lists */ + while (*argv) { + if (argv >= p) break; + if (!(files = glob(*argv))) { + files = singlefile; + singlefile[0] = *argv; + singlefile[1] = 0; + } + for ( ; *files; files++) + util_process_file(*files, 0, eval_file, eval_dir, 0L, 0); + + argv++; + } + + client_done(); + return(0); +} + +static void usage_ffind PROTO0((void)) +{ + fprintf(stderr,"usage: ffind file [file ...] expression\n"); + exit(1); +} diff --git a/clients/flscmd.c b/clients/flscmd.c new file mode 100644 index 0000000..a18ef0d --- /dev/null +++ b/clients/flscmd.c @@ -0,0 +1,37 @@ + /*********************************************************************\ + * Copyright (c) 1991 by Wen-King Su (wen-king@vlsi.cs.caltech.edu) * + * * + * You may copy or modify this file in any manner you wish, provided * + * that this notice is always included, and that you hold the author * + * harmless for any loss or damage resulting from the installation or * + * use of this software. * + \*********************************************************************/ + +#include "tweak.h" +#include "client_def.h" +#include "c_extern.h" +#include "bsd_extern.h" +#include "ls.h" +#ifdef STDC_HEADERS +#include +#endif +#ifdef HAVE_UNISTD_H +#include +#endif + +int ls_bad PROTO1(int, n) +{ + client_done(); + exit(n); +} + +int main PROTO2(int, argc, char **, argv) +{ + env_client(); + + fls_main(argc,argv); + + client_done(); + + exit(0); +} diff --git a/clients/fmkdir.c b/clients/fmkdir.c new file mode 100644 index 0000000..1fde601 --- /dev/null +++ b/clients/fmkdir.c @@ -0,0 +1,50 @@ + /*********************************************************************\ + * Copyright (c) 1991 by Wen-King Su (wen-king@vlsi.cs.caltech.edu) * + * * + * You may copy or modify this file in any manner you wish, provided * + * that this notice is always included, and that you hold the author * + * harmless for any loss or damage resulting from the installation or * + * use of this software. * + \*********************************************************************/ + +#include "tweak.h" +#include "client_def.h" +#include "c_extern.h" +#ifdef STDC_HEADERS +#include +#endif +#ifdef HAVE_UNISTD_H +#include +#endif +#include "my-string.h" + +static int make_dir PROTO1(char *, p) +{ + char *op; + UBUF *ub; + + op = util_abs_path(p); + + ub = client_interact(CC_MAKE_DIR,0L, strlen(op), (unsigned char *)op+1, 0, + (unsigned char *)NULLP); + + if(ub->cmd == CC_ERR) { + fprintf(stderr,"Can't create %s: %s\n",p,ub->buf); + free(op); + return(-1); + } + + printf("%s\t: %s\n",p,ub->buf); + + free(op); + return(0); +} + +int main PROTO2(int, argc, char **, argv) +{ + env_client(); + while(*++argv) make_dir(*argv); + client_done(); + + exit(0); +} diff --git a/clients/frmcmd.c b/clients/frmcmd.c new file mode 100644 index 0000000..0ade708 --- /dev/null +++ b/clients/frmcmd.c @@ -0,0 +1,57 @@ + /*********************************************************************\ + * Copyright (c) 1991 by Wen-King Su (wen-king@vlsi.cs.caltech.edu) * + * * + * You may copy or modify this file in any manner you wish, provided * + * that this notice is always included, and that you hold the author * + * harmless for any loss or damage resulting from the installation or * + * use of this software. * + \*********************************************************************/ + +#include "tweak.h" +#include "client_def.h" +#include "c_extern.h" +#include "bsd_extern.h" +#ifdef STDC_HEADERS +#include +#endif +#ifdef HAVE_UNISTD_H +#include +#endif +#include "my-string.h" + +static int remove_it PROTO1(char *, p) +{ + char *op; + UBUF *ub; + + op = util_abs_path(p); + + ub = client_interact(CC_DEL_FILE,0L, strlen(op), (unsigned char *)op+1, 0, + (unsigned char *)NULLP); + + if(ub->cmd == CC_ERR) { + fprintf(stderr,"Can't remove %s: %s\n",p,ub->buf); + free(op); return(-1); + } + return(0); +} + +int main PROTO2(int, argc, char **, argv) +{ + char **av, *av2[2]; + + env_client(); + + while(*++argv) { + if(!(av = glob(*argv))) { + av = av2; + av2[0] = *argv; + av2[1] = 0; + } + while(*av) remove_it(*av++); + } + + client_done(); + + exit(0); +} diff --git a/clients/frmdircmd.c b/clients/frmdircmd.c new file mode 100644 index 0000000..8ac0320 --- /dev/null +++ b/clients/frmdircmd.c @@ -0,0 +1,58 @@ + /*********************************************************************\ + * Copyright (c) 1991 by Wen-King Su (wen-king@vlsi.cs.caltech.edu) * + * * + * You may copy or modify this file in any manner you wish, provided * + * that this notice is always included, and that you hold the author * + * harmless for any loss or damage resulting from the installation or * + * use of this software. * + \*********************************************************************/ + +#include "tweak.h" +#include "client_def.h" +#include "c_extern.h" +#include "bsd_extern.h" +#ifdef STDC_HEADERS +#include +#endif +#ifdef HAVE_UNISTD_H +#include +#endif +#include "my-string.h" + +static int remove_it PROTO1(char *, p) +{ + char *op; + UBUF *ub; + + op = util_abs_path(p); + + ub = client_interact(CC_DEL_DIR,0L, strlen(op), (unsigned char *)op+1, 0, + (unsigned char *)NULLP); + + if(ub->cmd == CC_ERR) { + fprintf(stderr,"Can't remove %s: %s\n",p,ub->buf); + free(op); + return(-1); + } + return(0); +} + +int main PROTO2(int, argc, char **, argv) +{ + char **av, *av2[2]; + + env_client(); + + while(*++argv) { + if(!(av = glob(*argv))) { + av = av2; + av2[0] = *argv; + av2[1] = 0; + } + while(*av) remove_it(*av++); + } + + client_done(); + + exit(0); +} diff --git a/include/client_def.h b/include/client_def.h new file mode 100644 index 0000000..15c9916 --- /dev/null +++ b/include/client_def.h @@ -0,0 +1,48 @@ + /*********************************************************************\ + * Copyright (c) 1991 by Wen-King Su (wen-king@vlsi.cs.caltech.edu) * + * * + * You may copy or modify this file in any manner you wish, provided * + * that this notice is always included, and that you hold the author * + * harmless for any loss or damage resulting from the installation or * + * use of this software. * + \*********************************************************************/ + +#ifndef _FSP_CLIENT_DEF_H_ +#define _FSP_CLIENT_DEF_H_ 1 + +#include "common_def.h" +#include "client_conf.h" + +/************************************************************************* +* The following global variables are used to change the behavior when * +* fgrab encounters a file with the same name in the current directory * +* Added 11 Jan 93 by A.E.J.Fellows * +*************************************************************************/ + +#define C_NOCLOBBER 1 /* Will not overwrite file of same name */ +#define C_CLOBBER 2 /* Will always overwrite file even if + remote file is not found */ +#define C_UNIQUE 3 /* Create unique name to avoid overwrite */ +#define C_TEMPNAME 4 /* Download to temp name */ +#define C_APPEND 5 /* Downloads will attempt to append to + end of file if it already exists */ + +/**************************************************************************** +* These structures are used to implement a opendir/readdir mechanism similar +* to that of the normal opendir/reader mechanism in unix. +****************************************************************************/ + +typedef struct DDLIST { struct DDLIST *next; + char *path; + RDIRENT **dep_root; + int ref_cnt; } DDLIST; + +typedef struct RDIR { DDLIST *ddp; + RDIRENT **dep; } RDIR; + +typedef struct rdirent { unsigned long d_fileno; + unsigned short d_rcdlen; + unsigned short d_namlen; + char *d_name; } rdirent; + +#endif /* _FSP_CLIENT_DEF_H_ */