forked from Stichting-MINIX-Research-Foundation/minix
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathlocal.c
More file actions
executable file
·128 lines (100 loc) · 1.89 KB
/
Copy pathlocal.c
File metadata and controls
executable file
·128 lines (100 loc) · 1.89 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
/* local.c
*
* This file is part of ftp.
*
*
* 01/25/96 Initial Release Michael Temari, <temari@ix.netcom.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];
_PROTOTYPE(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) {
readline("Path: ", line2, sizeof(line2));
path = line2;
}
if(chdir(path))
printf("Could not change local directory. %s\n", strerror(errno));
else
DOlpwd();
return(0);
}
int DOlmkdir()
{
char *path;
int s;
path = cmdargv[1];
if(cmdargc < 2) {
readline("Directory: ", line2, sizeof(line2));
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) {
readline("Directory: ", line2, sizeof(line2));
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);
}
int DOlnlst(void)
{
dodir(".", 0);
}
int DOlshell(void)
{
system("$SHELL");
}
static void dodir(path, full)
char *path;
int full;
{
char cmd[128];
static char name[32];
tmpnam(name);
if(full)
sprintf(cmd, "ls -l %s > %s", path, name);
else
sprintf(cmd, "ls %s > %s", path, name);
system(cmd);
sprintf(cmd, "more %s", name);
system(cmd);
sprintf(cmd, "rm %s", name);
system(cmd);
}