xref: /haiku/src/kits/storage/disk_device/DiskDeviceUtils.h (revision e81a954787e50e56a7f06f72705b7859b6ab06d1)
1 /*
2  * Copyright 2007, Ingo Weinhold, ingo_weinhold@gmx.de.
3  * Distributed under the terms of the MIT License.
4  */
5 #ifndef _DISK_DEVICE_UTILS_H
6 #define _DISK_DEVICE_UTILS_H
7 
8 #include <stdlib.h>
9 #include <string.h>
10 
11 #include <SupportDefs.h>
12 
13 
14 namespace BPrivate {
15 
16 
17 // set_string
18 static inline status_t
19 set_string(char*& location, const char* newString)
20 {
21 	char* string = NULL;
22 	if (newString) {
23 		string = strdup(newString);
24 		if (!string)
25 			return B_NO_MEMORY;
26 	}
27 
28 	free(location);
29 	location = string;
30 
31 	return B_OK;
32 }
33 
34 
35 #define SET_STRING_RETURN_ON_ERROR(location, string)	\
36 {														\
37 	status_t error = set_string(location, string);		\
38 	if (error != B_OK)									\
39 		return error;									\
40 }
41 
42 
43 static inline int
44 compare_string(const char* a, const char* b)
45 {
46 	if (a == NULL)
47 		return (b == NULL ? 0 : -1);
48 	if (b == NULL)
49 		return 1;
50 	return strcmp(a, b);
51 }
52 
53 
54 }	// namespace BPrivate
55 
56 using BPrivate::set_string;
57 using BPrivate::compare_string;
58 
59 #endif	// _DISK_DEVICE_UTILS_H
60