static GPtrArray *amstar_build_argv(application_argument_t *argument,
int level,
int command);
+static int check_device(application_argument_t *argument);
static char *star_path;
static char *star_tardumps;
check_file(amandates_file, R_OK|W_OK);
}
+ set_root_privs(1);
+ if (argument->dle.device) {
+ check_dir(argument->dle.device, R_OK);
+ }
+ set_root_privs(0);
}
static void
fprintf(stderr, "ERROR exclude-list not supported for backup\n");
}
+ if (check_device(argument) == 0) {
+ return;
+ }
+
qdisk = quote_string(argument->dle.disk);
if (argument->calcsize) {
char *dirname;
return(argv_ptr);
}
+
+static int
+check_device(
+ application_argument_t *argument)
+{
+ char *qdevice;
+ struct stat stat_buf;
+
+ qdevice = quote_string(argument->dle.device);
+ set_root_privs(1);
+ if(!stat(argument->dle.device, &stat_buf)) {
+ if (!S_ISDIR(stat_buf.st_mode)) {
+ set_root_privs(0);
+ g_fprintf(stderr, _("ERROR %s is not a directory\n"), qdevice);
+ amfree(qdevice);
+ return 0;
+ }
+ } else {
+ set_root_privs(0);
+ g_fprintf(stderr, _("ERROR can not stat %s: %s\n"), qdevice,
+ strerror(errno));
+ amfree(qdevice);
+ return 0;
+ }
+ if (access(argument->dle.device, R_OK|X_OK) == -1) {
+ set_root_privs(0);
+ g_fprintf(stderr, _("ERROR can not access %s: %s\n"),
+ argument->dle.device, strerror(errno));
+ amfree(qdevice);
+ return 0;
+ }
+ set_root_privs(0);
+ amfree(qdevice);
+ return 1;
+}
+