138 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			138 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
/* local.c Copyright 1992-2000 by Michael Temari All Rights Reserved
 | 
						|
 *
 | 
						|
 * This file is part of ftp.
 | 
						|
 *
 | 
						|
 *
 | 
						|
 * 01/25/96 Initial Release	Michael Temari, <Michael@TemWare.Com>
 | 
						|
 */
 | 
						|
 | 
						|
#include <sys/types.h>
 | 
						|
#include <sys/stat.h>
 | 
						|
#include <stdio.h>
 | 
						|
#include <unistd.h>
 | 
						|
#include <string.h>
 | 
						|
#include <stdlib.h>
 | 
						|
#include <errno.h>
 | 
						|
 | 
						|
#include "ftp.h"
 | 
						|
#include "local.h"
 | 
						|
 | 
						|
static char line2[512];
 | 
						|
 | 
						|
static void dodir(char *path, int full);
 | 
						|
 | 
						|
int DOlpwd()
 | 
						|
{
 | 
						|
   if(getcwd(line2, sizeof(line2)) == (char *)NULL)
 | 
						|
	printf("Could not determine local directory. %s\n", strerror(errno));
 | 
						|
   else
 | 
						|
	printf("Current local directory: %s\n", line2);
 | 
						|
 | 
						|
   return(0);
 | 
						|
}
 | 
						|
 | 
						|
int DOlcd()
 | 
						|
{
 | 
						|
char *path;
 | 
						|
int s;
 | 
						|
 | 
						|
   path = cmdargv[1];
 | 
						|
 | 
						|
   if(cmdargc < 2) {
 | 
						|
	if(readline("Path: ", line2, sizeof(line2)) < 0)
 | 
						|
		return(-1);
 | 
						|
	path = line2;
 | 
						|
   }
 | 
						|
 | 
						|
   if(chdir(path))
 | 
						|
	printf("Could not change local directory. %s\n", strerror(errno));
 | 
						|
   else
 | 
						|
	return(DOlpwd());
 | 
						|
   
 | 
						|
   return(0);
 | 
						|
}
 | 
						|
 | 
						|
int DOlmkdir()
 | 
						|
{
 | 
						|
char *path;
 | 
						|
int s;
 | 
						|
 | 
						|
   path = cmdargv[1];
 | 
						|
 | 
						|
   if(cmdargc < 2) {
 | 
						|
	if(readline("Path: ", line2, sizeof(line2)) < 0)
 | 
						|
		return(-1);
 | 
						|
	path = line2;
 | 
						|
   }
 | 
						|
 | 
						|
   if(mkdir(path, 0777))
 | 
						|
	printf("Could not make directory %s. %s\n", path, strerror(errno));
 | 
						|
   else
 | 
						|
	printf("Directory created.\n");
 | 
						|
   
 | 
						|
   return(0);
 | 
						|
}
 | 
						|
 | 
						|
int DOlrmdir()
 | 
						|
{
 | 
						|
char *path;
 | 
						|
int s;
 | 
						|
 | 
						|
   path = cmdargv[1];
 | 
						|
 | 
						|
   if(cmdargc < 2) {
 | 
						|
	if(readline("Path: ", line2, sizeof(line2)) < 0)
 | 
						|
		return(-1);
 | 
						|
	path = line2;
 | 
						|
   }
 | 
						|
 | 
						|
   if(rmdir(path))
 | 
						|
	printf("Could not remove directory %s. %s\n", path, strerror(errno));
 | 
						|
   else
 | 
						|
	printf("Directory removed.\n");
 | 
						|
   
 | 
						|
   return(0);
 | 
						|
}
 | 
						|
 | 
						|
int DOllist(void)
 | 
						|
{
 | 
						|
   dodir(".", 1);
 | 
						|
 | 
						|
   return(0);
 | 
						|
}
 | 
						|
 | 
						|
int DOlnlst(void)
 | 
						|
{
 | 
						|
   dodir(".", 0);
 | 
						|
 | 
						|
   return(0);
 | 
						|
}
 | 
						|
 | 
						|
int DOlshell(void)
 | 
						|
{
 | 
						|
   (void) system("$SHELL");
 | 
						|
 | 
						|
   return(0);
 | 
						|
}
 | 
						|
 | 
						|
static void dodir(path, full)
 | 
						|
char *path;
 | 
						|
int full;
 | 
						|
{
 | 
						|
static char cmd[128];
 | 
						|
static char name[32];
 | 
						|
 | 
						|
   (void) tmpnam(name);
 | 
						|
 | 
						|
   if(full)
 | 
						|
	sprintf(cmd, "ls -l %s > %s", path, name);
 | 
						|
   else
 | 
						|
	sprintf(cmd, "ls %s > %s", path, name);
 | 
						|
 | 
						|
   (void) system(cmd);
 | 
						|
   sprintf(cmd, "more %s", name);
 | 
						|
   (void) system(cmd);
 | 
						|
   sprintf(cmd, "rm %s", name);
 | 
						|
   (void) system(cmd);
 | 
						|
}
 |