2 ** Copyright 2012, The CyanogenMod Project
4 ** Licensed under the Apache License, Version 2.0 (the "License");
5 ** you may not use this file except in compliance with the License.
6 ** You may obtain a copy of the License at
8 ** http://www.apache.org/licenses/LICENSE-2.0
10 ** Unless required by applicable law or agreed to in writing, software
11 ** distributed under the License is distributed on an "AS IS" BASIS,
12 ** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 ** See the License for the specific language governing permissions and
14 ** limitations under the License.
27 #include <cutils/properties.h>
29 /* reads a file, making sure it is terminated with \n \0 */
30 char* read_file(const char *fn, unsigned *_sz)
37 fd = open(fn, O_RDONLY);
40 sz = lseek(fd, 0, SEEK_END);
43 if(lseek(fd, 0, SEEK_SET) != 0) goto oops;
45 data = (char*) malloc(sz + 2);
46 if(data == 0) goto oops;
48 if(read(fd, data, sz) != sz) goto oops;
57 if(data != 0) free(data);
61 int get_property(const char *data, char *found, const char *searchkey, const char *not_found)
63 char *key, *value, *eol, *sol, *tmp;
64 if (data == NULL) goto defval;
67 while((eol = strchr(sol, '\n'))) {
72 value = strchr(key, '=');
73 if(value == 0) continue;
76 while(isspace(*key)) key++;
77 if(*key == '#') continue;
79 while((tmp > key) && isspace(*tmp)) *tmp-- = 0;
81 while(isspace(*value)) value++;
83 while((tmp > value) && isspace(*tmp)) *tmp-- = 0;
85 if (strncmp(searchkey, key, strlen(searchkey)) == 0) {
93 if (len >= PROPERTY_VALUE_MAX)
95 memcpy(found, value, len + 1);
100 len = strlen(not_found);
101 memcpy(found, not_found, len + 1);