X-Git-Url: https://gerrit.automotivelinux.org/gerrit/gitweb?a=blobdiff_plain;f=src%2Futil.cpp;h=c178d90a99905b029748e691f0655d6fa83c2b3b;hb=refs%2Ftags%2F5.0.0;hp=1d0601aff93d632bc1838e98b186ec1d3d856b8d;hpb=cb5568e11bbe2d499d4d43dc30a779a5869b12ea;p=staging%2Fwindowmanager.git diff --git a/src/util.cpp b/src/util.cpp index 1d0601a..c178d90 100644 --- a/src/util.cpp +++ b/src/util.cpp @@ -1,65 +1,39 @@ -#include "util.hpp" - -#include -#include -#include -#include -#include - -struct strftime_cache { - time_t time; - char buf[128]; -}; - -static void log_(char const *log_type, FILE *stream, char const *fmt, - va_list args) { - static struct strftime_cache strft; +/* + * Copyright (C) 2017 Mentor Graphics Development (Deutschland) GmbH + * + * 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. + */ - time_t t = time(NULL); - if (t != strft.time) { - strft.time = t; - struct tm tm; - struct tm *tmp = localtime_r(&t, &tm); - strftime(strft.buf, sizeof(strft.buf), "%Y-%m-%dT%H:%M:%S", tmp); - } - - fputs(program_invocation_short_name, stream); - fputs(" ", stream); - fputs(strft.buf, stream); - fputs(" ", stream); - fputs(log_type, stream); - fputs(" ", stream); - vfprintf(stream, fmt, args); - fputs("\n", stream); -} +#include "util.hpp" -void lognotice(char const *fmt, ...) { - va_list a; - va_start(a, fmt); - log_("notice", stdout, fmt, a); - va_end(a); -} +#include +#include +#include +#include +#include -void logerror(char const *fmt, ...) { - va_list a; - va_start(a, fmt); - log_("error", stderr, fmt, a); - va_end(a); -} +#include -void fatal(char const *fmt, ...) { - va_list a; - va_start(a, fmt); - log_("fatal", stderr, fmt, a); - va_end(a); - abort(); +#ifdef SCOPE_TRACING +thread_local int ScopeTrace::indent = 0; +ScopeTrace::ScopeTrace(char const *func) : f(func) { + fprintf(stderr, "%lu %*s%s -->\n", pthread_self(), 2 * indent++, "", this->f); } +ScopeTrace::~ScopeTrace() { fprintf(stderr, "%lu %*s%s <--\n", pthread_self(), 2 * --indent, "", this->f); } +#endif -#ifdef DEBUG_OUTPUT -void logdebug(char const *fmt, ...) { - va_list a; - va_start(a, fmt); - log_("debug", stdout, fmt, a); - va_end(a); +unique_fd::~unique_fd() { + if (this->fd != -1) { + close(this->fd); + } } -#endif