53 lines
899 B
C
53 lines
899 B
C
/* mkdir - make a directory Author: Adri Koppes */
|
|
|
|
#include <sys/types.h>
|
|
#include <signal.h>
|
|
|
|
int error = 0;
|
|
|
|
main(argc, argv)
|
|
int argc;
|
|
char **argv;
|
|
{
|
|
if (argc < 2) {
|
|
std_err("Usage: mkdir directory...\n");
|
|
exit(1);
|
|
}
|
|
signal(SIGHUP, SIG_IGN);
|
|
signal(SIGINT, SIG_IGN);
|
|
signal(SIGQUIT, SIG_IGN);
|
|
signal(SIGTERM, SIG_IGN);
|
|
while (--argc) makedir(*++argv);
|
|
if (error) exit(1);
|
|
}
|
|
|
|
makedir(dirname)
|
|
char *dirname;
|
|
{
|
|
char dots[128], parent[128];
|
|
int sl = 0, i = 0;
|
|
|
|
while (dirname[i])
|
|
if (dirname[i++] == '/') sl = i;
|
|
strncpy(parent, dirname, sl);
|
|
parent[sl] = '\0';
|
|
strcat(parent, ".");
|
|
if (access(parent, 2)) {
|
|
stderr3("mkdir: can't access ", parent, "\n");
|
|
exit(1);
|
|
}
|
|
if (mkdir(dirname, 0777)) {
|
|
stderr3("mkdir: can't create ", dirname, "\n");
|
|
error++;
|
|
return;
|
|
}
|
|
}
|
|
|
|
stderr3(s1, s2, s3)
|
|
char *s1, *s2, *s3;
|
|
{
|
|
std_err(s1);
|
|
std_err(s2);
|
|
std_err(s3);
|
|
}
|