diff options
| author | Nicolas Geoffray <ngeoffray@google.com> | 2015-03-16 11:08:29 +0000 |
|---|---|---|
| committer | Gerrit Code Review <noreply-gerritcodereview@google.com> | 2015-03-16 11:08:29 +0000 |
| commit | dd5816953de6aebc51aa4cc6f69945fbb9cd4b2a (patch) | |
| tree | 8db9bc4aa940a8b3a44cf31dacd3a7f932eadc80 /base/stringprintf.cpp | |
| parent | acf0a8b3f632fe90132b9ce457a2237160f8cb9a (diff) | |
| parent | a7870d88167f619e758b5bcd15b410d16da7c16b (diff) | |
Merge "Revert "Create libbase.""
Diffstat (limited to 'base/stringprintf.cpp')
| -rw-r--r-- | base/stringprintf.cpp | 85 |
1 files changed, 0 insertions, 85 deletions
diff --git a/base/stringprintf.cpp b/base/stringprintf.cpp deleted file mode 100644 index d55ff52195..0000000000 --- a/base/stringprintf.cpp +++ /dev/null @@ -1,85 +0,0 @@ -/* - * Copyright (C) 2011 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 "base/stringprintf.h" - -#include <stdio.h> - -#include <string> - -namespace android { -namespace base { - -void StringAppendV(std::string* dst, const char* format, va_list ap) { - // First try with a small fixed size buffer - char space[1024]; - - // It's possible for methods that use a va_list to invalidate - // the data in it upon use. The fix is to make a copy - // of the structure before using it and use that copy instead. - va_list backup_ap; - va_copy(backup_ap, ap); - int result = vsnprintf(space, sizeof(space), format, backup_ap); - va_end(backup_ap); - - if (result < static_cast<int>(sizeof(space))) { - if (result >= 0) { - // Normal case -- everything fit. - dst->append(space, result); - return; - } - - if (result < 0) { - // Just an error. - return; - } - } - - // Increase the buffer size to the size requested by vsnprintf, - // plus one for the closing \0. - int length = result + 1; - char* buf = new char[length]; - - // Restore the va_list before we use it again - va_copy(backup_ap, ap); - result = vsnprintf(buf, length, format, backup_ap); - va_end(backup_ap); - - if (result >= 0 && result < length) { - // It fit - dst->append(buf, result); - } - delete[] buf; -} - -std::string StringPrintf(const char* fmt, ...) { - va_list ap; - va_start(ap, fmt); - std::string result; - StringAppendV(&result, fmt, ap); - va_end(ap); - return result; -} - -void StringAppendF(std::string* dst, const char* format, ...) { - va_list ap; - va_start(ap, format); - StringAppendV(dst, format, ap); - va_end(ap); -} - -} // namespace base -} // namespace android |
