mirror of
https://github.com/Llewellynvdm/conky.git
synced 2024-12-27 04:32:55 +00:00
More build fixes.
This commit is contained in:
parent
50a4aa25ab
commit
bc60fb2c2f
13
.travis.yml
13
.travis.yml
@ -242,7 +242,7 @@ matrix:
|
|||||||
osx_image: xcode10.1
|
osx_image: xcode10.1
|
||||||
before_install:
|
before_install:
|
||||||
- if [[ "$TRAVIS_OS_NAME" == "linux" ]]; then eval "${MATRIX_EVAL}" ; fi
|
- if [[ "$TRAVIS_OS_NAME" == "linux" ]]; then eval "${MATRIX_EVAL}" ; fi
|
||||||
- |
|
- |
|
||||||
if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then
|
if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then
|
||||||
HOMEBREW_NO_AUTO_UPDATE=1 brew install freetype gettext lua imlib2 librsvg ccache docbook2x ;
|
HOMEBREW_NO_AUTO_UPDATE=1 brew install freetype gettext lua imlib2 librsvg ccache docbook2x ;
|
||||||
export PATH="/usr/local/opt/ccache/libexec:$PATH";
|
export PATH="/usr/local/opt/ccache/libexec:$PATH";
|
||||||
@ -317,9 +317,12 @@ before_script:
|
|||||||
fi
|
fi
|
||||||
script:
|
script:
|
||||||
- cd build
|
- cd build
|
||||||
- if [ "$CXX" = "clang++-7" ] ; then build-wrapper-linux-x86-64 --out-dir bw-output make -j4 ; fi
|
- |
|
||||||
- if [ "$CXX" = "g++-8" ] ; then make -j4 ; fi
|
if [ "$CXX" = "clang++-7" ] ; then
|
||||||
- if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then make -j4 ; fi
|
build-wrapper-linux-x86-64 --out-dir bw-output make -j4 ;
|
||||||
|
else
|
||||||
|
make -j4 ;
|
||||||
|
fi
|
||||||
- cd ../build-no-x11
|
- cd ../build-no-x11
|
||||||
- make -j4
|
- make -j4
|
||||||
- cd ..
|
- cd ..
|
||||||
@ -331,4 +334,4 @@ sudo: false
|
|||||||
cache:
|
cache:
|
||||||
- ccache: true
|
- ccache: true
|
||||||
- directories:
|
- directories:
|
||||||
- '$HOME/.sonar/cache'
|
- "$HOME/.sonar/cache"
|
||||||
|
@ -157,3 +157,27 @@ macro(AC_SEARCH_LIBS FUNCTION_NAME INCLUDES TARGET_VAR)
|
|||||||
endif(${AC_SEARCH_LIBS_TMP})
|
endif(${AC_SEARCH_LIBS_TMP})
|
||||||
endif("${TARGET_VAR}" MATCHES "^${TARGET_VAR}$")
|
endif("${TARGET_VAR}" MATCHES "^${TARGET_VAR}$")
|
||||||
endmacro(AC_SEARCH_LIBS)
|
endmacro(AC_SEARCH_LIBS)
|
||||||
|
|
||||||
|
|
||||||
|
# A function to print the target build properties
|
||||||
|
function(print_target_properties tgt)
|
||||||
|
if(NOT TARGET ${tgt})
|
||||||
|
message("There is no target named '${tgt}'")
|
||||||
|
return()
|
||||||
|
endif()
|
||||||
|
|
||||||
|
# this list of properties can be extended as needed
|
||||||
|
set(CMAKE_PROPERTY_LIST SOURCE_DIR BINARY_DIR COMPILE_DEFINITIONS
|
||||||
|
COMPILE_OPTIONS INCLUDE_DIRECTORIES LINK_LIBRARIES)
|
||||||
|
|
||||||
|
message("Configuration for target ${tgt}")
|
||||||
|
|
||||||
|
foreach (prop ${CMAKE_PROPERTY_LIST})
|
||||||
|
get_property(propval TARGET ${tgt} PROPERTY ${prop} SET)
|
||||||
|
if (propval)
|
||||||
|
get_target_property(propval ${tgt} ${prop})
|
||||||
|
message (STATUS "${prop} = ${propval}")
|
||||||
|
endif()
|
||||||
|
endforeach(prop)
|
||||||
|
|
||||||
|
endfunction(print_target_properties)
|
||||||
|
@ -32,15 +32,21 @@ if(NOT CMAKE_BUILD_TYPE)
|
|||||||
endif(NOT CMAKE_BUILD_TYPE)
|
endif(NOT CMAKE_BUILD_TYPE)
|
||||||
|
|
||||||
# -std options for all build types
|
# -std options for all build types
|
||||||
set(CMAKE_C_FLAGS "-std=c99" CACHE STRING "Flags used by the C compiler during all build types.")
|
set(CMAKE_C_FLAGS "-std=c99" CACHE STRING "Flags used by the C compiler during all build types." FORCE)
|
||||||
set(CMAKE_CXX_FLAGS "-std=c++17" CACHE STRING "Flags used by the C++ compiler during all build types.")
|
set(CMAKE_CXX_FLAGS "-std=c++17" CACHE STRING "Flags used by the C++ compiler during all build types." FORCE)
|
||||||
set(CMAKE_CXX_STANDARD 17)
|
set(CMAKE_CXX_STANDARD 17)
|
||||||
set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
||||||
|
|
||||||
if(MAINTAINER_MODE)
|
if(MAINTAINER_MODE)
|
||||||
# some extra debug flags when in 'maintainer mode'
|
# some extra debug flags when in 'maintainer mode'
|
||||||
set(CMAKE_C_FLAGS_DEBUG "-ggdb -Wall -W -Wextra -Wunused -Wdeclaration-after-statement -Wundef -Wendif-labels -Wshadow -Wpointer-arith -Wbad-function-cast -Wcast-qual -Wcast-align -Wwrite-strings -Wstrict-prototypes -Wold-style-definition -Winline -Wmissing-noreturn -Wmissing-format-attribute -Wredundant-decls -pedantic -Werror ${CMAKE_C_FLAGS_DEBUG}" CACHE STRING "Flags used by the compiler during debug builds." FORCE)
|
if (CMAKE_COMPILER_IS_GNUCC AND CMAKE_CXX_COMPILER_VERSION VERSION_GREATER 7.0)
|
||||||
set(CMAKE_CXX_FLAGS_DEBUG "-ggdb -Wall -W -Wextra -Wunused -pedantic -Werror -Wno-format ${CMAKE_CXX_FLAGS_DEBUG}" CACHE STRING "Flags used by the compiler during debug builds." FORCE)
|
# Some flags are only supported on GCC >= 7.0, such as -Wimplicit-fallthrough=2
|
||||||
|
set(CMAKE_C_FLAGS_DEBUG "-ggdb -Wall -W -Wextra -Wunused -Wdeclaration-after-statement -Wundef -Wendif-labels -Wshadow -Wpointer-arith -Wbad-function-cast -Wcast-qual -Wcast-align -Wwrite-strings -Wstrict-prototypes -Wold-style-definition -Winline -Wmissing-noreturn -Wmissing-format-attribute -Wredundant-decls -pedantic -Werror ${CMAKE_C_FLAGS_DEBUG} -Wno-unknown-pragmas -Wno-error=pragmas -Wimplicit-fallthrough=2" CACHE STRING "Flags used by the compiler during debug builds." FORCE)
|
||||||
|
set(CMAKE_CXX_FLAGS_DEBUG "-ggdb -Wall -W -Wextra -Wunused -pedantic -Werror -Wno-format ${CMAKE_CXX_FLAGS_DEBUG} -Wno-unknown-pragmas -Wno-error=pragmas -Wimplicit-fallthrough=2" CACHE STRING "Flags used by the compiler during debug builds." FORCE)
|
||||||
|
else()
|
||||||
|
set(CMAKE_C_FLAGS_DEBUG "-ggdb -Wall -W -Wextra -Wunused -Wdeclaration-after-statement -Wundef -Wendif-labels -Wshadow -Wpointer-arith -Wbad-function-cast -Wcast-qual -Wcast-align -Wwrite-strings -Wstrict-prototypes -Wold-style-definition -Winline -Wmissing-noreturn -Wmissing-format-attribute -Wredundant-decls -pedantic -Werror ${CMAKE_C_FLAGS_DEBUG} -Wno-unknown-pragmas -Wno-error=pragmas" CACHE STRING "Flags used by the compiler during debug builds." FORCE)
|
||||||
|
set(CMAKE_CXX_FLAGS_DEBUG "-ggdb -Wall -W -Wextra -Wunused -pedantic -Werror -Wno-format ${CMAKE_CXX_FLAGS_DEBUG} -Wno-unknown-pragmas -Wno-error=pragmas" CACHE STRING "Flags used by the compiler during debug builds." FORCE)
|
||||||
|
endif()
|
||||||
endif(MAINTAINER_MODE)
|
endif(MAINTAINER_MODE)
|
||||||
|
|
||||||
option(CHECK_CODE_QUALITY "Check code formatting/quality with clang" false)
|
option(CHECK_CODE_QUALITY "Check code formatting/quality with clang" false)
|
||||||
@ -195,3 +201,20 @@ option(BUILD_CMUS "Enable support for cmus music player" true)
|
|||||||
option(BUILD_JOURNAL "Enable support for reading from the systemd journal" false)
|
option(BUILD_JOURNAL "Enable support for reading from the systemd journal" false)
|
||||||
|
|
||||||
option(BUILD_PULSEAUDIO "Enable support for Pulseaudio's default sink and source" false)
|
option(BUILD_PULSEAUDIO "Enable support for Pulseaudio's default sink and source" false)
|
||||||
|
|
||||||
|
message( STATUS "CMAKE_C_FLAGS: " ${CMAKE_C_FLAGS} )
|
||||||
|
message( STATUS "CMAKE_CXX_FLAGS: " ${CMAKE_CXX_FLAGS} )
|
||||||
|
|
||||||
|
message( STATUS "CMAKE_C_FLAGS_DEBUG: " ${CMAKE_C_FLAGS_DEBUG} )
|
||||||
|
message( STATUS "CMAKE_CXX_FLAGS_DEBUG: " ${CMAKE_CXX_FLAGS_DEBUG} )
|
||||||
|
|
||||||
|
message( STATUS "CMAKE_C_FLAGS_MINSIZEREL: " ${CMAKE_C_FLAGS_MINSIZEREL} )
|
||||||
|
message( STATUS "CMAKE_CXX_FLAGS_MINSIZEREL: " ${CMAKE_CXX_FLAGS_MINSIZEREL} )
|
||||||
|
|
||||||
|
message( STATUS "CMAKE_C_FLAGS_RELEASE: " ${CMAKE_C_FLAGS_RELEASE} )
|
||||||
|
message( STATUS "CMAKE_CXX_FLAGS_RELEASE: " ${CMAKE_CXX_FLAGS_RELEASE} )
|
||||||
|
|
||||||
|
message( STATUS "CMAKE_C_FLAGS_RELWITHDEBINFO: " ${CMAKE_C_FLAGS_RELWITHDEBINFO} )
|
||||||
|
message( STATUS "CMAKE_CXX_FLAGS_RELWITHDEBINFO: " ${CMAKE_CXX_FLAGS_RELWITHDEBINFO} )
|
||||||
|
|
||||||
|
message( STATUS "CMAKE_BUILD_TYPE: " ${CMAKE_BUILD_TYPE} )
|
||||||
|
@ -74,10 +74,10 @@ if(MAINTAINER_MODE)
|
|||||||
COMMAND ${APP_DB2X_MANXML} --encoding=utf-8 ${FIL}.mxml --output-dir ${CMAKE_CURRENT_SOURCE_DIR}
|
COMMAND ${APP_DB2X_MANXML} --encoding=utf-8 ${FIL}.mxml --output-dir ${CMAKE_CURRENT_SOURCE_DIR}
|
||||||
COMMAND ${APP_XSLTPROC} ${CMAKE_SOURCE_DIR}/doc/docbook-xml/html/docbook.xsl ${CMAKE_CURRENT_SOURCE_DIR}/${FIL}.xml > ${CMAKE_CURRENT_SOURCE_DIR}/${FIL}.html
|
COMMAND ${APP_XSLTPROC} ${CMAKE_SOURCE_DIR}/doc/docbook-xml/html/docbook.xsl ${CMAKE_CURRENT_SOURCE_DIR}/${FIL}.xml > ${CMAKE_CURRENT_SOURCE_DIR}/${FIL}.html
|
||||||
COMMAND ${APP_MAN} -P '${APP_LESS} -is' ${CMAKE_CURRENT_SOURCE_DIR}/${PROJECT_NAME}.1 > ${CMAKE_SOURCE_DIR}/README
|
COMMAND ${APP_MAN} -P '${APP_LESS} -is' ${CMAKE_CURRENT_SOURCE_DIR}/${PROJECT_NAME}.1 > ${CMAKE_SOURCE_DIR}/README
|
||||||
COMMAND ${APP_SED} -i -e "s/[[:cntrl:]]\\[[0-9]*m//g" ${CMAKE_SOURCE_DIR}/README
|
COMMAND ${APP_SED} -i'' -e 's/[[:cntrl:]]\\[[0-9]*m//g' ${CMAKE_SOURCE_DIR}/README
|
||||||
COMMAND ${APP_SED} -i -e "s/\\xE2//g" ${CMAKE_SOURCE_DIR}/README
|
COMMAND ${APP_SED} -i'' -e 's/\\xE2//g' ${CMAKE_SOURCE_DIR}/README
|
||||||
COMMAND ${APP_SED} -i -e "s/\\x80//g" ${CMAKE_SOURCE_DIR}/README
|
COMMAND ${APP_SED} -i'' -e 's/\\x80//g' ${CMAKE_SOURCE_DIR}/README
|
||||||
COMMAND ${APP_SED} -i -e "s/\\x90/-/g" ${CMAKE_SOURCE_DIR}/README
|
COMMAND ${APP_SED} -i'' -e 's/\\x90/-/g' ${CMAKE_SOURCE_DIR}/README
|
||||||
DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/${FIL}.xml
|
DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/${FIL}.xml
|
||||||
COMMENT "Proccessing man page for ${FIL}"
|
COMMENT "Proccessing man page for ${FIL}"
|
||||||
)
|
)
|
||||||
|
@ -50,7 +50,7 @@ ADD_CUSTOM_COMMAND( OUTPUT ${TOLUA_OUT} ${INCL} COMMAND
|
|||||||
VERBATIM )
|
VERBATIM )
|
||||||
|
|
||||||
SET_SOURCE_FILES_PROPERTIES(${${VAR}} ${INCL} PROPERTIES GENERATED TRUE)
|
SET_SOURCE_FILES_PROPERTIES(${${VAR}} ${INCL} PROPERTIES GENERATED TRUE)
|
||||||
SET_SOURCE_FILES_PROPERTIES(${${VAR}} PROPERTIES COMPILE_FLAGS "-Wno-bad-function-cast -Wno-unused-parameter -Wno-cast-qual")
|
SET_SOURCE_FILES_PROPERTIES(${${VAR}} PROPERTIES COMPILE_FLAGS "-Wno-bad-function-cast -Wno-unused-parameter -Wno-cast-qual -Wno-error=pedantic")
|
||||||
|
|
||||||
|
|
||||||
SET(${VAR} ${${VAR}} PARENT_SCOPE)
|
SET(${VAR} ${${VAR}} PARENT_SCOPE)
|
||||||
|
@ -29,7 +29,7 @@ if(BUILD_X11)
|
|||||||
include_directories(${luacairo_includes} ${CMAKE_CURRENT_SOURCE_DIR})
|
include_directories(${luacairo_includes} ${CMAKE_CURRENT_SOURCE_DIR})
|
||||||
|
|
||||||
# Need the directory for -lSM
|
# Need the directory for -lSM
|
||||||
get_filename_component(X11_SM_LIB_PATH ${X11_SM_LIB} DIRECTORY)
|
get_filename_component(X11_SM_LIB_PATH ${X11_SM_LIB} DIRECTORY)
|
||||||
link_directories(${X11_SM_LIB_PATH})
|
link_directories(${X11_SM_LIB_PATH})
|
||||||
|
|
||||||
# cairo_set_dash() needs this special hack to work properly
|
# cairo_set_dash() needs this special hack to work properly
|
||||||
@ -41,6 +41,8 @@ if(BUILD_X11)
|
|||||||
|
|
||||||
target_link_libraries(conky-cairo ${luacairo_libs} toluapp_lib_static)
|
target_link_libraries(conky-cairo ${luacairo_libs} toluapp_lib_static)
|
||||||
set(lua_libs ${lua_libs} conky-cairo)
|
set(lua_libs ${lua_libs} conky-cairo)
|
||||||
|
|
||||||
|
print_target_properties(conky-cairo)
|
||||||
endif(BUILD_LUA_CAIRO)
|
endif(BUILD_LUA_CAIRO)
|
||||||
|
|
||||||
if(BUILD_LUA_IMLIB2)
|
if(BUILD_LUA_IMLIB2)
|
||||||
@ -52,6 +54,8 @@ if(BUILD_X11)
|
|||||||
|
|
||||||
target_link_libraries(conky-imlib2 ${luaimlib2_libs} toluapp_lib_static)
|
target_link_libraries(conky-imlib2 ${luaimlib2_libs} toluapp_lib_static)
|
||||||
set(lua_libs ${lua_libs} conky-imlib2)
|
set(lua_libs ${lua_libs} conky-imlib2)
|
||||||
|
|
||||||
|
print_target_properties(conky-imlib2)
|
||||||
endif(BUILD_LUA_IMLIB2)
|
endif(BUILD_LUA_IMLIB2)
|
||||||
|
|
||||||
if(BUILD_LUA_RSVG)
|
if(BUILD_LUA_RSVG)
|
||||||
@ -63,6 +67,8 @@ if(BUILD_X11)
|
|||||||
|
|
||||||
target_link_libraries(conky-rsvg ${luarsvg_libs} toluapp_lib_static)
|
target_link_libraries(conky-rsvg ${luarsvg_libs} toluapp_lib_static)
|
||||||
set(lua_libs ${lua_libs} conky-rsvg)
|
set(lua_libs ${lua_libs} conky-rsvg)
|
||||||
|
|
||||||
|
print_target_properties(conky-rsvg)
|
||||||
endif(BUILD_LUA_RSVG)
|
endif(BUILD_LUA_RSVG)
|
||||||
|
|
||||||
if(BUILD_LUA_CAIRO AND BUILD_LUA_IMLIB2)
|
if(BUILD_LUA_CAIRO AND BUILD_LUA_IMLIB2)
|
||||||
|
@ -340,3 +340,5 @@ install(TARGETS
|
|||||||
LIBRARY DESTINATION lib
|
LIBRARY DESTINATION lib
|
||||||
ARCHIVE DESTINATION lib
|
ARCHIVE DESTINATION lib
|
||||||
)
|
)
|
||||||
|
|
||||||
|
print_target_properties(conky)
|
||||||
|
@ -46,10 +46,8 @@ int find_match_op(const char *expr) {
|
|||||||
switch (expr[idx]) {
|
switch (expr[idx]) {
|
||||||
case '=':
|
case '=':
|
||||||
case '!':
|
case '!':
|
||||||
if (expr[idx + 1] != '=') {
|
if (expr[idx + 1] != '=') { return -1; }
|
||||||
return -1;
|
/* falls through */
|
||||||
}
|
|
||||||
/* fall through */
|
|
||||||
case '<':
|
case '<':
|
||||||
case '>':
|
case '>':
|
||||||
return idx;
|
return idx;
|
||||||
@ -63,27 +61,17 @@ int get_match_type(const char *expr) {
|
|||||||
int idx;
|
int idx;
|
||||||
const char *str;
|
const char *str;
|
||||||
|
|
||||||
if ((idx = find_match_op(expr)) == -1) {
|
if ((idx = find_match_op(expr)) == -1) { return -1; }
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
str = expr + idx;
|
str = expr + idx;
|
||||||
|
|
||||||
if (*str == '=' && *(str + 1) == '=') {
|
if (*str == '=' && *(str + 1) == '=') { return OP_EQ; }
|
||||||
return OP_EQ;
|
if (*str == '!' && *(str + 1) == '=') { return OP_NEQ; }
|
||||||
}
|
|
||||||
if (*str == '!' && *(str + 1) == '=') {
|
|
||||||
return OP_NEQ;
|
|
||||||
}
|
|
||||||
if (*str == '>') {
|
if (*str == '>') {
|
||||||
if (*(str + 1) == '=') {
|
if (*(str + 1) == '=') { return OP_GEQ; }
|
||||||
return OP_GEQ;
|
|
||||||
}
|
|
||||||
return OP_GT;
|
return OP_GT;
|
||||||
}
|
}
|
||||||
if (*str == '<') {
|
if (*str == '<') {
|
||||||
if (*(str + 1) == '=') {
|
if (*(str + 1) == '=') { return OP_LEQ; }
|
||||||
return OP_LEQ;
|
|
||||||
}
|
|
||||||
return OP_LT;
|
return OP_LT;
|
||||||
}
|
}
|
||||||
return -1;
|
return -1;
|
||||||
@ -132,35 +120,23 @@ enum arg_type get_arg_type(const char *arg) {
|
|||||||
p = arg;
|
p = arg;
|
||||||
e = arg + strlen(arg) - 1;
|
e = arg + strlen(arg) - 1;
|
||||||
|
|
||||||
while (p != e && (*e != 0) && *e == ' ') {
|
while (p != e && (*e != 0) && *e == ' ') { e--; }
|
||||||
e--;
|
while (p != e && *p == ' ') { p++; }
|
||||||
}
|
|
||||||
while (p != e && *p == ' ') {
|
|
||||||
p++;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (*p == '"' && *e == '"') {
|
if (*p == '"' && *e == '"') { return ARG_STRING; }
|
||||||
return ARG_STRING;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (*p == '-') { // allow negative values
|
if (*p == '-') { // allow negative values
|
||||||
p++;
|
p++;
|
||||||
}
|
}
|
||||||
while (p <= e) {
|
while (p <= e) {
|
||||||
if (isdigit((unsigned char)*p) == 0) {
|
if (isdigit((unsigned char)*p) == 0) { break; }
|
||||||
break;
|
|
||||||
}
|
|
||||||
p++;
|
p++;
|
||||||
}
|
}
|
||||||
if (p == e + 1) {
|
if (p == e + 1) { return ARG_LONG; }
|
||||||
return ARG_LONG;
|
|
||||||
}
|
|
||||||
if (*p == '.' || *p == ',') {
|
if (*p == '.' || *p == ',') {
|
||||||
p++;
|
p++;
|
||||||
while (p <= e) {
|
while (p <= e) {
|
||||||
if (isdigit((unsigned char)*p) == 0) {
|
if (isdigit((unsigned char)*p) == 0) { return ARG_BAD; }
|
||||||
return ARG_BAD;
|
|
||||||
}
|
|
||||||
p++;
|
p++;
|
||||||
}
|
}
|
||||||
return ARG_DOUBLE;
|
return ARG_DOUBLE;
|
||||||
@ -174,15 +150,9 @@ char *arg_to_string(const char *arg) {
|
|||||||
|
|
||||||
start = arg;
|
start = arg;
|
||||||
len = 0;
|
len = 0;
|
||||||
while ((*start != 0) && *start == ' ') {
|
while ((*start != 0) && *start == ' ') { start++; }
|
||||||
start++;
|
if (!(*(start++) == '"')) { return nullptr; }
|
||||||
}
|
while (start[len] != '"') { len++; }
|
||||||
if (!(*(start++) == '"')) {
|
|
||||||
return nullptr;
|
|
||||||
}
|
|
||||||
while (start[len] != '"') {
|
|
||||||
len++;
|
|
||||||
}
|
|
||||||
return strndup(start, len);
|
return strndup(start, len);
|
||||||
}
|
}
|
||||||
double arg_to_double(const char *arg) {
|
double arg_to_double(const char *arg) {
|
||||||
@ -218,9 +188,7 @@ int compare(const char *expr) {
|
|||||||
|
|
||||||
expr_dup = strdup(expr);
|
expr_dup = strdup(expr);
|
||||||
expr_dup[idx] = '\0';
|
expr_dup[idx] = '\0';
|
||||||
if (expr_dup[idx + 1] == '=') {
|
if (expr_dup[idx + 1] == '=') { expr_dup[++idx] = '\0'; }
|
||||||
expr_dup[++idx] = '\0';
|
|
||||||
}
|
|
||||||
|
|
||||||
type1 = get_arg_type(expr_dup);
|
type1 = get_arg_type(expr_dup);
|
||||||
type2 = get_arg_type(expr_dup + idx + 1);
|
type2 = get_arg_type(expr_dup + idx + 1);
|
||||||
@ -229,12 +197,8 @@ int compare(const char *expr) {
|
|||||||
free(expr_dup);
|
free(expr_dup);
|
||||||
return -2;
|
return -2;
|
||||||
}
|
}
|
||||||
if (type1 == ARG_LONG && type2 == ARG_DOUBLE) {
|
if (type1 == ARG_LONG && type2 == ARG_DOUBLE) { type1 = ARG_DOUBLE; }
|
||||||
type1 = ARG_DOUBLE;
|
if (type1 == ARG_DOUBLE && type2 == ARG_LONG) { type2 = ARG_DOUBLE; }
|
||||||
}
|
|
||||||
if (type1 == ARG_DOUBLE && type2 == ARG_LONG) {
|
|
||||||
type2 = ARG_DOUBLE;
|
|
||||||
}
|
|
||||||
if (type1 != type2) {
|
if (type1 != type2) {
|
||||||
NORM_ERR("trying to compare args '%s' and '%s' of different type", expr_dup,
|
NORM_ERR("trying to compare args '%s' and '%s' of different type", expr_dup,
|
||||||
(expr_dup + idx + 1));
|
(expr_dup + idx + 1));
|
||||||
|
@ -42,10 +42,10 @@ struct diskio_stat {
|
|||||||
last(UINT_MAX),
|
last(UINT_MAX),
|
||||||
last_read(UINT_MAX),
|
last_read(UINT_MAX),
|
||||||
last_write(UINT_MAX) {
|
last_write(UINT_MAX) {
|
||||||
std::memset(sample, 0, sizeof(sample) / sizeof(sample[0]));
|
std::memset(sample, 0, sizeof(sample[0]) * sizeof(sample));
|
||||||
std::memset(sample_read, 0, sizeof(sample_read) / sizeof(sample_read[0]));
|
std::memset(sample_read, 0, sizeof(sample_read[0]) * sizeof(sample_read));
|
||||||
std::memset(sample_write, 0,
|
std::memset(sample_write, 0,
|
||||||
sizeof(sample_write) / sizeof(sample_write[0]));
|
sizeof(sample_write[0]) * sizeof(sample_write));
|
||||||
}
|
}
|
||||||
struct diskio_stat *next;
|
struct diskio_stat *next;
|
||||||
char *dev;
|
char *dev;
|
||||||
|
@ -53,6 +53,12 @@ struct hdd_info {
|
|||||||
char *dev;
|
char *dev;
|
||||||
short temp;
|
short temp;
|
||||||
char unit;
|
char unit;
|
||||||
|
void reset() {
|
||||||
|
next = 0;
|
||||||
|
dev = 0;
|
||||||
|
temp = 0;
|
||||||
|
unit = 0;
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
struct hdd_info hdd_info_head;
|
struct hdd_info hdd_info_head;
|
||||||
@ -77,7 +83,7 @@ static void add_hddtemp_info(char *dev, short temp, char unit) {
|
|||||||
while (hdi->next) hdi = hdi->next;
|
while (hdi->next) hdi = hdi->next;
|
||||||
|
|
||||||
hdi->next = new hdd_info;
|
hdi->next = new hdd_info;
|
||||||
memset(hdi->next, 0, sizeof(struct hdd_info));
|
hdi->next->reset();
|
||||||
hdi->next->dev = strdup(dev);
|
hdi->next->dev = strdup(dev);
|
||||||
hdi->next->temp = temp;
|
hdi->next->temp = temp;
|
||||||
hdi->next->unit = unit;
|
hdi->next->unit = unit;
|
||||||
|
@ -27,16 +27,16 @@
|
|||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#include "net_stat.h"
|
||||||
|
#include <ctype.h>
|
||||||
|
#include <string.h>
|
||||||
#include <sys/ioctl.h>
|
#include <sys/ioctl.h>
|
||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
#include <cerrno>
|
#include <cerrno>
|
||||||
#include <cstring>
|
#include <cstring>
|
||||||
#include <string.h>
|
|
||||||
#include <ctype.h>
|
|
||||||
#include "conky.h"
|
#include "conky.h"
|
||||||
#include "logging.h"
|
#include "logging.h"
|
||||||
#include "net/if.h"
|
#include "net/if.h"
|
||||||
#include "net_stat.h"
|
|
||||||
#include "specials.h"
|
#include "specials.h"
|
||||||
#include "text_object.h"
|
#include "text_object.h"
|
||||||
#if defined(__sun)
|
#if defined(__sun)
|
||||||
@ -131,8 +131,7 @@ void parse_net_stat_arg(struct text_object *obj, const char *arg,
|
|||||||
|
|
||||||
if (arg == nullptr) { arg = DEFAULTNETDEV; }
|
if (arg == nullptr) { arg = DEFAULTNETDEV; }
|
||||||
|
|
||||||
if (0 == (strcmp("$gw_iface", arg)) ||
|
if (0 == (strcmp("$gw_iface", arg)) || 0 == (strcmp("${gw_iface}", arg))) {
|
||||||
0 == (strcmp("${gw_iface}", arg))) {
|
|
||||||
arg = e_iface;
|
arg = e_iface;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -148,9 +147,7 @@ void parse_net_stat_arg(struct text_object *obj, const char *arg,
|
|||||||
if (1U == found) {
|
if (1U == found) {
|
||||||
*buf_ptr = '\0';
|
*buf_ptr = '\0';
|
||||||
x = strtol(buf, (char **)NULL, 10);
|
x = strtol(buf, (char **)NULL, 10);
|
||||||
if (63L > x) {
|
if (63L > x) { arg = interfaces_arr[x]; }
|
||||||
arg = interfaces_arr[x];
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -196,7 +193,8 @@ void parse_net_stat_bar_arg(struct text_object *obj, const char *arg,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void print_downspeed(struct text_object *obj, char *p, unsigned int p_max_size) {
|
void print_downspeed(struct text_object *obj, char *p,
|
||||||
|
unsigned int p_max_size) {
|
||||||
auto *ns = static_cast<struct net_stat *>(obj->data.opaque);
|
auto *ns = static_cast<struct net_stat *>(obj->data.opaque);
|
||||||
|
|
||||||
if (ns == nullptr) { return; }
|
if (ns == nullptr) { return; }
|
||||||
@ -204,7 +202,8 @@ void print_downspeed(struct text_object *obj, char *p, unsigned int p_max_size)
|
|||||||
human_readable(ns->recv_speed, p, p_max_size);
|
human_readable(ns->recv_speed, p, p_max_size);
|
||||||
}
|
}
|
||||||
|
|
||||||
void print_downspeedf(struct text_object *obj, char *p, unsigned int p_max_size) {
|
void print_downspeedf(struct text_object *obj, char *p,
|
||||||
|
unsigned int p_max_size) {
|
||||||
auto *ns = static_cast<struct net_stat *>(obj->data.opaque);
|
auto *ns = static_cast<struct net_stat *>(obj->data.opaque);
|
||||||
|
|
||||||
if (ns == nullptr) { return; }
|
if (ns == nullptr) { return; }
|
||||||
@ -228,7 +227,8 @@ void print_upspeedf(struct text_object *obj, char *p, unsigned int p_max_size) {
|
|||||||
spaced_print(p, p_max_size, "%.1f", 8, ns->trans_speed / 1024.0);
|
spaced_print(p, p_max_size, "%.1f", 8, ns->trans_speed / 1024.0);
|
||||||
}
|
}
|
||||||
|
|
||||||
void print_totaldown(struct text_object *obj, char *p, unsigned int p_max_size) {
|
void print_totaldown(struct text_object *obj, char *p,
|
||||||
|
unsigned int p_max_size) {
|
||||||
auto *ns = static_cast<struct net_stat *>(obj->data.opaque);
|
auto *ns = static_cast<struct net_stat *>(obj->data.opaque);
|
||||||
|
|
||||||
if (ns == nullptr) { return; }
|
if (ns == nullptr) { return; }
|
||||||
@ -355,7 +355,8 @@ double upspeedgraphval(struct text_object *obj) {
|
|||||||
#endif /* BUILD_X11 */
|
#endif /* BUILD_X11 */
|
||||||
|
|
||||||
#ifdef BUILD_WLAN
|
#ifdef BUILD_WLAN
|
||||||
void print_wireless_essid(struct text_object *obj, char *p, unsigned int p_max_size) {
|
void print_wireless_essid(struct text_object *obj, char *p,
|
||||||
|
unsigned int p_max_size) {
|
||||||
struct net_stat *ns = (struct net_stat *)obj->data.opaque;
|
struct net_stat *ns = (struct net_stat *)obj->data.opaque;
|
||||||
|
|
||||||
if (!ns) {
|
if (!ns) {
|
||||||
@ -370,14 +371,16 @@ void print_wireless_essid(struct text_object *obj, char *p, unsigned int p_max_s
|
|||||||
|
|
||||||
snprintf(p, p_max_size, "%s", ns->essid);
|
snprintf(p, p_max_size, "%s", ns->essid);
|
||||||
}
|
}
|
||||||
void print_wireless_mode(struct text_object *obj, char *p, unsigned int p_max_size) {
|
void print_wireless_mode(struct text_object *obj, char *p,
|
||||||
|
unsigned int p_max_size) {
|
||||||
struct net_stat *ns = (struct net_stat *)obj->data.opaque;
|
struct net_stat *ns = (struct net_stat *)obj->data.opaque;
|
||||||
|
|
||||||
if (!ns) return;
|
if (!ns) return;
|
||||||
|
|
||||||
snprintf(p, p_max_size, "%s", ns->mode);
|
snprintf(p, p_max_size, "%s", ns->mode);
|
||||||
}
|
}
|
||||||
void print_wireless_channel(struct text_object *obj, char *p, unsigned int p_max_size) {
|
void print_wireless_channel(struct text_object *obj, char *p,
|
||||||
|
unsigned int p_max_size) {
|
||||||
struct net_stat *ns = (struct net_stat *)obj->data.opaque;
|
struct net_stat *ns = (struct net_stat *)obj->data.opaque;
|
||||||
|
|
||||||
if (!ns) return;
|
if (!ns) return;
|
||||||
@ -388,7 +391,8 @@ void print_wireless_channel(struct text_object *obj, char *p, unsigned int p_max
|
|||||||
snprintf(p, p_max_size, "%s", "/");
|
snprintf(p, p_max_size, "%s", "/");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
void print_wireless_frequency(struct text_object *obj, char *p, unsigned int p_max_size) {
|
void print_wireless_frequency(struct text_object *obj, char *p,
|
||||||
|
unsigned int p_max_size) {
|
||||||
struct net_stat *ns = (struct net_stat *)obj->data.opaque;
|
struct net_stat *ns = (struct net_stat *)obj->data.opaque;
|
||||||
|
|
||||||
if (!ns) return;
|
if (!ns) return;
|
||||||
@ -399,35 +403,40 @@ void print_wireless_frequency(struct text_object *obj, char *p, unsigned int p_m
|
|||||||
snprintf(p, p_max_size, "/");
|
snprintf(p, p_max_size, "/");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
void print_wireless_bitrate(struct text_object *obj, char *p, unsigned int p_max_size) {
|
void print_wireless_bitrate(struct text_object *obj, char *p,
|
||||||
|
unsigned int p_max_size) {
|
||||||
struct net_stat *ns = (struct net_stat *)obj->data.opaque;
|
struct net_stat *ns = (struct net_stat *)obj->data.opaque;
|
||||||
|
|
||||||
if (!ns) return;
|
if (!ns) return;
|
||||||
|
|
||||||
snprintf(p, p_max_size, "%s", ns->bitrate);
|
snprintf(p, p_max_size, "%s", ns->bitrate);
|
||||||
}
|
}
|
||||||
void print_wireless_ap(struct text_object *obj, char *p, unsigned int p_max_size) {
|
void print_wireless_ap(struct text_object *obj, char *p,
|
||||||
|
unsigned int p_max_size) {
|
||||||
struct net_stat *ns = (struct net_stat *)obj->data.opaque;
|
struct net_stat *ns = (struct net_stat *)obj->data.opaque;
|
||||||
|
|
||||||
if (!ns) return;
|
if (!ns) return;
|
||||||
|
|
||||||
snprintf(p, p_max_size, "%s", ns->ap);
|
snprintf(p, p_max_size, "%s", ns->ap);
|
||||||
}
|
}
|
||||||
void print_wireless_link_qual(struct text_object *obj, char *p, unsigned int p_max_size) {
|
void print_wireless_link_qual(struct text_object *obj, char *p,
|
||||||
|
unsigned int p_max_size) {
|
||||||
struct net_stat *ns = (struct net_stat *)obj->data.opaque;
|
struct net_stat *ns = (struct net_stat *)obj->data.opaque;
|
||||||
|
|
||||||
if (!ns) return;
|
if (!ns) return;
|
||||||
|
|
||||||
spaced_print(p, p_max_size, "%d", 4, ns->link_qual);
|
spaced_print(p, p_max_size, "%d", 4, ns->link_qual);
|
||||||
}
|
}
|
||||||
void print_wireless_link_qual_max(struct text_object *obj, char *p, unsigned int p_max_size) {
|
void print_wireless_link_qual_max(struct text_object *obj, char *p,
|
||||||
|
unsigned int p_max_size) {
|
||||||
struct net_stat *ns = (struct net_stat *)obj->data.opaque;
|
struct net_stat *ns = (struct net_stat *)obj->data.opaque;
|
||||||
|
|
||||||
if (!ns) return;
|
if (!ns) return;
|
||||||
|
|
||||||
spaced_print(p, p_max_size, "%d", 4, ns->link_qual_max);
|
spaced_print(p, p_max_size, "%d", 4, ns->link_qual_max);
|
||||||
}
|
}
|
||||||
void print_wireless_link_qual_perc(struct text_object *obj, char *p, unsigned int p_max_size) {
|
void print_wireless_link_qual_perc(struct text_object *obj, char *p,
|
||||||
|
unsigned int p_max_size) {
|
||||||
struct net_stat *ns = (struct net_stat *)obj->data.opaque;
|
struct net_stat *ns = (struct net_stat *)obj->data.opaque;
|
||||||
|
|
||||||
if (!ns) return;
|
if (!ns) return;
|
||||||
@ -544,6 +553,10 @@ struct _dns_data {
|
|||||||
_dns_data() = default;
|
_dns_data() = default;
|
||||||
int nscount{0};
|
int nscount{0};
|
||||||
char **ns_list{nullptr};
|
char **ns_list{nullptr};
|
||||||
|
void reset() {
|
||||||
|
nscount = 0;
|
||||||
|
ns_list = nullptr;
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
static _dns_data dns_data;
|
static _dns_data dns_data;
|
||||||
@ -555,7 +568,7 @@ void free_dns_data(struct text_object *obj) {
|
|||||||
|
|
||||||
for (i = 0; i < dns_data.nscount; i++) { free(dns_data.ns_list[i]); }
|
for (i = 0; i < dns_data.nscount; i++) { free(dns_data.ns_list[i]); }
|
||||||
free(dns_data.ns_list);
|
free(dns_data.ns_list);
|
||||||
memset(&dns_data, 0, sizeof(dns_data));
|
dns_data.reset();
|
||||||
}
|
}
|
||||||
|
|
||||||
int update_dns_data() {
|
int update_dns_data() {
|
||||||
@ -591,7 +604,8 @@ void parse_nameserver_arg(struct text_object *obj, const char *arg) {
|
|||||||
obj->data.l = arg != nullptr ? atoi(arg) : 0;
|
obj->data.l = arg != nullptr ? atoi(arg) : 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
void print_nameserver(struct text_object *obj, char *p, unsigned int p_max_size) {
|
void print_nameserver(struct text_object *obj, char *p,
|
||||||
|
unsigned int p_max_size) {
|
||||||
if (dns_data.nscount > obj->data.l) {
|
if (dns_data.nscount > obj->data.l) {
|
||||||
snprintf(p, p_max_size, "%s", dns_data.ns_list[obj->data.l]);
|
snprintf(p, p_max_size, "%s", dns_data.ns_list[obj->data.l]);
|
||||||
}
|
}
|
||||||
|
@ -178,12 +178,14 @@ void subscribe_cb(pa_context *c, pa_subscription_event_type_t t, uint32_t index,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#define PULSEAUDIO_WAIT(COMMAND) \
|
#define PULSEAUDIO_WAIT(COMMAND) \
|
||||||
op = COMMAND; \
|
{ \
|
||||||
while (pa_operation_get_state(op) == PA_OPERATION_RUNNING) { \
|
op = COMMAND; \
|
||||||
pa_threaded_mainloop_wait(pulseaudio->mainloop); \
|
while (pa_operation_get_state(op) == PA_OPERATION_RUNNING) { \
|
||||||
} \
|
pa_threaded_mainloop_wait(pulseaudio->mainloop); \
|
||||||
pa_operation_unref(op);
|
} \
|
||||||
|
pa_operation_unref(op); \
|
||||||
|
}
|
||||||
|
|
||||||
void init_pulseaudio(struct text_object *obj) {
|
void init_pulseaudio(struct text_object *obj) {
|
||||||
// already initialized
|
// already initialized
|
||||||
@ -219,9 +221,7 @@ void init_pulseaudio(struct text_object *obj) {
|
|||||||
}
|
}
|
||||||
pa_threaded_mainloop_start(pulseaudio->mainloop);
|
pa_threaded_mainloop_start(pulseaudio->mainloop);
|
||||||
|
|
||||||
while (pulseaudio->cstate != PULSE_CONTEXT_READY) {
|
while (pulseaudio->cstate != PULSE_CONTEXT_READY) { usleep(200); }
|
||||||
usleep(200);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Initial parameters update
|
// Initial parameters update
|
||||||
|
|
||||||
@ -324,7 +324,8 @@ void print_puau_card_active_profile(struct text_object *obj, char *p,
|
|||||||
get_pulseaudio(obj).card_active_profile_description.c_str());
|
get_pulseaudio(obj).card_active_profile_description.c_str());
|
||||||
}
|
}
|
||||||
|
|
||||||
void print_puau_card_name(struct text_object *obj, char *p, unsigned int p_max_size) {
|
void print_puau_card_name(struct text_object *obj, char *p,
|
||||||
|
unsigned int p_max_size) {
|
||||||
snprintf(p, p_max_size, "%s", get_pulseaudio(obj).card_name.c_str());
|
snprintf(p, p_max_size, "%s", get_pulseaudio(obj).card_name.c_str());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -37,18 +37,15 @@ void gen_free_opaque(struct text_object *obj) {
|
|||||||
free_and_zero(obj->data.opaque);
|
free_and_zero(obj->data.opaque);
|
||||||
}
|
}
|
||||||
|
|
||||||
int gen_false_iftest(struct text_object *) {
|
int gen_false_iftest(struct text_object *) { return 0; }
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
void gen_print_nothing(struct text_object *, char *, unsigned int) {
|
void gen_print_nothing(struct text_object *, char *, unsigned int) {
|
||||||
// literally does nothing
|
// literally does nothing
|
||||||
}
|
}
|
||||||
|
|
||||||
void gen_print_obj_data_s(struct text_object *obj, char *p, unsigned int p_max_size) {
|
void gen_print_obj_data_s(struct text_object *obj, char *p,
|
||||||
if (obj->data.s == nullptr) {
|
unsigned int p_max_size) {
|
||||||
return;
|
if (obj->data.s == nullptr) { return; }
|
||||||
}
|
|
||||||
snprintf(p, p_max_size, "%s", obj->data.s);
|
snprintf(p, p_max_size, "%s", obj->data.s);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -83,9 +80,7 @@ int append_object(struct text_object *root, struct text_object *obj) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* find end of appended list to point root->prev there */
|
/* find end of appended list to point root->prev there */
|
||||||
while (obj->next != nullptr) {
|
while (obj->next != nullptr) { obj = obj->next; }
|
||||||
obj = obj->next;
|
|
||||||
}
|
|
||||||
root->prev = obj;
|
root->prev = obj;
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
@ -145,7 +140,7 @@ static int push_ifblock(struct ifblock_stack_obj **ifblock_stack_top,
|
|||||||
if ((*ifblock_stack_top) == nullptr)
|
if ((*ifblock_stack_top) == nullptr)
|
||||||
CRIT_ERR(nullptr, nullptr, "got an else without matching if");
|
CRIT_ERR(nullptr, nullptr, "got an else without matching if");
|
||||||
(*ifblock_stack_top)->obj->ifblock_next = obj;
|
(*ifblock_stack_top)->obj->ifblock_next = obj;
|
||||||
/* fall through */
|
/* falls through */
|
||||||
case IFBLOCK_IF:
|
case IFBLOCK_IF:
|
||||||
stackobj = static_cast<ifblock_stack_obj *>(
|
stackobj = static_cast<ifblock_stack_obj *>(
|
||||||
malloc(sizeof(struct ifblock_stack_obj)));
|
malloc(sizeof(struct ifblock_stack_obj)));
|
||||||
|
@ -62,11 +62,11 @@ void scan_tztime(struct text_object *obj, const char *arg) {
|
|||||||
if (arg != nullptr) {
|
if (arg != nullptr) {
|
||||||
int nArgs = sscanf(arg, "%255s %255[^\n]", buf1, buf2);
|
int nArgs = sscanf(arg, "%255s %255[^\n]", buf1, buf2);
|
||||||
|
|
||||||
switch (nArgs) {
|
if (nArgs == 2) {
|
||||||
case 2:
|
fmt = buf2;
|
||||||
fmt = buf2;
|
tz = buf1;
|
||||||
case 1:
|
} else if (nArgs == 1) {
|
||||||
tz = buf1;
|
tz = buf1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -312,7 +312,8 @@ static void do_format_time(struct text_object *obj, char *p,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void print_format_time(struct text_object *obj, char *p, unsigned int p_max_size) {
|
void print_format_time(struct text_object *obj, char *p,
|
||||||
|
unsigned int p_max_size) {
|
||||||
std::unique_ptr<char[]> buf(new char[max_user_text.get(*state)]);
|
std::unique_ptr<char[]> buf(new char[max_user_text.get(*state)]);
|
||||||
|
|
||||||
generate_text_internal(buf.get(), max_user_text.get(*state), *obj->sub);
|
generate_text_internal(buf.get(), max_user_text.get(*state), *obj->sub);
|
||||||
|
19
src/users.cc
19
src/users.cc
@ -40,7 +40,7 @@ static void user_name(char *ptr) {
|
|||||||
setutent();
|
setutent();
|
||||||
while ((usr = getutent()) != nullptr) {
|
while ((usr = getutent()) != nullptr) {
|
||||||
if (usr->ut_type == USER_PROCESS) {
|
if (usr->ut_type == USER_PROCESS) {
|
||||||
if (strlen(ptr) + strlen(usr->ut_name) + 1 <= BUFLEN) {
|
if (strlen(ptr) + strnlen(usr->ut_name, UT_NAMESIZE - 1) + 1 <= BUFLEN) {
|
||||||
strncat(ptr, usr->ut_name, UT_NAMESIZE);
|
strncat(ptr, usr->ut_name, UT_NAMESIZE);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -62,7 +62,7 @@ static void user_term(char *ptr) {
|
|||||||
setutent();
|
setutent();
|
||||||
while ((usr = getutent()) != nullptr) {
|
while ((usr = getutent()) != nullptr) {
|
||||||
if (usr->ut_type == USER_PROCESS) {
|
if (usr->ut_type == USER_PROCESS) {
|
||||||
if (strlen(ptr) + strlen(usr->ut_line) + 1 <= BUFLEN) {
|
if (strlen(ptr) + strnlen(usr->ut_line, UT_LINESIZE) + 1 <= BUFLEN) {
|
||||||
strncat(ptr, usr->ut_line, UT_LINESIZE);
|
strncat(ptr, usr->ut_line, UT_LINESIZE);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -184,27 +184,32 @@ int update_users(void) {
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
void print_user_names(struct text_object *obj, char *p, unsigned int p_max_size) {
|
void print_user_names(struct text_object *obj, char *p,
|
||||||
|
unsigned int p_max_size) {
|
||||||
(void)obj;
|
(void)obj;
|
||||||
snprintf(p, p_max_size, "%s", info.users.names);
|
snprintf(p, p_max_size, "%s", info.users.names);
|
||||||
}
|
}
|
||||||
|
|
||||||
void print_user_terms(struct text_object *obj, char *p, unsigned int p_max_size) {
|
void print_user_terms(struct text_object *obj, char *p,
|
||||||
|
unsigned int p_max_size) {
|
||||||
(void)obj;
|
(void)obj;
|
||||||
snprintf(p, p_max_size, "%s", info.users.terms);
|
snprintf(p, p_max_size, "%s", info.users.terms);
|
||||||
}
|
}
|
||||||
|
|
||||||
void print_user_times(struct text_object *obj, char *p, unsigned int p_max_size) {
|
void print_user_times(struct text_object *obj, char *p,
|
||||||
|
unsigned int p_max_size) {
|
||||||
(void)obj;
|
(void)obj;
|
||||||
snprintf(p, p_max_size, "%s", info.users.times);
|
snprintf(p, p_max_size, "%s", info.users.times);
|
||||||
}
|
}
|
||||||
|
|
||||||
void print_user_time(struct text_object *obj, char *p, unsigned int p_max_size) {
|
void print_user_time(struct text_object *obj, char *p,
|
||||||
|
unsigned int p_max_size) {
|
||||||
update_user_time(obj->data.s);
|
update_user_time(obj->data.s);
|
||||||
snprintf(p, p_max_size, "%s", info.users.ctime);
|
snprintf(p, p_max_size, "%s", info.users.ctime);
|
||||||
}
|
}
|
||||||
|
|
||||||
void print_user_number(struct text_object *obj, char *p, unsigned int p_max_size) {
|
void print_user_number(struct text_object *obj, char *p,
|
||||||
|
unsigned int p_max_size) {
|
||||||
(void)obj;
|
(void)obj;
|
||||||
snprintf(p, p_max_size, "%d", info.users.number);
|
snprintf(p, p_max_size, "%d", info.users.number);
|
||||||
}
|
}
|
||||||
|
12
src/x11.cc
12
src/x11.cc
@ -32,12 +32,12 @@
|
|||||||
#include "conky.h"
|
#include "conky.h"
|
||||||
#include "logging.h"
|
#include "logging.h"
|
||||||
|
|
||||||
#pragma clang diagnostic push
|
#pragma GCC diagnostic push
|
||||||
#pragma clang diagnostic ignored "-Wdeprecated-register"
|
#pragma GCC diagnostic ignored "-Wvariadic-macros"
|
||||||
#pragma clang diagnostic ignored "-Wregister"
|
#pragma GCC diagnostic ignored "-Wdeprecated-register"
|
||||||
#pragma clang diagnostic ignored "-Wvariadic-macros"
|
#pragma GCC diagnostic ignored "-Wregister"
|
||||||
#include <X11/XKBlib.h>
|
#include <X11/XKBlib.h>
|
||||||
#pragma clang diagnostic pop
|
#pragma GCC diagnostic pop
|
||||||
#include <X11/Xatom.h>
|
#include <X11/Xatom.h>
|
||||||
#include <X11/Xlib.h>
|
#include <X11/Xlib.h>
|
||||||
#include <X11/Xmd.h>
|
#include <X11/Xmd.h>
|
||||||
@ -294,7 +294,7 @@ std::pair<uint16_t, bool> window_hints_traits::convert(
|
|||||||
#ifdef OWN_WINDOW
|
#ifdef OWN_WINDOW
|
||||||
namespace {
|
namespace {
|
||||||
// used to set the default value for own_window_title
|
// used to set the default value for own_window_title
|
||||||
std::string ethostnamecxx() {
|
std::string gethostnamecxx() {
|
||||||
update_uname();
|
update_uname();
|
||||||
return info.uname_s.nodename;
|
return info.uname_s.nodename;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user