+char **get_mounted_devices(void)
+{
+ FILE *mtab;
+ struct mntent *me;
+ char **mounted = NULL;
+ int n_mounted = 0;
+
+ mtab = setmntent("/etc/mtab", "r");
+ if(!mtab)
+ return NULL;
+
+ while((me = getmntent(mtab)))
+ {
+ mounted = (char **)realloc(mounted, (n_mounted+2)*sizeof(char *));
+ mounted[n_mounted] = strdup(me->mnt_fsname);
+ ++n_mounted;
+ }
+
+ endmntent(mtab);
+ mounted[n_mounted] = NULL;
+
+ return mounted;
+}
+
+int is_mounted(char **mounted, char *devname)
+{
+ int i;
+ for(i=0; mounted[i]; ++i)
+ if(!strcmp(devname, mounted[i]))
+ return 1;
+ return 0;
+}
+
+void free_mounted_devices(char **mounted)
+{
+ int i;
+ if(!mounted)
+ return;
+ for(i=0; mounted[i]; ++i)
+ free(mounted[i]);
+ free(mounted);
+}
+