summaryrefslogtreecommitdiffhomepage
path: root/monadic.c
diff options
context:
space:
mode:
Diffstat (limited to 'monadic.c')
-rw-r--r--monadic.c126
1 files changed, 0 insertions, 126 deletions
diff --git a/monadic.c b/monadic.c
deleted file mode 100644
index 3c7fac25b..000000000
--- a/monadic.c
+++ /dev/null
@@ -1,126 +0,0 @@
-#include "internal.h"
-#include <stdio.h>
-#include <string.h>
-#include <grp.h>
-
-extern int
-monadic_main(
- struct FileInfo * i
-,int argc
-,char * * argv)
-{
- int status = 0;
-
- while ( argc > 1 && argv[1][0] == '-' ) {
- switch ( argv[1][1] ) {
- case 'c':
- i->create = 1;
- break;
- case 'f':
- i->force = 1;
- break;
- case 'g':
- if ( argc > 2 ) {
- struct group * g;
- if ( (g = getgrnam(argv[2])) == 0 ) {
- fprintf(stderr, "%s: no such group.\n", argv[1]);
- return 1;
- }
- i->groupID = g->gr_gid;
- i->changeGroupID = 1;
- i->complainInPostProcess = 1;
- argc--;
- argv++;
- break;
- }
- usage(i->applet->usage);
- return 1;
- case 'm':
- if ( argc > 2 ) {
- status = parse_mode(
- argv[2]
- ,&i->orWithMode
- ,&i->andWithMode, 0);
-
- if ( status == 0 ) {
- i->changeMode = 1;
- i->complainInPostProcess = 1;
- argc--;
- argv++;
- break;
- }
- }
- usage(i->applet->usage);
- return 1;
- case 'o':
- if ( argc > 2 ) {
- status = parse_user_name(argv[2], i);
- if ( status != 0 )
- return status;
-
- i->changeUserID = 1;
- i->complainInPostProcess = 1;
- argc--;
- argv++;
- break;
- }
- usage(i->applet->usage);
- return 1;
- case 'p':
- i->makeParentDirectories = 1;
- break;
- case 'r':
- case 'R':
- i->recursive = 1;
- break;
- case 's':
- i->makeSymbolicLink = 1;
- break;
- default:
- usage(i->applet->usage);
- return 1;
- }
- argv++;
- argc--;
- }
- while ( argc > 1 ) {
- char * slash;
- i->source = argv[1];
- if ( (slash = strrchr(i->source, '/')) != 0 ) {
- i->directoryLength = slash - i->source;
- if ( i->source[i->directoryLength] == '\0' )
- i->directoryLength = 0;
- }
- else
- i->directoryLength = 0;
- if ( !i->dyadic )
- i->destination = i->source;
-
- if ( lstat(i->source, &i->stat) == 0 ) {
- i->isSymbolicLink = (i->stat.st_mode & S_IFMT)==S_IFLNK;
- if ( i->isSymbolicLink )
- if ( stat(i->source, &i->stat) != 0 )
- memset(&i->stat, 0, sizeof(i->stat));
- }
- else
- memset(&i->stat, 0, sizeof(i->stat));
-
- if ( i->isSymbolicLink
- || !i->recursive
- || ((i->stat.st_mode & S_IFMT) != S_IFDIR) ) {
-
- if ( i->applet->function )
- status = i->applet->function(i);
- if ( status == 0 )
- status = post_process(i);
- }
- else
- status = descend(i, i->applet->function);
-
- if ( status != 0 && !i->force )
- return status;
- argv++;
- argc--;
- }
- return 0;
-}