find_directory.c, driver_settings.c: Converted to C++.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@37256 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
@@ -66,7 +66,7 @@ KernelStaticLibrary boot_loader :
|
|||||||
vm.cpp
|
vm.cpp
|
||||||
|
|
||||||
# libroot
|
# libroot
|
||||||
driver_settings.c
|
driver_settings.cpp
|
||||||
|
|
||||||
# utils
|
# utils
|
||||||
kernel_cpp.cpp
|
kernel_cpp.cpp
|
||||||
@@ -102,7 +102,7 @@ SEARCH on [ FGristFiles KMessage.cpp ]
|
|||||||
SEARCH on [ FGristFiles safemode_settings.cpp ]
|
SEARCH on [ FGristFiles safemode_settings.cpp ]
|
||||||
= [ FDirName $(HAIKU_TOP) src system kernel debug ] ;
|
= [ FDirName $(HAIKU_TOP) src system kernel debug ] ;
|
||||||
|
|
||||||
SEARCH on [ FGristFiles driver_settings.c ]
|
SEARCH on [ FGristFiles driver_settings.cpp ]
|
||||||
= [ FDirName $(HAIKU_TOP) src system libroot os ] ;
|
= [ FDirName $(HAIKU_TOP) src system libroot os ] ;
|
||||||
|
|
||||||
SEARCH on [ FGristFiles amiga_rdb.cpp ]
|
SEARCH on [ FGristFiles amiga_rdb.cpp ]
|
||||||
|
|||||||
@@ -5,16 +5,16 @@ UsePrivateHeaders shared ;
|
|||||||
# kernel libroot os files
|
# kernel libroot os files
|
||||||
|
|
||||||
KernelMergeObject kernel_os_main.o :
|
KernelMergeObject kernel_os_main.o :
|
||||||
driver_settings.c
|
driver_settings.cpp
|
||||||
find_directory.c
|
find_directory.cpp
|
||||||
fs_info.c
|
fs_info.c
|
||||||
wait_for_objects.cpp
|
wait_for_objects.cpp
|
||||||
: $(TARGET_KERNEL_PIC_CCFLAGS)
|
: $(TARGET_KERNEL_PIC_CCFLAGS)
|
||||||
;
|
;
|
||||||
|
|
||||||
SEARCH on [ FGristFiles
|
SEARCH on [ FGristFiles
|
||||||
driver_settings.c
|
driver_settings.cpp
|
||||||
find_directory.c
|
find_directory.cpp
|
||||||
fs_info.c
|
fs_info.c
|
||||||
wait_for_objects.cpp
|
wait_for_objects.cpp
|
||||||
] = [ FDirName $(HAIKU_TOP) src system libroot os ] ;
|
] = [ FDirName $(HAIKU_TOP) src system libroot os ] ;
|
||||||
|
|||||||
@@ -11,8 +11,8 @@ MergeObject os_main.o :
|
|||||||
area.c
|
area.c
|
||||||
atomic.c
|
atomic.c
|
||||||
debug.c
|
debug.c
|
||||||
driver_settings.c
|
driver_settings.cpp
|
||||||
find_directory.c
|
find_directory.cpp
|
||||||
fs_attr.cpp
|
fs_attr.cpp
|
||||||
fs_index.c
|
fs_index.c
|
||||||
fs_info.c
|
fs_info.c
|
||||||
|
|||||||
+21
-15
@@ -284,8 +284,8 @@ parse_parameter(struct driver_parameter *parameter, char **_pos, int32 level)
|
|||||||
|
|
||||||
// enlarge value array and save the value
|
// enlarge value array and save the value
|
||||||
|
|
||||||
newArray = realloc(parameter->values, (parameter->value_count + 1)
|
newArray = (char**)realloc(parameter->values,
|
||||||
* sizeof(char *));
|
(parameter->value_count + 1) * sizeof(char *));
|
||||||
if (newArray == NULL)
|
if (newArray == NULL)
|
||||||
return B_NO_MEMORY;
|
return B_NO_MEMORY;
|
||||||
|
|
||||||
@@ -318,7 +318,7 @@ parse_parameters(struct driver_parameter **_parameters, int *_count,
|
|||||||
if (status != NO_PARAMETER) {
|
if (status != NO_PARAMETER) {
|
||||||
driver_parameter *newParameter;
|
driver_parameter *newParameter;
|
||||||
|
|
||||||
newArray = realloc(*_parameters, (*_count + 1)
|
newArray = (driver_parameter*)realloc(*_parameters, (*_count + 1)
|
||||||
* sizeof(struct driver_parameter));
|
* sizeof(struct driver_parameter));
|
||||||
if (newArray == NULL)
|
if (newArray == NULL)
|
||||||
return B_NO_MEMORY;
|
return B_NO_MEMORY;
|
||||||
@@ -395,10 +395,10 @@ free_settings(settings_handle *handle)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
static void *
|
static settings_handle *
|
||||||
new_settings(char *buffer, const char *driverName)
|
new_settings(char *buffer, const char *driverName)
|
||||||
{
|
{
|
||||||
settings_handle *handle = malloc(sizeof(settings_handle));
|
settings_handle *handle = (settings_handle*)malloc(sizeof(settings_handle));
|
||||||
if (handle == NULL)
|
if (handle == NULL)
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
@@ -506,7 +506,7 @@ put_string(char **_buffer, size_t *_bufferSize, char *string)
|
|||||||
|
|
||||||
|
|
||||||
static bool
|
static bool
|
||||||
put_chars(char **_buffer, size_t *_bufferSize, char *chars)
|
put_chars(char **_buffer, size_t *_bufferSize, const char *chars)
|
||||||
{
|
{
|
||||||
char *buffer = *_buffer;
|
char *buffer = *_buffer;
|
||||||
size_t length;
|
size_t length;
|
||||||
@@ -610,7 +610,8 @@ find_driver_settings(const char *name)
|
|||||||
|
|
||||||
ASSERT_LOCKED_MUTEX(&sLock);
|
ASSERT_LOCKED_MUTEX(&sLock);
|
||||||
|
|
||||||
while ((handle = list_get_next_item(&sHandles, handle)) != NULL) {
|
while ((handle = (settings_handle*)list_get_next_item(&sHandles, handle))
|
||||||
|
!= NULL) {
|
||||||
if (!strcmp(handle->name, name))
|
if (!strcmp(handle->name, name))
|
||||||
return handle;
|
return handle;
|
||||||
}
|
}
|
||||||
@@ -629,12 +630,13 @@ driver_settings_init(kernel_args *args)
|
|||||||
list_init(&sHandles);
|
list_init(&sHandles);
|
||||||
|
|
||||||
while (settings != NULL) {
|
while (settings != NULL) {
|
||||||
settings_handle *handle = malloc(sizeof(settings_handle));
|
settings_handle *handle
|
||||||
|
= (settings_handle*)malloc(sizeof(settings_handle));
|
||||||
if (handle == NULL)
|
if (handle == NULL)
|
||||||
return B_NO_MEMORY;
|
return B_NO_MEMORY;
|
||||||
|
|
||||||
if (settings->size != 0) {
|
if (settings->size != 0) {
|
||||||
handle->text = malloc(settings->size + 1);
|
handle->text = (char*)malloc(settings->size + 1);
|
||||||
if (handle->text == NULL) {
|
if (handle->text == NULL) {
|
||||||
free(handle);
|
free(handle);
|
||||||
return B_NO_MEMORY;
|
return B_NO_MEMORY;
|
||||||
@@ -746,7 +748,7 @@ load_driver_settings(const char *driverName)
|
|||||||
if (!strcmp(settings->name, driverName)) {
|
if (!strcmp(settings->name, driverName)) {
|
||||||
// we have it - since the buffer is clobbered, we have to
|
// we have it - since the buffer is clobbered, we have to
|
||||||
// copy its contents, though
|
// copy its contents, though
|
||||||
char *text = malloc(settings->size + 1);
|
char *text = (char*)malloc(settings->size + 1);
|
||||||
if (text == NULL)
|
if (text == NULL)
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
@@ -845,7 +847,8 @@ parse_driver_settings_string(const char *settingsString)
|
|||||||
// we simply copy the whole string to use it as our internal buffer
|
// we simply copy the whole string to use it as our internal buffer
|
||||||
char *text = strdup(settingsString);
|
char *text = strdup(settingsString);
|
||||||
if (settingsString == NULL || text != NULL) {
|
if (settingsString == NULL || text != NULL) {
|
||||||
settings_handle *handle = malloc(sizeof(settings_handle));
|
settings_handle *handle
|
||||||
|
= (settings_handle*)malloc(sizeof(settings_handle));
|
||||||
if (handle != NULL) {
|
if (handle != NULL) {
|
||||||
handle->magic = SETTINGS_MAGIC;
|
handle->magic = SETTINGS_MAGIC;
|
||||||
handle->text = text;
|
handle->text = text;
|
||||||
@@ -903,9 +906,10 @@ get_driver_settings_string(void *_handle, char *buffer, size_t *_bufferSize,
|
|||||||
Also returns "unknownValue" if the handle passed in was not valid.
|
Also returns "unknownValue" if the handle passed in was not valid.
|
||||||
*/
|
*/
|
||||||
bool
|
bool
|
||||||
get_driver_boolean_parameter(void *handle, const char *keyName,
|
get_driver_boolean_parameter(void *_handle, const char *keyName,
|
||||||
bool unknownValue, bool noArgValue)
|
bool unknownValue, bool noArgValue)
|
||||||
{
|
{
|
||||||
|
settings_handle *handle = (settings_handle*)_handle;
|
||||||
driver_parameter *parameter;
|
driver_parameter *parameter;
|
||||||
char *boolean;
|
char *boolean;
|
||||||
|
|
||||||
@@ -943,9 +947,10 @@ get_driver_boolean_parameter(void *handle, const char *keyName,
|
|||||||
|
|
||||||
|
|
||||||
const char *
|
const char *
|
||||||
get_driver_parameter(void *handle, const char *keyName,
|
get_driver_parameter(void *_handle, const char *keyName,
|
||||||
const char *unknownValue, const char *noArgValue)
|
const char *unknownValue, const char *noArgValue)
|
||||||
{
|
{
|
||||||
|
settings_handle* handle = (settings_handle*)_handle;
|
||||||
struct driver_parameter *parameter;
|
struct driver_parameter *parameter;
|
||||||
|
|
||||||
if (!check_handle(handle))
|
if (!check_handle(handle))
|
||||||
@@ -966,7 +971,7 @@ get_driver_parameter(void *handle, const char *keyName,
|
|||||||
const driver_settings *
|
const driver_settings *
|
||||||
get_driver_settings(void *handle)
|
get_driver_settings(void *handle)
|
||||||
{
|
{
|
||||||
if (!check_handle(handle))
|
if (!check_handle((settings_handle*)handle))
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
return &((settings_handle *)handle)->settings;
|
return &((settings_handle *)handle)->settings;
|
||||||
@@ -975,5 +980,6 @@ get_driver_settings(void *handle)
|
|||||||
|
|
||||||
// this creates an alias of the above function
|
// this creates an alias of the above function
|
||||||
// unload_driver_settings() is the same as delete_driver_settings()
|
// unload_driver_settings() is the same as delete_driver_settings()
|
||||||
extern __typeof(unload_driver_settings) delete_driver_settings __attribute__ ((alias ("unload_driver_settings")));
|
extern "C" __typeof(unload_driver_settings) delete_driver_settings
|
||||||
|
__attribute__((alias ("unload_driver_settings")));
|
||||||
|
|
||||||
@@ -151,7 +151,7 @@ find_directory(directory_which which, dev_t device, bool createIt,
|
|||||||
struct stat st;
|
struct stat st;
|
||||||
char *buffer = NULL;
|
char *buffer = NULL;
|
||||||
char *home = NULL;
|
char *home = NULL;
|
||||||
const char *template = NULL;
|
const char *templatePath = NULL;
|
||||||
|
|
||||||
/* as with the R5 version, no on-stack buffer */
|
/* as with the R5 version, no on-stack buffer */
|
||||||
buffer = (char *)malloc(pathLength);
|
buffer = (char *)malloc(pathLength);
|
||||||
@@ -196,14 +196,14 @@ find_directory(directory_which which, dev_t device, bool createIt,
|
|||||||
/* Per volume directories */
|
/* Per volume directories */
|
||||||
case B_DESKTOP_DIRECTORY:
|
case B_DESKTOP_DIRECTORY:
|
||||||
if (device == bootDevice || !strcmp(fsInfo.fsh_name, "bfs"))
|
if (device == bootDevice || !strcmp(fsInfo.fsh_name, "bfs"))
|
||||||
template = "$h/Desktop";
|
templatePath = "$h/Desktop";
|
||||||
break;
|
break;
|
||||||
case B_TRASH_DIRECTORY:
|
case B_TRASH_DIRECTORY:
|
||||||
// TODO: eventually put that into the file system API?
|
// TODO: eventually put that into the file system API?
|
||||||
if (device == bootDevice || !strcmp(fsInfo.fsh_name, "bfs"))
|
if (device == bootDevice || !strcmp(fsInfo.fsh_name, "bfs"))
|
||||||
template = "trash"; // TODO: add suffix for current user
|
templatePath = "trash"; // TODO: add suffix for current user
|
||||||
else if (!strcmp(fsInfo.fsh_name, "fat"))
|
else if (!strcmp(fsInfo.fsh_name, "fat"))
|
||||||
template = "RECYCLED/_BEOS_";
|
templatePath = "RECYCLED/_BEOS_";
|
||||||
break;
|
break;
|
||||||
|
|
||||||
/* Haiku system directories */
|
/* Haiku system directories */
|
||||||
@@ -223,7 +223,7 @@ find_directory(directory_which which, dev_t device, bool createIt,
|
|||||||
case B_SYSTEM_MEDIA_NODES_DIRECTORY:
|
case B_SYSTEM_MEDIA_NODES_DIRECTORY:
|
||||||
case B_SYSTEM_SOUNDS_DIRECTORY:
|
case B_SYSTEM_SOUNDS_DIRECTORY:
|
||||||
case B_SYSTEM_DATA_DIRECTORY:
|
case B_SYSTEM_DATA_DIRECTORY:
|
||||||
template = kSystemDirectories[which - B_SYSTEM_DIRECTORY];
|
templatePath = kSystemDirectories[which - B_SYSTEM_DIRECTORY];
|
||||||
break;
|
break;
|
||||||
|
|
||||||
/* Common directories, shared among users */
|
/* Common directories, shared among users */
|
||||||
@@ -247,7 +247,7 @@ find_directory(directory_which which, dev_t device, bool createIt,
|
|||||||
case B_COMMON_MEDIA_NODES_DIRECTORY:
|
case B_COMMON_MEDIA_NODES_DIRECTORY:
|
||||||
case B_COMMON_SOUNDS_DIRECTORY:
|
case B_COMMON_SOUNDS_DIRECTORY:
|
||||||
case B_COMMON_DATA_DIRECTORY:
|
case B_COMMON_DATA_DIRECTORY:
|
||||||
template = kCommonDirectories[which - B_COMMON_DIRECTORY];
|
templatePath = kCommonDirectories[which - B_COMMON_DIRECTORY];
|
||||||
break;
|
break;
|
||||||
|
|
||||||
/* User directories */
|
/* User directories */
|
||||||
@@ -265,18 +265,18 @@ find_directory(directory_which which, dev_t device, bool createIt,
|
|||||||
case B_USER_SOUNDS_DIRECTORY:
|
case B_USER_SOUNDS_DIRECTORY:
|
||||||
case B_USER_DATA_DIRECTORY:
|
case B_USER_DATA_DIRECTORY:
|
||||||
case B_USER_CACHE_DIRECTORY:
|
case B_USER_CACHE_DIRECTORY:
|
||||||
template = kUserDirectories[which - B_USER_DIRECTORY];
|
templatePath = kUserDirectories[which - B_USER_DIRECTORY];
|
||||||
break;
|
break;
|
||||||
|
|
||||||
/* Global directories */
|
/* Global directories */
|
||||||
case B_APPS_DIRECTORY:
|
case B_APPS_DIRECTORY:
|
||||||
template = "apps";
|
templatePath = "apps";
|
||||||
break;
|
break;
|
||||||
case B_PREFERENCES_DIRECTORY:
|
case B_PREFERENCES_DIRECTORY:
|
||||||
template = "preferences";
|
templatePath = "preferences";
|
||||||
break;
|
break;
|
||||||
case B_UTILITIES_DIRECTORY:
|
case B_UTILITIES_DIRECTORY:
|
||||||
template = "utilities";
|
templatePath = "utilities";
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
@@ -285,8 +285,8 @@ find_directory(directory_which which, dev_t device, bool createIt,
|
|||||||
}
|
}
|
||||||
|
|
||||||
err = B_OK;
|
err = B_OK;
|
||||||
if (template) {
|
if (templatePath) {
|
||||||
if (!strncmp(template, "$h", 2)) {
|
if (!strncmp(templatePath, "$h", 2)) {
|
||||||
if (bootDevice > -1 && device != bootDevice) {
|
if (bootDevice > -1 && device != bootDevice) {
|
||||||
int l = pathLength - strlen(buffer);
|
int l = pathLength - strlen(buffer);
|
||||||
if (l > 5)
|
if (l > 5)
|
||||||
@@ -312,13 +312,14 @@ find_directory(directory_which which, dev_t device, bool createIt,
|
|||||||
home = "/boot/home";
|
home = "/boot/home";
|
||||||
strncpy(buffer, home, pathLength);
|
strncpy(buffer, home, pathLength);
|
||||||
}
|
}
|
||||||
template += 2;
|
templatePath += 2;
|
||||||
} else
|
} else
|
||||||
strlcat(buffer, "/", pathLength);
|
strlcat(buffer, "/", pathLength);
|
||||||
|
|
||||||
if (!err && strlen(buffer) + 2 + strlen(template) < (uint32)pathLength)
|
if (!err && strlen(buffer) + 2 + strlen(templatePath)
|
||||||
strcat(buffer, template);
|
< (uint32)pathLength) {
|
||||||
else
|
strcat(buffer, templatePath);
|
||||||
|
} else
|
||||||
err = err ? err : E2BIG;
|
err = err ? err : E2BIG;
|
||||||
} else
|
} else
|
||||||
err = err ? err : ENOENT;
|
err = err ? err : ENOENT;
|
||||||
Reference in New Issue
Block a user