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
|
||||
|
||||
# libroot
|
||||
driver_settings.c
|
||||
driver_settings.cpp
|
||||
|
||||
# utils
|
||||
kernel_cpp.cpp
|
||||
@@ -102,7 +102,7 @@ SEARCH on [ FGristFiles KMessage.cpp ]
|
||||
SEARCH on [ FGristFiles safemode_settings.cpp ]
|
||||
= [ 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 ] ;
|
||||
|
||||
SEARCH on [ FGristFiles amiga_rdb.cpp ]
|
||||
|
||||
@@ -5,16 +5,16 @@ UsePrivateHeaders shared ;
|
||||
# kernel libroot os files
|
||||
|
||||
KernelMergeObject kernel_os_main.o :
|
||||
driver_settings.c
|
||||
find_directory.c
|
||||
driver_settings.cpp
|
||||
find_directory.cpp
|
||||
fs_info.c
|
||||
wait_for_objects.cpp
|
||||
: $(TARGET_KERNEL_PIC_CCFLAGS)
|
||||
;
|
||||
|
||||
SEARCH on [ FGristFiles
|
||||
driver_settings.c
|
||||
find_directory.c
|
||||
driver_settings.cpp
|
||||
find_directory.cpp
|
||||
fs_info.c
|
||||
wait_for_objects.cpp
|
||||
] = [ FDirName $(HAIKU_TOP) src system libroot os ] ;
|
||||
|
||||
@@ -11,8 +11,8 @@ MergeObject os_main.o :
|
||||
area.c
|
||||
atomic.c
|
||||
debug.c
|
||||
driver_settings.c
|
||||
find_directory.c
|
||||
driver_settings.cpp
|
||||
find_directory.cpp
|
||||
fs_attr.cpp
|
||||
fs_index.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
|
||||
|
||||
newArray = realloc(parameter->values, (parameter->value_count + 1)
|
||||
* sizeof(char *));
|
||||
newArray = (char**)realloc(parameter->values,
|
||||
(parameter->value_count + 1) * sizeof(char *));
|
||||
if (newArray == NULL)
|
||||
return B_NO_MEMORY;
|
||||
|
||||
@@ -318,7 +318,7 @@ parse_parameters(struct driver_parameter **_parameters, int *_count,
|
||||
if (status != NO_PARAMETER) {
|
||||
driver_parameter *newParameter;
|
||||
|
||||
newArray = realloc(*_parameters, (*_count + 1)
|
||||
newArray = (driver_parameter*)realloc(*_parameters, (*_count + 1)
|
||||
* sizeof(struct driver_parameter));
|
||||
if (newArray == NULL)
|
||||
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)
|
||||
{
|
||||
settings_handle *handle = malloc(sizeof(settings_handle));
|
||||
settings_handle *handle = (settings_handle*)malloc(sizeof(settings_handle));
|
||||
if (handle == NULL)
|
||||
return NULL;
|
||||
|
||||
@@ -506,7 +506,7 @@ put_string(char **_buffer, size_t *_bufferSize, char *string)
|
||||
|
||||
|
||||
static bool
|
||||
put_chars(char **_buffer, size_t *_bufferSize, char *chars)
|
||||
put_chars(char **_buffer, size_t *_bufferSize, const char *chars)
|
||||
{
|
||||
char *buffer = *_buffer;
|
||||
size_t length;
|
||||
@@ -610,7 +610,8 @@ find_driver_settings(const char *name)
|
||||
|
||||
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))
|
||||
return handle;
|
||||
}
|
||||
@@ -629,12 +630,13 @@ driver_settings_init(kernel_args *args)
|
||||
list_init(&sHandles);
|
||||
|
||||
while (settings != NULL) {
|
||||
settings_handle *handle = malloc(sizeof(settings_handle));
|
||||
settings_handle *handle
|
||||
= (settings_handle*)malloc(sizeof(settings_handle));
|
||||
if (handle == NULL)
|
||||
return B_NO_MEMORY;
|
||||
|
||||
if (settings->size != 0) {
|
||||
handle->text = malloc(settings->size + 1);
|
||||
handle->text = (char*)malloc(settings->size + 1);
|
||||
if (handle->text == NULL) {
|
||||
free(handle);
|
||||
return B_NO_MEMORY;
|
||||
@@ -746,7 +748,7 @@ load_driver_settings(const char *driverName)
|
||||
if (!strcmp(settings->name, driverName)) {
|
||||
// we have it - since the buffer is clobbered, we have to
|
||||
// copy its contents, though
|
||||
char *text = malloc(settings->size + 1);
|
||||
char *text = (char*)malloc(settings->size + 1);
|
||||
if (text == 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
|
||||
char *text = strdup(settingsString);
|
||||
if (settingsString == NULL || text != NULL) {
|
||||
settings_handle *handle = malloc(sizeof(settings_handle));
|
||||
settings_handle *handle
|
||||
= (settings_handle*)malloc(sizeof(settings_handle));
|
||||
if (handle != NULL) {
|
||||
handle->magic = SETTINGS_MAGIC;
|
||||
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.
|
||||
*/
|
||||
bool
|
||||
get_driver_boolean_parameter(void *handle, const char *keyName,
|
||||
get_driver_boolean_parameter(void *_handle, const char *keyName,
|
||||
bool unknownValue, bool noArgValue)
|
||||
{
|
||||
settings_handle *handle = (settings_handle*)_handle;
|
||||
driver_parameter *parameter;
|
||||
char *boolean;
|
||||
|
||||
@@ -943,9 +947,10 @@ get_driver_boolean_parameter(void *handle, const char *keyName,
|
||||
|
||||
|
||||
const char *
|
||||
get_driver_parameter(void *handle, const char *keyName,
|
||||
get_driver_parameter(void *_handle, const char *keyName,
|
||||
const char *unknownValue, const char *noArgValue)
|
||||
{
|
||||
settings_handle* handle = (settings_handle*)_handle;
|
||||
struct driver_parameter *parameter;
|
||||
|
||||
if (!check_handle(handle))
|
||||
@@ -966,7 +971,7 @@ get_driver_parameter(void *handle, const char *keyName,
|
||||
const driver_settings *
|
||||
get_driver_settings(void *handle)
|
||||
{
|
||||
if (!check_handle(handle))
|
||||
if (!check_handle((settings_handle*)handle))
|
||||
return NULL;
|
||||
|
||||
return &((settings_handle *)handle)->settings;
|
||||
@@ -975,5 +980,6 @@ get_driver_settings(void *handle)
|
||||
|
||||
// this creates an alias of the above function
|
||||
// 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;
|
||||
char *buffer = NULL;
|
||||
char *home = NULL;
|
||||
const char *template = NULL;
|
||||
const char *templatePath = NULL;
|
||||
|
||||
/* as with the R5 version, no on-stack buffer */
|
||||
buffer = (char *)malloc(pathLength);
|
||||
@@ -196,14 +196,14 @@ find_directory(directory_which which, dev_t device, bool createIt,
|
||||
/* Per volume directories */
|
||||
case B_DESKTOP_DIRECTORY:
|
||||
if (device == bootDevice || !strcmp(fsInfo.fsh_name, "bfs"))
|
||||
template = "$h/Desktop";
|
||||
templatePath = "$h/Desktop";
|
||||
break;
|
||||
case B_TRASH_DIRECTORY:
|
||||
// TODO: eventually put that into the file system API?
|
||||
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"))
|
||||
template = "RECYCLED/_BEOS_";
|
||||
templatePath = "RECYCLED/_BEOS_";
|
||||
break;
|
||||
|
||||
/* 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_SOUNDS_DIRECTORY:
|
||||
case B_SYSTEM_DATA_DIRECTORY:
|
||||
template = kSystemDirectories[which - B_SYSTEM_DIRECTORY];
|
||||
templatePath = kSystemDirectories[which - B_SYSTEM_DIRECTORY];
|
||||
break;
|
||||
|
||||
/* 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_SOUNDS_DIRECTORY:
|
||||
case B_COMMON_DATA_DIRECTORY:
|
||||
template = kCommonDirectories[which - B_COMMON_DIRECTORY];
|
||||
templatePath = kCommonDirectories[which - B_COMMON_DIRECTORY];
|
||||
break;
|
||||
|
||||
/* User directories */
|
||||
@@ -265,18 +265,18 @@ find_directory(directory_which which, dev_t device, bool createIt,
|
||||
case B_USER_SOUNDS_DIRECTORY:
|
||||
case B_USER_DATA_DIRECTORY:
|
||||
case B_USER_CACHE_DIRECTORY:
|
||||
template = kUserDirectories[which - B_USER_DIRECTORY];
|
||||
templatePath = kUserDirectories[which - B_USER_DIRECTORY];
|
||||
break;
|
||||
|
||||
/* Global directories */
|
||||
case B_APPS_DIRECTORY:
|
||||
template = "apps";
|
||||
templatePath = "apps";
|
||||
break;
|
||||
case B_PREFERENCES_DIRECTORY:
|
||||
template = "preferences";
|
||||
templatePath = "preferences";
|
||||
break;
|
||||
case B_UTILITIES_DIRECTORY:
|
||||
template = "utilities";
|
||||
templatePath = "utilities";
|
||||
break;
|
||||
|
||||
default:
|
||||
@@ -285,8 +285,8 @@ find_directory(directory_which which, dev_t device, bool createIt,
|
||||
}
|
||||
|
||||
err = B_OK;
|
||||
if (template) {
|
||||
if (!strncmp(template, "$h", 2)) {
|
||||
if (templatePath) {
|
||||
if (!strncmp(templatePath, "$h", 2)) {
|
||||
if (bootDevice > -1 && device != bootDevice) {
|
||||
int l = pathLength - strlen(buffer);
|
||||
if (l > 5)
|
||||
@@ -312,13 +312,14 @@ find_directory(directory_which which, dev_t device, bool createIt,
|
||||
home = "/boot/home";
|
||||
strncpy(buffer, home, pathLength);
|
||||
}
|
||||
template += 2;
|
||||
templatePath += 2;
|
||||
} else
|
||||
strlcat(buffer, "/", pathLength);
|
||||
|
||||
if (!err && strlen(buffer) + 2 + strlen(template) < (uint32)pathLength)
|
||||
strcat(buffer, template);
|
||||
else
|
||||
if (!err && strlen(buffer) + 2 + strlen(templatePath)
|
||||
< (uint32)pathLength) {
|
||||
strcat(buffer, templatePath);
|
||||
} else
|
||||
err = err ? err : E2BIG;
|
||||
} else
|
||||
err = err ? err : ENOENT;
|
||||
Reference in New Issue
Block a user