diff options
author | Colin Cross <ccross@android.com> | 2012-04-26 14:24:35 -0700 |
---|---|---|
committer | Colin Cross <ccross@android.com> | 2012-07-09 22:09:37 -0700 |
commit | a21930b6b0dbb04a52948566d58fb48c6db58bab (patch) | |
tree | e74cfb32ad232c3b99364cd0931502519ca72111 /libsparse | |
parent | 9e1f17e926fa20255c5f4b4d2f68aa98a964253a (diff) | |
download | system_core-a21930b6b0dbb04a52948566d58fb48c6db58bab.zip system_core-a21930b6b0dbb04a52948566d58fb48c6db58bab.tar.gz system_core-a21930b6b0dbb04a52948566d58fb48c6db58bab.tar.bz2 |
libsparse: add error reporting functions
Change-Id: I2f21355b6c5339d1d724b4c121ea30d575b2d366
Diffstat (limited to 'libsparse')
-rw-r--r-- | libsparse/Android.mk | 3 | ||||
-rw-r--r-- | libsparse/include/sparse/sparse.h | 18 | ||||
-rw-r--r-- | libsparse/sparse.c | 5 | ||||
-rw-r--r-- | libsparse/sparse_err.c | 33 | ||||
-rw-r--r-- | libsparse/sparse_file.h | 1 |
5 files changed, 59 insertions, 1 deletions
diff --git a/libsparse/Android.mk b/libsparse/Android.mk index dbe4d18..d3eeae6 100644 --- a/libsparse/Android.mk +++ b/libsparse/Android.mk @@ -6,7 +6,8 @@ libsparse_src_files := \ backed_block.c \ output_file.c \ sparse.c \ - sparse_crc32.c + sparse_crc32.c \ + sparse_err.c include $(CLEAR_VARS) diff --git a/libsparse/include/sparse/sparse.h b/libsparse/include/sparse/sparse.h index 6484333..09a5137 100644 --- a/libsparse/include/sparse/sparse.h +++ b/libsparse/include/sparse/sparse.h @@ -157,4 +157,22 @@ int sparse_file_add_fd(struct sparse_file *s, int sparse_file_write(struct sparse_file *s, int fd, bool gz, bool sparse, bool crc); +/** + * sparse_file_verbose - set a sparse file cookie to print verbose errors + * + * @s - sparse file cookie + * + * Print verbose sparse file errors whenever using the sparse file cookie. + */ +void sparse_file_verbose(struct sparse_file *s); + +/** + * sparse_print_verbose - function called to print verbose errors + * + * By default, verbose errors will print to standard error. + * sparse_print_verbose may be overridden to log verbose errors somewhere else. + * + */ +extern void (*sparse_print_verbose)(const char *fmt, ...); + #endif diff --git a/libsparse/sparse.c b/libsparse/sparse.c index 4ebcf0f..3403604 100644 --- a/libsparse/sparse.c +++ b/libsparse/sparse.c @@ -151,3 +151,8 @@ int sparse_file_write(struct sparse_file *s, int fd, bool gz, bool sparse, return 0; } + +void sparse_file_verbose(struct sparse_file *s) +{ + s->verbose = true; +} diff --git a/libsparse/sparse_err.c b/libsparse/sparse_err.c new file mode 100644 index 0000000..0f392ad --- /dev/null +++ b/libsparse/sparse_err.c @@ -0,0 +1,33 @@ +/* + * Copyright (C) 2012 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include <sparse/sparse.h> + +#include <stdarg.h> +#include <stdio.h> +#include <unistd.h> + +void sparse_default_print(const char *fmt, ...) +{ + va_list argp; + + va_start(argp, fmt); + vfprintf(stderr, fmt, argp); + va_end(argp); +} + +void (*sparse_print_error)(const char *fmt, ...) = sparse_default_print; +void (*sparse_print_verbose)(const char *fmt, ...) = sparse_default_print; diff --git a/libsparse/sparse_file.h b/libsparse/sparse_file.h index fae1c16..91a12e6 100644 --- a/libsparse/sparse_file.h +++ b/libsparse/sparse_file.h @@ -22,6 +22,7 @@ struct sparse_file { unsigned int block_size; int64_t len; + bool verbose; struct backed_block_list *backed_block_list; struct output_file *out; |