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