1c24a8e688a6312764254beac2b2520bb0c5e998dThe Android Open Source Project/*
2c24a8e688a6312764254beac2b2520bb0c5e998dThe Android Open Source Project * Copyright (C) 2007 The Android Open Source Project
3c24a8e688a6312764254beac2b2520bb0c5e998dThe Android Open Source Project *
4c24a8e688a6312764254beac2b2520bb0c5e998dThe Android Open Source Project * Licensed under the Apache License, Version 2.0 (the "License");
5c24a8e688a6312764254beac2b2520bb0c5e998dThe Android Open Source Project * you may not use this file except in compliance with the License.
6c24a8e688a6312764254beac2b2520bb0c5e998dThe Android Open Source Project * You may obtain a copy of the License at
7c24a8e688a6312764254beac2b2520bb0c5e998dThe Android Open Source Project *
8c24a8e688a6312764254beac2b2520bb0c5e998dThe Android Open Source Project *      http://www.apache.org/licenses/LICENSE-2.0
9c24a8e688a6312764254beac2b2520bb0c5e998dThe Android Open Source Project *
10c24a8e688a6312764254beac2b2520bb0c5e998dThe Android Open Source Project * Unless required by applicable law or agreed to in writing, software
11c24a8e688a6312764254beac2b2520bb0c5e998dThe Android Open Source Project * distributed under the License is distributed on an "AS IS" BASIS,
12c24a8e688a6312764254beac2b2520bb0c5e998dThe Android Open Source Project * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13c24a8e688a6312764254beac2b2520bb0c5e998dThe Android Open Source Project * See the License for the specific language governing permissions and
14c24a8e688a6312764254beac2b2520bb0c5e998dThe Android Open Source Project * limitations under the License.
15c24a8e688a6312764254beac2b2520bb0c5e998dThe Android Open Source Project */
16c24a8e688a6312764254beac2b2520bb0c5e998dThe Android Open Source Project
17c24a8e688a6312764254beac2b2520bb0c5e998dThe Android Open Source Project#ifndef RECOVERY_COMMON_H
18c24a8e688a6312764254beac2b2520bb0c5e998dThe Android Open Source Project#define RECOVERY_COMMON_H
19c24a8e688a6312764254beac2b2520bb0c5e998dThe Android Open Source Project
20c24a8e688a6312764254beac2b2520bb0c5e998dThe Android Open Source Project#include <stdio.h>
21596b342a0476629badb41b840494254a19c57daeDoug Zongker#include <stdarg.h>
22c24a8e688a6312764254beac2b2520bb0c5e998dThe Android Open Source Project
2328ce47cfa6919518a8c298088bf08b03bb374c0fDoug Zongker#ifdef __cplusplus
2428ce47cfa6919518a8c298088bf08b03bb374c0fDoug Zongkerextern "C" {
2528ce47cfa6919518a8c298088bf08b03bb374c0fDoug Zongker#endif
2628ce47cfa6919518a8c298088bf08b03bb374c0fDoug Zongker
27596b342a0476629badb41b840494254a19c57daeDoug Zongker#define LOGE(...) ui_print("E:" __VA_ARGS__)
283d177d055c9cf3571e4b7c098818b454d1dbf9d7Doug Zongker#define LOGW(...) fprintf(stdout, "W:" __VA_ARGS__)
293d177d055c9cf3571e4b7c098818b454d1dbf9d7Doug Zongker#define LOGI(...) fprintf(stdout, "I:" __VA_ARGS__)
30c24a8e688a6312764254beac2b2520bb0c5e998dThe Android Open Source Project
31c24a8e688a6312764254beac2b2520bb0c5e998dThe Android Open Source Project#if 0
323d177d055c9cf3571e4b7c098818b454d1dbf9d7Doug Zongker#define LOGV(...) fprintf(stdout, "V:" __VA_ARGS__)
333d177d055c9cf3571e4b7c098818b454d1dbf9d7Doug Zongker#define LOGD(...) fprintf(stdout, "D:" __VA_ARGS__)
34c24a8e688a6312764254beac2b2520bb0c5e998dThe Android Open Source Project#else
35c24a8e688a6312764254beac2b2520bb0c5e998dThe Android Open Source Project#define LOGV(...) do {} while (0)
36c24a8e688a6312764254beac2b2520bb0c5e998dThe Android Open Source Project#define LOGD(...) do {} while (0)
37c24a8e688a6312764254beac2b2520bb0c5e998dThe Android Open Source Project#endif
38c24a8e688a6312764254beac2b2520bb0c5e998dThe Android Open Source Project
39fb2e3af3f915c0e3f2b4b027ef26777267ad46dcDoug Zongker#define STRINGIFY(x) #x
40fb2e3af3f915c0e3f2b4b027ef26777267ad46dcDoug Zongker#define EXPAND(x) STRINGIFY(x)
41fb2e3af3f915c0e3f2b4b027ef26777267ad46dcDoug Zongker
42f35d1cef7c19db975a1295e8c23c7fb8bd2489f9Ken Sumralltypedef struct fstab_rec Volume;
43cc8cd3f3cac07f6927ead277ef390c000ae798d9Doug Zongker
44469243e53689b6f312d20813444dc00d83528758Doug Zongker// fopen a file, mounting volumes and making parent dirs as necessary.
45469243e53689b6f312d20813444dc00d83528758Doug ZongkerFILE* fopen_path(const char *path, const char *mode);
46469243e53689b6f312d20813444dc00d83528758Doug Zongker
47596b342a0476629badb41b840494254a19c57daeDoug Zongkervoid ui_print(const char* format, ...);
48596b342a0476629badb41b840494254a19c57daeDoug Zongker
4928ce47cfa6919518a8c298088bf08b03bb374c0fDoug Zongker#ifdef __cplusplus
5028ce47cfa6919518a8c298088bf08b03bb374c0fDoug Zongker}
5128ce47cfa6919518a8c298088bf08b03bb374c0fDoug Zongker#endif
5228ce47cfa6919518a8c298088bf08b03bb374c0fDoug Zongker
53c24a8e688a6312764254beac2b2520bb0c5e998dThe Android Open Source Project#endif  // RECOVERY_COMMON_H
54