diff options
Diffstat (limited to 'cpukit/libfs/src/nfsclient/src/dirutils.c')
-rw-r--r-- | cpukit/libfs/src/nfsclient/src/dirutils.c | 385 |
1 files changed, 0 insertions, 385 deletions
diff --git a/cpukit/libfs/src/nfsclient/src/dirutils.c b/cpukit/libfs/src/nfsclient/src/dirutils.c deleted file mode 100644 index 7155ef998a..0000000000 --- a/cpukit/libfs/src/nfsclient/src/dirutils.c +++ /dev/null @@ -1,385 +0,0 @@ -/** - * @file - * - * @brief Basic NFS Filesystem Utilities for Testing the NFS - * @ingroup libfs - */ - -/* - * Author: Till Straumann, <strauman@slac.stanford.edu>, 10/2002 - * - * Authorship - * ---------- - * This software (NFS-2 client implementation for RTEMS) was created by - * Till Straumann <strauman@slac.stanford.edu>, 2002-2007, - * Stanford Linear Accelerator Center, Stanford University. - * - * Acknowledgement of sponsorship - * ------------------------------ - * The NFS-2 client implementation for RTEMS was produced by - * the Stanford Linear Accelerator Center, Stanford University, - * under Contract DE-AC03-76SFO0515 with the Department of Energy. - * - * Government disclaimer of liability - * ---------------------------------- - * Neither the United States nor the United States Department of Energy, - * nor any of their employees, makes any warranty, express or implied, or - * assumes any legal liability or responsibility for the accuracy, - * completeness, or usefulness of any data, apparatus, product, or process - * disclosed, or represents that its use would not infringe privately owned - * rights. - * - * Stanford disclaimer of liability - * -------------------------------- - * Stanford University makes no representations or warranties, express or - * implied, nor assumes any liability for the use of this software. - * - * Stanford disclaimer of copyright - * -------------------------------- - * Stanford University, owner of the copyright, hereby disclaims its - * copyright and all other rights in this software. Hence, anyone may - * freely use it for any purpose without restriction. - * - * Maintenance of notices - * ---------------------- - * In the interest of clarity regarding the origin and status of this - * SLAC software, this and all the preceding Stanford University notices - * are to remain affixed to any copy or derivative of this software made - * or distributed by the recipient and are to be affixed to any copy of - * software made or distributed by the recipient that contains a copy or - * derivative of this software. - * - * ------------------ SLAC Software Notices, Set 4 OTT.002a, 2004 FEB 03 - */ - -#if HAVE_CONFIG_H -#include "config.h" -#endif - -#ifdef __vxworks -#include <vxWorks.h> -#endif -#include <stdio.h> -#include <dirent.h> -#include <unistd.h> -#include <string.h> -#include <fcntl.h> -#include <sys/stat.h> -#include <errno.h> -#include <stdlib.h> -#include <limits.h> /* PATH_MAX */ - -#include <inttypes.h> /* PRI* */ -#include <rtems/inttypes.h> /* extended PRI* */ - -#ifdef HAVE_CEXP -#include <cexpHelp.h> -#endif - -#ifndef __vxworks -/* - * Prototypes to avoid warnings - */ -int pwd(void); -int ls(char *dir, char *opts); -int cp(char *from, char *to, char *opts); -int ln(char *to, char *name, char *opts); -int rm(char *path); -int cd(char *path); -#endif - -#ifndef __vxworks -int -pwd(void) -{ -char buf[PATH_MAX]; - - if ( !getcwd(buf,PATH_MAX)) { - perror("getcwd"); - return -1; - } else { - printf("%s\n",buf); - } - return 0; -} - -static int -ls_r(char *path, char *chpt, char *name, struct stat *buf) -{ -char *t; - sprintf(chpt, "/%s", name); - if (lstat(path,buf)) { - fprintf(stderr,"stat(%s): %s\n", path, strerror(errno)); - return -1; - } - switch ( buf->st_mode & S_IFMT ) { - case S_IFSOCK: - case S_IFIFO: t = "|"; break; - - default: - case S_IFREG: - case S_IFBLK: - case S_IFCHR: - t = ""; break; - case S_IFDIR: - t = "/"; break; - case S_IFLNK: - t = "@"; break; - } - - printf("%10li, %10" PRIooff_t "b, %5i.%-5i 0%04" PRIomode_t " %s%s\n", - buf->st_ino, - buf->st_size, - buf->st_uid, - buf->st_gid, - buf->st_mode & ~S_IFMT, - name, - t); - *chpt = 0; - return 0; -} - -int -ls(char *dir, char *opts) -{ -struct dirent *de; -char path[PATH_MAX+1]; -char *chpt; -DIR *dp = 0; -int rval = -1; -struct stat buf; - - if ( !dir ) - dir = "."; - - strncpy(path, dir, PATH_MAX); - path[PATH_MAX] = 0; - chpt = path+strlen(path); - - if ( !(dp=opendir(dir)) ) { - perror("opendir"); - goto cleanup; - } - - while ( (de = readdir(dp)) ) { - ls_r(path, chpt, de->d_name, &buf); - } - - rval = 0; - -cleanup: - if (dp) - closedir(dp); - return rval; -} -#endif - -#if 0 - fprintf(stderr, "usage: cp(""from"",[""to""[,""-f""]]\n"); - fprintf(stderr, " ""to""==NULL -> stdout\n"); - fprintf(stderr, " ""-f"" -> overwrite existing file\n"); -#endif - -int -cp(char *from, char *to, char *opts) -{ -struct stat st; -int rval = -1; -int fd = -1; -FILE *fst = 0; -FILE *tst = 0; -int flags = O_CREAT | O_WRONLY | O_TRUNC | O_EXCL; - - if (from) { - - if ((fd=open(from,O_RDONLY,0)) < 0) { - fprintf(stderr, - "Opening %s for reading: %s\n", - from, - strerror(errno)); - goto cleanup; - } - - if (fstat(fd, &st)) { - fprintf(stderr, - "rstat(%s): %s\n", - from, - strerror(errno)); - goto cleanup; - } - - - if (!S_ISREG(st.st_mode)) { - fprintf(stderr,"Refuse to copy a non-regular file\n"); - errno = EINVAL; - goto cleanup; - } - /* Now create a stream -- I experienced occasional weirdness - * when circumventing the streams attached to fildno(stdin) - * by reading/writing to the underlying fd's directly -> - * for now we always go through buffered I/O... - */ - if ( !(fst=fdopen(fd,"r")) ) { - fprintf(stderr, - "Opening input stream [fdopen()] failed: %s\n", - strerror(errno)); - goto cleanup; - } - /* at this point, we have a stream and don't need 'fd' anymore */ - fd = -1; - - } else { - fst = stdin; - st.st_mode = 0644; - } - - if (opts && strchr(opts,'f')) - flags &= ~ O_EXCL; - - if (to) { - if ( (fd=open(to,flags,st.st_mode)) < 0 ) { - fprintf(stderr, - "Opening %s for writing: %s\n", - to, - strerror(errno)); - goto cleanup; - } - if ( !(tst=fdopen(fd, "w")) ) { - fprintf(stderr, - "Opening output stream [fdopen()] failed: %s\n", - strerror(errno)); - goto cleanup; - } - /* at this point we have a stream and don't need 'fd' anymore */ - fd = -1; - } else { - tst = stdout; - } - - /* clear old errors */ - clearerr(fst); - clearerr(tst); - - /* use macro versions on register vars; stdio is already buffered, - * there's nothing to be gained by reading/writing blocks into - * a secondary buffer... - */ - { - register int ch; - register FILE *f = fst; - register FILE *t = tst; - while ( EOF != (ch = getc(f)) && EOF != putc(ch, t) ) - /* nothing else */; - } - - if ( ferror(fst) ) { - fprintf(stderr,"Read error: %s\n",strerror(errno)); - goto cleanup; - } - if ( ferror(tst) ) { - fprintf(stderr,"Write error: %s\n",strerror(errno)); - goto cleanup; - } - - rval = 0; - -cleanup: - - if ( fd >= 0 ) - close(fd); - - if ( fst ) { - if ( from ) - fclose(fst); - else - clearerr(fst); - } - if ( tst ) { - if ( to ) - fclose(tst); - else { - /* flush stdout */ - fflush(tst); - clearerr(tst); - } - } - - return rval; -} - -int -ln(char *to, char *name, char *opts) -{ - if (!to) { - fprintf(stderr,"ln: need 'to' argument\n"); - return -1; - } - if (!name) { - if ( !(name = strrchr(to,'/')) ) { - fprintf(stderr, - "ln: 'unable to link %s to %s\n", - to,to); - return -1; - } - name++; - } - if (opts && strchr(opts,'s')) { - if (symlink(name,to)) { - fprintf(stderr,"symlink: %s\n",strerror(errno)); - return -1; - } - } else { - if (link(name,to)) { - fprintf(stderr,"hardlink: %s\n",strerror(errno)); - return -1; - } - } - return 0; -} - -int -rm(char *path) -{ - return unlink(path); -} - -int -cd(char *path) -{ - return chdir(path); -} - -#ifdef HAVE_CEXP -static CexpHelpTabRec _cexpHelpTabDirutils[] RTEMS_UNUSED = { - HELP( -"copy a file: cp(""from"",[""to""[,""-f""]])\n\ - from = NULL <-- stdin\n\ - to = NULL --> stdout\n\ - option -f: overwrite existing file\n", - int, - cp, (char *from, char *to, char *options) - ), - HELP( -"list a directory: ls([""dir""])\n", - int, - ls, (char *dir) - ), - HELP( -"remove a file\n", - int, - rm, (char *path) - ), - HELP( -"change the working directory\n", - int, - cd, (char *path) - ), - HELP( -"create a link: ln(""to"",""name"",""[-s]""\n\ - -s creates a symlink\n", - int, - ln, (char *to, char *name, char *options) - ), - HELP("",,0,) -}; -#endif |