diff options
-rw-r--r-- | apt-pkg/cdrom.cc | 11 | ||||
-rw-r--r-- | apt-pkg/contrib/cdromutl.cc | 6 | ||||
-rw-r--r-- | apt-pkg/contrib/cdromutl.h | 2 |
3 files changed, 12 insertions, 7 deletions
diff --git a/apt-pkg/cdrom.cc b/apt-pkg/cdrom.cc index deca6b4ac..83438f1c4 100644 --- a/apt-pkg/cdrom.cc +++ b/apt-pkg/cdrom.cc @@ -907,13 +907,18 @@ pkgUdevCdromDevices::ScanForRemovable(bool CdromOnly) if (udevice == NULL) continue; const char* devnode = udev_device_get_devnode(udevice); - const char* mountpath = udev_device_get_property_value(udevice, "FSTAB_DIR"); - if (mountpath == NULL) + + // try fstab_dir first + string mountpath; + const char* mp = udev_device_get_property_value(udevice, "FSTAB_DIR"); + if (mp) + mountpath = string(mp); + else mountpath = FindMountPointForDevice(devnode); // fill in the struct cdrom.DeviceName = string(devnode); - if (mountpath) { + if (mountpath != "") { cdrom.MountPath = mountpath; string s = string(mountpath); cdrom.Mounted = IsMounted(s); diff --git a/apt-pkg/contrib/cdromutl.cc b/apt-pkg/contrib/cdromutl.cc index cf1c0c29b..83c324f54 100644 --- a/apt-pkg/contrib/cdromutl.cc +++ b/apt-pkg/contrib/cdromutl.cc @@ -237,7 +237,7 @@ bool IdentCdrom(string CD,string &Res,unsigned int Version) /*}}}*/ // FindMountPointForDevice - Find mountpoint for the given device /*{{{*/ -char* FindMountPointForDevice(const char *devnode) +string FindMountPointForDevice(const char *devnode) { char buf[255]; char *out[10]; @@ -254,14 +254,14 @@ char* FindMountPointForDevice(const char *devnode) while ( fgets(buf, sizeof(buf), f) != NULL) { if (strncmp(buf, devnode, strlen(devnode)) == 0) { if(TokSplitString(' ', buf, out, 10)) - return strdup(out[1]); + return string(out[1]); } } fclose(f); } } - return NULL; + return string(); } diff --git a/apt-pkg/contrib/cdromutl.h b/apt-pkg/contrib/cdromutl.h index 4f0f90347..38ed2996e 100644 --- a/apt-pkg/contrib/cdromutl.h +++ b/apt-pkg/contrib/cdromutl.h @@ -19,6 +19,6 @@ bool MountCdrom(string Path, string DeviceName=""); bool UnmountCdrom(string Path); bool IdentCdrom(string CD,string &Res,unsigned int Version = 2); bool IsMounted(string &Path); -char *FindMountPointForDevice(const char *device); +string FindMountPointForDevice(const char *device); #endif |