X-Git-Url: https://git.librecmc.org/?p=oweals%2Fmountd.git;a=blobdiff_plain;f=mount.c;h=9cb1a43ce3d5173d3b2fec9de5a8d92ded42095f;hp=803acc1fa8c7b644da82fb4d1bdf3573d59cf9f1;hb=7aadd1cb3034828b3b9bced5b38b6bd00f0b7fc2;hpb=0f4f20ba5ce2dc24914c231eb2984d40b30d2adb diff --git a/mount.c b/mount.c index 803acc1..9cb1a43 100644 --- a/mount.c +++ b/mount.c @@ -292,8 +292,10 @@ int mount_new(char *path, char *dev) pid = waitpid(pid, &ret, 0); ret = WEXITSTATUS(ret); log_printf("----------> mount ret = %d\n", ret); - if(ret && (ret != 0xff)) + if (ret && ret != 0xff) { + rmdir(tmp); return -1; + } if(mount_wait_for_disc(mount->dev) == 0) { mount->mounted = 1; @@ -624,6 +626,12 @@ static void mount_check_mount_list(void) while(fgets(tmp, 256, fp) != NULL) { char *t, *t2; + + if (mounted_count + 1 > MAX_MOUNTED) { + log_printf("found more than %d mounts \n", MAX_MOUNTED); + break; + } + t = strstr(tmp, " "); if(t) { @@ -649,10 +657,8 @@ static void mount_check_mount_list(void) mounted[mounted_count][0], mounted[mounted_count][1], mounted[mounted_count][2]);*/ - if(mounted_count < MAX_MOUNTED - 1) - mounted_count++; - else - log_printf("found more than %d mounts \n", MAX_MOUNTED); + + mounted_count++; } fclose(fp); } @@ -747,11 +753,13 @@ static void mount_enum_drives(void) p->next->prev = p->prev; p = p->next; log_printf("removing %s\n", q->dev); - snprintf(tmp, 64, "%s%s", "/tmp/run/mountd/", q->dev); - rmdir(tmp); - snprintf(tmp, 64, "%s%s", uci_path, q->name); - unlink(tmp); - system_printf("ACTION=remove DEVICE=%s NAME=%s /sbin/hotplug-call mount", q->dev, q->name); + if (q->mounted) { + snprintf(tmp, 64, "%s%s", "/tmp/run/mountd/", q->dev); + rmdir(tmp); + snprintf(tmp, 64, "%s%s", uci_path, q->name); + unlink(tmp); + system_printf("ACTION=remove DEVICE=%s NAME=%s /sbin/hotplug-call mount", q->dev, q->name); + } free(q); mount_dump_uci_state(); system_printf("/etc/fonstated/ReloadSamba");