diff options
author | Colin Cross <ccross@android.com> | 2021-10-13 20:18:47 +0000 |
---|---|---|
committer | Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com> | 2021-10-13 20:18:47 +0000 |
commit | 4477a0b37a4fb8e582cd69dd4293bc65d625786e (patch) | |
tree | 6ac8e6df2b1f70f000be32836c0fb8f7e65362cf | |
parent | 928d5791d854f6a8faa228966e7ab8cb63066fb7 (diff) | |
parent | eec863e7eee7a40341b620a2f34b1760df5ff96b (diff) | |
download | obstack-4477a0b37a4fb8e582cd69dd4293bc65d625786e.tar.gz |
Add obstack_printf to libobstack am: 5bef457686 am: c22026c70c am: ffe9223a19 am: eec863e7ee
Original change: https://android-review.googlesource.com/c/platform/external/obstack/+/1843836
Change-Id: I107b36ff2f0fa43ce2daaba02025cc01da2dd56b
-rw-r--r-- | Android.bp | 2 | ||||
-rw-r--r-- | android/include/obstack.h | 26 | ||||
-rw-r--r-- | android/obstack_printf.c | 42 |
3 files changed, 70 insertions, 0 deletions
@@ -18,9 +18,11 @@ cc_library_host_static { }, srcs: [ "libiberty/obstack.c", + "android/obstack_printf.c", ], local_include_dirs: ["android"], export_include_dirs: [ + "android/include", "include", ], visibility: [ diff --git a/android/include/obstack.h b/android/include/obstack.h new file mode 100644 index 0000000..a45421e --- /dev/null +++ b/android/include/obstack.h @@ -0,0 +1,26 @@ +/* + * Copyright 2021, 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. + */ + +/* + * This is a wrapper around gnulib's obstack.h to add obstack_printf. + */ + +#pragma once + +#include_next <obstack.h> + +int obstack_printf(struct obstack *obs, const char *format, ...) + __attribute__((__format__(printf, 2, 3))); diff --git a/android/obstack_printf.c b/android/obstack_printf.c new file mode 100644 index 0000000..647d7f7 --- /dev/null +++ b/android/obstack_printf.c @@ -0,0 +1,42 @@ +/* + * Copyright 2021, 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. + */ + +/* + * This is a reimplementation of obstack_printf for use by libcpu, which + * uses it to print an error message. + */ + +#include <stdarg.h> +#include <stdio.h> +#include <stdlib.h> +#include <obstack.h> + +int __attribute__((__format__(printf, 2, 3))) obstack_printf(struct obstack *obs, const char *format, ...) { + + va_list ap; + va_start(ap, format); + + char* str = NULL; + int len = vasprintf(&str, format, ap); + if (len < 0) { + return len; + } + + obstack_grow(obs, str, len); + free(str); + + return len; +} |