From 5d5716e6140502c35fb64a8751b12ecc43275bab Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Axel=20D=C3=B6rfler?= Date: Tue, 15 Jun 2004 15:38:55 +0000 Subject: [PATCH] Now calls the new devfs partition (un)publishing calls. git-svn-id: file:///srv/svn/repos/haiku/trunk/current@7974 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- .../KPhysicalPartition.cpp | 38 ++++++------------- 1 file changed, 11 insertions(+), 27 deletions(-) diff --git a/src/kernel/core/disk_device_manager/KPhysicalPartition.cpp b/src/kernel/core/disk_device_manager/KPhysicalPartition.cpp index 75233ace8f..b99eedad8b 100644 --- a/src/kernel/core/disk_device_manager/KPhysicalPartition.cpp +++ b/src/kernel/core/disk_device_manager/KPhysicalPartition.cpp @@ -9,6 +9,7 @@ #include #include #include +#include #include "KDiskDevice.h" #include "KDiskDeviceManager.h" @@ -70,9 +71,11 @@ KPhysicalPartition::Open(int flags, int *fd) status_t KPhysicalPartition::PublishDevice() { -// ToDo! - return B_ERROR; -#if 0 + char path[B_PATH_NAME_LENGTH]; + status_t error = GetPath(path); + if (error != B_OK) + return error; + // prepare a partition_info partition_info info; info.offset = Offset(); @@ -80,42 +83,23 @@ KPhysicalPartition::PublishDevice() info.logical_block_size = BlockSize(); info.session = 0; info.partition = ID(); - if (strlen(Device()->Path()) >= 256) + if (strlcpy(info.device, Device()->Path(), B_PATH_NAME_LENGTH) > B_PATH_NAME_LENGTH) return B_NAME_TOO_LONG; - strcpy(info.device, Device()->Path()); - // get the entry path - char path[B_PATH_NAME_LENGTH]; - status_t error = GetPath(path); - if (error != B_OK) - return error; - // create the entry - int fd = creat(path, 0666); - if (fd < 0) - return errno; - // set the partition info - error = B_OK; - if (ioctl(fd, B_SET_PARTITION, &info) < 0) - error = errno; - close(fd); - return error; -#endif + + return devfs_publish_partition(path, &info); } // UnpublishDevice status_t KPhysicalPartition::UnpublishDevice() { -#if 0 // get the entry path char path[B_PATH_NAME_LENGTH]; status_t error = GetPath(path); if (error != B_OK) return error; - // remove the entry - if (remove(path) < 0) - return errno; -#endif - return B_OK; + + return devfs_unpublish_partition(path); } // Mount