forked from enlightenment/enlightenment
add some rudimentary dir management for mounting (creation/deletion of /media/$uuid dirs)
SVN revision: 59440
This commit is contained in:
parent
686b349731
commit
7a53690aee
|
@ -5,6 +5,7 @@
|
||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include <sys/types.h>
|
#include <sys/types.h>
|
||||||
|
#include <sys/stat.h>
|
||||||
#include <pwd.h>
|
#include <pwd.h>
|
||||||
#include <grp.h>
|
#include <grp.h>
|
||||||
#include <fnmatch.h>
|
#include <fnmatch.h>
|
||||||
|
@ -125,14 +126,68 @@ main(int argc,
|
||||||
if (mnt)
|
if (mnt)
|
||||||
{
|
{
|
||||||
Eina_Strbuf *buf;
|
Eina_Strbuf *buf;
|
||||||
|
int ret;
|
||||||
|
const char *mp;
|
||||||
|
|
||||||
buf = eina_strbuf_new();
|
buf = eina_strbuf_new();
|
||||||
if (!buf) goto err;
|
if (!buf) goto err;
|
||||||
for (i = 1; i < argc; i++)
|
for (i = 1; i < argc; i++)
|
||||||
eina_strbuf_append_printf(buf, "%s ", argv[i]);
|
{
|
||||||
return system(eina_strbuf_string_get(buf));
|
if (!strncmp(argv[i], "/media/", 7))
|
||||||
|
{
|
||||||
|
mp = argv[i];
|
||||||
|
if (!strcmp(action, "mount"))
|
||||||
|
{
|
||||||
|
struct stat s;
|
||||||
|
|
||||||
|
if (stat("/media", &s))
|
||||||
|
{
|
||||||
|
mode_t um;
|
||||||
|
|
||||||
|
um = umask(0);
|
||||||
|
if (mkdir("/media", S_IRWXU | S_IRGRP | S_IXGRP | S_IROTH | S_IXOTH))
|
||||||
|
{
|
||||||
|
printf("ERROR: COULD NOT CREATE DIRECTORY /media\n");
|
||||||
|
exit(40);
|
||||||
|
}
|
||||||
|
umask(um);
|
||||||
|
}
|
||||||
|
else if (!S_ISDIR(s.st_mode))
|
||||||
|
{
|
||||||
|
printf("ERROR: NOT A DIRECTORY: /media\n");
|
||||||
|
exit(40);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (stat(argv[i], &s))
|
||||||
|
{
|
||||||
|
mode_t um;
|
||||||
|
|
||||||
|
um = umask(0);
|
||||||
|
if (mkdir(argv[i], S_IRWXU | S_IRGRP | S_IXGRP | S_IROTH | S_IXOTH))
|
||||||
|
{
|
||||||
|
printf("ERROR: COULD NOT CREATE DIRECTORY %s\n", argv[i]);
|
||||||
|
exit(40);
|
||||||
|
}
|
||||||
|
umask(um);
|
||||||
|
}
|
||||||
|
else if (!S_ISDIR(s.st_mode))
|
||||||
|
{
|
||||||
|
printf("ERROR: NOT A DIRECTORY: %s\n", argv[i]);
|
||||||
|
exit(40);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
eina_strbuf_append_printf(buf, "%s ", argv[i]);
|
||||||
|
}
|
||||||
|
ret = system(eina_strbuf_string_get(buf));
|
||||||
|
if ((!strcmp(action, "umount")) && (!ret))
|
||||||
|
{
|
||||||
|
if (rmdir(mp))
|
||||||
|
printf("ERROR: COULD NOT UNLINK MOUNT POINT %s\n", mp);
|
||||||
|
}
|
||||||
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
eina_shutdown();
|
eina_shutdown();
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
|
Loading…
Reference in New Issue