summaryrefslogtreecommitdiff
path: root/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-libsystemd-243/0004-add-fallback-parse_printf_format-implementation.patch
diff options
context:
space:
mode:
authorBrad Bishop <bradleyb@fuzziesquirrel.com>2020-01-16 06:08:42 +0300
committerBrad Bishop <bradleyb@fuzziesquirrel.com>2020-01-16 06:10:08 +0300
commite42b3e385822fc1b08807a585d4bb2015c823690 (patch)
treedb6a37b71822c4bc81ffc94836624bb21a7743c4 /meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-libsystemd-243/0004-add-fallback-parse_printf_format-implementation.patch
parent48265d8a49254f942423fae353516c35ed7e42b6 (diff)
downloadopenbmc-e42b3e385822fc1b08807a585d4bb2015c823690.tar.xz
meta-openembedded: subtree update:459dbf1078..ea8604a0e3
Adrian Bunk (6): xfsprogs: Remove obsolete patch gpsd: Add a PACKAGECONFIG for disabling usb support libqmi: Upgrade 1.24.0 -> 1.24.2 enchant2: Upgrade 2.2.3 -> 2.2.7 geany-plugins: Use enchant2 instead of the old enchant enchant2: Remove, moved to oe-core Alex Kiernan (11): nftables: Fix documentation generation ldns: Add recipe ostree: Fix DISTRO_FEATURES with ptest but w/o xattr ostree: Drop tests for soup/xattr with ptest ostree: Change PACKAGECONFIG to use manpages ostree: Add PACKAGECONFIG for builtin-grub2-mkconfig ostree: Backport build/test fixes from upstream ostree: Upgrade 2019.5 -> 2019.6 ostree: Add support for gjs tests nftables: Expand PACKAGECONFIG, cleanup build ostree: Tidy FILES_${PN} using PACKAGE_BEFORE_PN Alexander Kanavin (1): enscript/indent/sharutils: fix build with gettext 0.20.x Alistair Francis (2): mycroft: RDEPENDS on mpg123 to allow singing openocd: Enable remote-bitbang build option Andreas Müller (76): gnome-system-monitor: add gsettings to inherit tracker-miners: initial add 2.3.1 nautilus: add tracker-miners to RDPENDS libgnomekbd: cleanup DEPENDS inherit gsettings / remove unused config nodejs: Add PACKAGECONFIG share to allow other projects to use node as library xserver-xorg-cvt-native: initial add 1.20.5 mutter: initial add 3.34.1 pinpoint: remove dead project gnome-keyring: upgrade 3.28.2 -> 3.34.0 libgsf: upgrade 1.14.45 -> 1.14.46 libgnome-keyring: remove gvfs: upgrade 1.41.2 -> 1.42.1 grilo: initial add 0.3.10 gsound: initial add 1.0.2 gnome-backgrounds: initial add 3.34.0 metacity: upgrade 3.32.0 -> 3.34.1 gjs: initial add 1.58.3 gdm: re-add 3.34.1 gnome-shell: initial add 3.34.1 gnome-shell-extensions: initial add 3.34.1 accountsservice: initial add 0.6.55 rest: initial add 0.8.1 gnome-online-accounts: initial add 3.34.1 gnome-control-center: re-add 3.34.1 gnome-session: inital add 3.34.1 gnome-panel: (re)add 3.34.1 gnome-flashback: initial add 3.34.1 Add: packagegroup-gnome-apps / packagegroup-gnome-desktop glfw: add features_check to inherit stalonetray: Add x11 to required distro feature projucer: add x11 to required distro features colord-gtk: add polkit to required distro features yelp: add x11 to required distro features file-roller: remove nautilus from DEPENDS libgdata: add x11 to required distro features accountsservice: Hack musl build fix accountsservice: fix build for systemd not in DISTRO_FEATURES gnome-font-viewer: fix copy & paste typo in SUMMARY libxfce4ui: give up glade3 (=glade for gtk2) support glade3: remove ancient version of glade exo: remove pythonnative from inherit geany: remove pythonnative from inherit gnome-tweaks: initial add 3.34.0 libhandy: initial add 0.0.12 fluidsynth: upgrade 2.0.9 -> 2.1.0 exo: upgrade 0.12.10 -> 0.12.11 tumbler: upgrade 0.2.7 -> 0.2.8 catfish: upgrade 1.4.10 -> 1.4.11 cppunit: upgrade 1.14.0 -> 1.15.1 xfce4-terminal: upgrade 0.8.8 -> 0.8.9 gnome-calculator: initial add 3.34.1 evince: upgrade 3.34.1 -> 3.34.1 file-roller: upgrade 3.32.2 -> 3.32.3 evolution-data-server: upgrade 3.34.1 -> 3.34.2 gedit: upgrade 3.34.0 -> 3.34.1 gnome-autoar: upgrade 0.2.3 -> 0.2.4 gnome-control-center: upgrade 3.34.1 -> 3.34.2 gnome-desktop3: upgrade 3.34.1 -> 3.34.2 gnome-flashback: upgrade 3.34.1 -> 3.34.2 gnome-session: 3.34.1 -> 3.34.2 gnome-settings-daemon: upgrade 3.34.1 -> 3.34.2 gnome-shell-extensions: upgrade 3.34.1 -> 3.34.2 gnome-shell: upgrade 3.34.1 -> 3.34.2 gvfs: upgrade 1.42.1 -> 1.42.2 libgdata: upgrade 0.17.10 -> 0.17.11 mutter: upgrade 3.34.1 -> 3.34.2 nautilus: upgrade 3.34.1 -> 3.34.2 yelp-xsl: upgrade 3.34.0 -> 3.34.2 poppler: upgrade 0.82.0 -> 0.84.0 xfce4-terminal: upgrade 0.8.9 -> 0.8.9.1 mutter: upgrade 3.34.2 -> 3.34.3 gnome-shell: upgrade 3.34.2 -> 3.34.3 evolution-data-server: upgrade 3.34.2 -> 3.34.3 gjs: upgrade 1.58.3 -> 1.58.4 gnome-desktop3: upgrade 3.34.2 -> 3.34.3 libsigc++-3: let meson build Andrei Gherzan (1): kernel-selftest: Include rtc tests Andrej Valek (1): ntp: split ntpdc into separate package Andrey Zhizhikin (1): flatbuffers: add PIC compiler flag required for aarch64 André Draszik (4): python3-jsonrpcserver: update to v4.1.0 python3-jsonrpcserver: allow to use as non-root oniguruma: update to v6.9.4 oniguruma: enable ptest Armin Kuster (3): glfw: missing feature check. libvncserver: fix build depends issue surf: Add opengl requirement Bartosz Golaszewski (10): librsync: new package xdelta3: update to v3.1.0 xdelta3: add native and nativesdk to BBCLASSEXTEND speedtest-cli: new package doxygen: upgrade v1.8.16 -> v1.8.17 libsigrok: upgrade v0.5.1 -> v0.5.2 libsigrokdecode: upgrade v0.5.2 -> v0.5.3 libsigrok: add support for bluetooth integration cloc: new package libsigrok: add support for hidapi integration Changqing Li (5): samba: fix wrong shebang for python3 gtk-xfce-engine: remove this recipe xfce4-kbdleds-plugin: remove this recipe xfce-dusk-gtk3: correct invalid SRC_URI libhugetlbfs: update patch to make it work for python3 Denys Dmytriyenko (1): netperf: add "intervals" and "histogram" PACKAGECONFIGs Diego Rondini (2): cups-filters: add recipe qpdf: add recipe Fabio Berton (1): nanopb: Add recipe for version 0.4.0 Gianfranco Costamagna (6): boinc: update recipe to version 7.16.3 vboxguestdrivers: update to version 6.1.0 and unblacklist websocketpp: add various upstream accepted and proposed patches to fix various issues, including: brotli: rename static libraries avoding the -static suffix. cpprest: fix cmake installation directory websocketpp: also install examples in a new -examples subpackage Hongxu Jia (2): gvfs: add user polkitd and missing depends python3-astor: fix VERSION file not found Jacopo Dall'Aglio (1): netplan: add recipe Jens Rehsack (6): log4cplus: update to 2.0.5 libstatgrab: add logging/tracing options libtest-warnings-perl: add recipe libfile-slurper-perl: add recipe libconfig-autoconf-perl: add recipe libunix-statgrab: add recipe Kai Kang (12): blueman: disable appindicator support xfce4-panel-profiles: 1.0.8 -> 1.0.9 exo: 0.12.9 -> 0.12.10 thunar: 1.8.9 -> 1.8.10 fltk: fix build error when enable package config examples corosync: fix build error when package config rdma enabled rdma-core: 18.1 -> 27.0 openl2tp: update systemd service file bdwgc: make libatomic-ops as dependency volume-key: not create python2 bindings libbytesize: disable doc build adduser: set default shell with /sbin/nologin Khem Raj (113): python-evdev: Fix build for 32bit arches with 64bit time_t x11vnc: Fix build for 32bit arches with 64bit time_t evtest: Fix build for 32bit arches with 64bit time_t lirc: Fix build for 32bit arches with 64bit time_t v4l-utils: Update to 1.18.0 tslib: Fix build for 32bit arches with 64bit time_t utouch-evemu,utouch-frame: Fix build for 32bit arches with 64bit time_t directfb: Fix build for 32bit arches with 64bit time_t kernel-module-emlog: Use compile task from module bbclass emlog: Use RRECOMMEND instead of RDEPEND projucer: Upgrade to 5.4.5 packagegroup-meta-oe: Remove nodejs and uim on riscv libnih: Fix build with latest gettext liblockdev: Loosen the regexp for py3 sigrok-cli: Update to 0.7.1 python-pywbem: Update to 0.15.0 udisks2: Update to 2.8.4 id3lib: Update to newer debian patchset libdc1394: Update to 2.2.6 release libsmi: Use right name for tcl license hdf5: Upgrade to 1.8.21 xterm: Fix latent issue found with musl mozjs: extend --with-intl-api=build to all mips klibc: Apply -no-integrated-as on mips/clang grpc: Define libdir and cmakedir in terms of multilib ufs-utils: Renames from ufs-tool breakpad: Update to latest upstream rsyslog: Sync VALGRIND supported arch list packagegroup-meta-oe: Remove ppc64 specific incompatible packages libpfm4: Moved here from oe-core rdma-core: Replace pthread_yield with sched_yield fvwm: Upgrade to 2.6.9 nlohmann-json: Upgrade to 3.7.3 libqb: Add --enable-nosection-fallback with mips64/clang lcdproc: Upgrade to latest top of tree tinyalsa: fix installation libdir path to match multilibs luajit: Add ppc/ppc64 to unsupported arch list rsyslog: Do not assume atomic built-ins on ppc hiredis: Upgrade to 0.14.0 libfann: Define LIB_SUFFIX suitable for OE multilib needs libgit2: Upgrade to 0.28.4 libinih: Fix multilib build poco: Define LIB_SUFFIX per OE multilibs libcec: Fix multilib build dfu-util-native,sjf2410-linux-native: Fix Deploy in multimachine builds mpv: Remove luajit dependency for ppc64 cannelloni: Update to latest and fix multilib builds nvme-cli: Use nonarch libdir for dracut config files cli11: Fix multilib build lockdev: Make baselib configurable avro-c: Update to 1.9.1 nftables: Package python scripts into nonarch libdir mercurial: Add python scripts into separate python package fluentbit: Fix packaging in multilib env dcadec: Define BASELIB as a knob dbus-broker: Use nonarch_libdir for systemd catalog files websocketapp: Fix multilib build ade: Fix install paths in multilib builds thrift: Upgrade to 0.13 gattlib: Update to latest tip rygel: Use nonarch_libdir for systemd units firewalld: Package firewalld files iwd: Package module conf files via nonarch_libdir civetweb: Upgrade to latest tip ruli: Define OOP_LIB_DIR and INSTALL_LIB_DIR liblightmodbus: Fix packaging errors when using multilib ostree: Fix packaging errors when using lib64 libdir boinc-client: Use nonarch_libdir for systemd_units spirv-tools: Fix multilib builds pam-plugin-ldapdb: Include <stdexcept> for std::invalid_argument dvb-apps: Replace stime with clock_settime redis: Upgrade to 5.0.7 cannelloni: Include stdexcept for runtime_error libubox: Update to latest upm: Fix 'may be used uninitialized' errors memcached: upgrade to 1.5.20 ltrace: Fix build with gcc10 mpd: Fix build with gcc10 wvstreams: Fix build with gcc10 tvheadend: Fix format-truncation warnings open-vm-tools: Ignore -Warray-bounds jsoncpp: Upgrade to 1.9.2 ippool: Fix strncpy -Wformat-truncation warning opensc: Fix misaligned indentation glm: Upgrade to 0.9.9.6 rocksdb: Upgrade to 6.5.2 mariadb: Upgrade to 10.4.11 ruli: Fix implicit conversion from 'unsigned int' to 'float' glfw: Update to latest fluentbit: Upgrade to 1.3.5 renderdoc: Upgrade to 1.5 spirv-tools: Upgrade to v2019.5 upm: Disable -Wno-misleading-indentation with clang10+ libyui: Disable Warnings as errors sanlock: Upgrade to 3.8.0+ udisks2: Updare to latest master beyond 2.8.4 netcat: Fix build with gettext 0.20.x gtkperf: Fix build with latest gettext 0.20.x hddtemp: Fix build with latest gettext 0.20.x vorbis-tools: Use external gettext rwmem: Upgrade to latest wireshark: Enable plugins when enabling qt5 python3-jsonrpcserver: Use PYTHON_BASEVERSION instead of hardcoding py version smbnetfs: Update to latest 0.6.2 rev makedumpfile: Drop linking with libebl cmpi-bindings: append PYTHON_ABI suffix to libpython soname websocketpp: Fix clang specific flags in cmake files rocksdb: Disable Werror spirv-tools: Disable Werror libspatialite: Workaround proj_api.h deprecation in proj 6.0.0 zbar: Switch to github and update to latest gstd: Upgrade to 0.8.1 gst-shark: Upgrade to 0.6.1 Laurent Bonnans (1): opensc: fix RDEPENDS in pcsc PACKAGECONFIG Leon Anavi (1): mosquitto: update to 1.6.8 Martin Jansa (2): googletest: fix build with newer oe-core without python in HOSTTOOLS proj: upgrade to 6.2.0 Max Krummenacher (1): libsoc: use python3 for python bindings Maxime Roussin-Bélanger (1): libvncserver: add missing cmake configration option to packageconfig Mingde (Matthew) Zeng (1): poppler/poppler-data: Add HOMEPAGE tags Nicola Lunghi (1): python3-jsonrpcserver: update to 4.1.2 Pau Espin Pedrol (1): lksctp-tools: Add RRECOMENDS kernel-module-sctp for pkg lksctp-tools Peter Kolbus (9): python(3)-ujson: extend to native(sdk) python-ipaddress: remove unneeded pip dependency python3-html2text: add recipe python(3)-beautifulsoup4: fix RDEPENDS python3-soupsieve: add recipe python-soupsieve: add recipe python(3)-beautifulsoup4: add soupsieve to RDEPENDS python3-booleanpy: add recipe python3-license-expression: add recipe Pierre-Jean Texier (3): libssh2: add nativesdk support python3-xmltodict: add recipe libmxml: upgrade 3.0 -> 3.1 Quanyang Wang (1): glog: fix do_fetch error Randy MacLeod (3): imagemagick: update from 7.8.47 to 7.9.16 tigervnc: update from 1.9.0 to 1.10.1 rsyslog: update from 8.1910 to 8.1911 Robert Yang (1): rocksdb: Fix compile error for DEBUG_BUILD Ross Burton (11): python-jsonpointer: enable native/nativesdk python3-pystemd: upgrade to 0.7.0 python-slip-dbus: don't use relative paths python-m2crypto: don't use relative paths python-coloredlogs: don't use relative paths python-lxml: remove redundant sed (fixed in 4.3.0 onwards) python-lxml: remove redundant RDEPENDS_class-native opencv: don't download during configure opencv: also download face alignment data in do_fetch() opencv: PACKAGECONFIG for G-API, use system ADE opencv: abort configure if we need to download Stefan Agner (1): Revert "zstd: move recipe to oe-core" Stefan Lendl (2): tinyproxy: Install a default tinyproxy.conf tinyproxy: Fix user and group in tinyproxy install Sumit Garg (1): mariadb: fix library LZ4 lookup Todd Cunningham (2): libnftnl: upgrade 1.1.4 -> 1.1.5 nftables: upgrade 0.9.2 -> 0.9.3 Trevor Gamblin (4): python-twisted: add python3-pyserial to RDEPENDS python-twisted: add missing RDEPENDS for conch samba: disable guest access and anonymous queries python3-twisted: fix broken MemoryReactor import Wang Mingyu (66): python-cmd2: upgrade 0.9.19 -> 0.9.21 python-pluggy: upgrade 0.13.0 -> 0.13.1 python-pyasn1: upgrade 0.4.7 -> 0.4.8 python-pyopenssl: upgrade 19.0.0 -> 19.1.0 python-simplejson: upgrade 3.16.0 -> 3.17.0 python-thrift: upgrade 0.11.0 -> 0.13.0 python-alembic: upgrade 1.3.0 -> 1.3.1 python-dbus: upgrade 1.2.12 -> 1.2.14 python-pbr: upgrade 5.4.3 -> 5.4.4 python-paste: 3.2.2 -> 3.2.3 python-lxml: 4.4.1 -> 4.4.2 postgresql: 12.0 -> 12.1 python-jsonschema: 3.1.1 -> 3.2.0 python-pytest: upgrade 5.2.2 -> 5.3.1 xterm: upgrade 350 -> 351 wireshark: upgrade 3.0.6 -> 3.0.7 python3-xxhash: upgrade 1.4.2 -> 1.4.3 fuse3: upgrade 3.8.0 -> 3.9.0 kea: upgrade 1.7.0 -> 1.7.2 krb5: upgrade 1.17 -> 1.17.1 hwdata: upgrade 0.329 -> 0.330 python-pytest: upgrade 5.2.1 -> 5.3.2 python-waitress: upgrade 1.3.1 -> 1.4.1 python-cachetools: upgrade 3.1.1 -> 4.0.0 python-sqlalchemy: upgrade 1.1.17 -> 1.3.12 strongswan: upgrade 5.8.1 -> 5.8.2 smartmontools: upgrade 7.0 -> 7.1 spitools: upgrade 0.8.3 -> 0.8.4 python-pyyaml: upgrade 5.1.2 -> 5.2 arno-iptables-firewall: upgrade 2.0.3 -> 2.1.0 ipvsadm: upgrade 1.30 -> 1.31 lftp: upgrade 4.8.4 -> 4.9.0 nghttp2: upgrade 1.39.2 -> 1.40.0 opensaf: upgrade 5.19.07 -> 5.19.10 wolfssl: upgrade 4.2.0 -> 4.3.0 kea: upgrade 1.7.2 -> 1.7.3 wireshark: upgrade 3.0.7 -> 3.2.0 botan: upgrade 2.11.0 -> 2.13.0 cppzmq: upgrade 4.4.1 -> 4.5.0 iozone3: upgrade 487 -> 488 libmbim: upgrade 1.20.2 -> 1.20.4 libnfc: upgrade to 1.7.1 libsigc++-2.0: upgrade 3.0.0 -> 3.0.2 libuv: upgrade 1.33.1 -> 1.34.0 phoronix-test-suite: upgrade 9.0.1 -> 9.2.1 rabbitmq-c: upgrade 0.9.0 -> 0.10.0 cscope: upgrade 15.8b -> 15.9 msgpack-c: upgrade 3.1.1 -> 3.2.1 gnuplot: upgrade 5.2.2 -> 5.2.8 gphoto2: upgrade 2.5.14 -> 2.5.23 gtkwave: upgrade 3.3.102 -> 3.3.103 haveged: upgrade 1.9.6 -> 1.9.8 libgphoto2: upgrade 2.5.17 -> 2.5.23 libplist: upgrade 2.0.0 -> 2.1.0 ipmiutil: upgrade 3.0.5 -> 3.1.5 libburn: upgrade 1.5.0 -> 1.5.2 libdvdread: upgrade 6.0.1 -> 6.0.2 libsdl2-image: upgrade 2.0.3 -> 2.0.5 libsdl2-mixer: upgrade 2.0.2 -> 2.0.4 libsdl2-ttf: upgrade 2.0.14 -> 2.0.15 yad: upgrade 4.1 -> 5.0 python3-astor: 0.8 -> 0.8.1 python3-bandit: 1.5.1 -> 1.6.2 python-asn1crypto: 1.2.0 -> 1.3.0 python-bitarray: 1.2.0 -> 1.2.1 python-pyconnman: 0.1.0 -> 0.2.0 William A. Kennington III via Openembedded-devel (1): stunnel: bump to version 5.56 Yi Zhao (4): phpmyadmin: upgrade 4.9.1 -> 4.9.2 tk: upgrade 8.6.9 -> 8.6.10 ntp: restrict NTP mode 6 queries samba: upgrade 4.10.10 -> 4.10.11 Yongxin Liu (1): ndctl: Upgrade to v67 Zang Ruochen (17): python-alembic: upgrade 1.3.1 -> 1.3.2 python-beautifulsoup4: upgrade 4.8.1 -> 4.8.2 python-bitarray: upgrade 1.1.0 -> 1.2.0 python-certifi: upgrade 2019.9.11 -> 2019.11.28 python-cmd2: upgrade 0.9.21 -> 0.9.22 python-engineio: upgrade 3.10.0 -> 3.11.1 python-parse: upgrade 1.12.1 -> 1.14.0 python-passlib: upgrade 1.7.1 -> 1.7.2 python-pexpect: upgrade 4.6.0 -> 4.7.0 python-psutil: upgrade 5.6.5 -> 5.6.7 python-py: upgrade 1.8.0 -> 1.8.1 python-pycryptodome: upgrade 3.9.3 -> 3.9.4 python-pymisp: upgrade 2.4.117.2 -> 2.4.119.1 python-pymongo: upgrade 3.9.0 -> 3.10.0 python-pyparsing: upgrade 2.4.5 -> 2.4.6 python-pyperf: upgrade 1.6.1 -> 1.7.0 python-backports-functools-lru-cache: Add python3 version Zhixiong Chi (1): dnsmasq: CVE-2019-14834 hmenn (1): add sqlite-orm v1.5 madhavank27 (1): Added bb file for libcamera integration sangelovic (1): sdbus-c++: Introduce recipes for sdbus-c++ library and its tools Change-Id: I5e7559de35d61167e234161ffb768f6f95d30f41 Signed-off-by: Brad Bishop <bradleyb@fuzziesquirrel.com>
Diffstat (limited to 'meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-libsystemd-243/0004-add-fallback-parse_printf_format-implementation.patch')
-rw-r--r--meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-libsystemd-243/0004-add-fallback-parse_printf_format-implementation.patch432
1 files changed, 432 insertions, 0 deletions
diff --git a/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-libsystemd-243/0004-add-fallback-parse_printf_format-implementation.patch b/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-libsystemd-243/0004-add-fallback-parse_printf_format-implementation.patch
new file mode 100644
index 0000000000..a2aad40ac2
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-libsystemd-243/0004-add-fallback-parse_printf_format-implementation.patch
@@ -0,0 +1,432 @@
+From 7bcf3b166694090497a0acd2c5299e4e04fcc9b6 Mon Sep 17 00:00:00 2001
+From: Chen Qi <Qi.Chen@windriver.com>
+Date: Mon, 25 Feb 2019 14:04:21 +0800
+Subject: [PATCH 04/24] add fallback parse_printf_format implementation
+
+Upstream-Status: Inappropriate [musl specific]
+
+Signed-off-by: Emil Renner Berthing <systemd@esmil.dk>
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
+[rebased for systemd 243]
+Signed-off-by: Scott Murray <scott.murray@konsulko.com>
+---
+ meson.build | 1 +
+ src/basic/meson.build | 5 +
+ src/basic/parse-printf-format.c | 273 ++++++++++++++++++++++++++++++++++++++++
+ src/basic/parse-printf-format.h | 57 +++++++++
+ src/basic/stdio-util.h | 2 +-
+ src/journal/journal-send.c | 2 +-
+ 6 files changed, 338 insertions(+), 2 deletions(-)
+ create mode 100644 src/basic/parse-printf-format.c
+ create mode 100644 src/basic/parse-printf-format.h
+
+diff --git a/meson.build b/meson.build
+index 79b762faeb..7f8c679411 100644
+--- a/meson.build
++++ b/meson.build
+@@ -613,6 +613,7 @@ endif
+ foreach header : ['crypt.h',
+ 'linux/memfd.h',
+ 'linux/vm_sockets.h',
++ 'printf.h',
+ 'sys/auxv.h',
+ 'valgrind/memcheck.h',
+ 'valgrind/valgrind.h',
+diff --git a/src/basic/meson.build b/src/basic/meson.build
+index d6caf28f14..32c1acf349 100644
+--- a/src/basic/meson.build
++++ b/src/basic/meson.build
+@@ -312,6 +312,11 @@ foreach item : [['af', af_list_txt, 'af', ''],
+ endforeach
+
+ basic_sources += generated_gperf_headers
++
++if conf.get('HAVE_PRINTF_H') != 1
++ basic_sources += [files('parse-printf-format.c')]
++endif
++
+ basic_gcrypt_sources = files(
+ 'gcrypt-util.c',
+ 'gcrypt-util.h')
+diff --git a/src/basic/parse-printf-format.c b/src/basic/parse-printf-format.c
+new file mode 100644
+index 0000000000..49437e5445
+--- /dev/null
++++ b/src/basic/parse-printf-format.c
+@@ -0,0 +1,273 @@
++/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/
++
++/***
++ This file is part of systemd.
++
++ Copyright 2014 Emil Renner Berthing <systemd@esmil.dk>
++
++ With parts from the musl C library
++ Copyright 2005-2014 Rich Felker, et al.
++
++ systemd is free software; you can redistribute it and/or modify it
++ under the terms of the GNU Lesser General Public License as published by
++ the Free Software Foundation; either version 2.1 of the License, or
++ (at your option) any later version.
++
++ systemd is distributed in the hope that it will be useful, but
++ WITHOUT ANY WARRANTY; without even the implied warranty of
++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++ Lesser General Public License for more details.
++
++ You should have received a copy of the GNU Lesser General Public License
++ along with systemd; If not, see <http://www.gnu.org/licenses/>.
++***/
++
++#include <stddef.h>
++#include <string.h>
++
++#include "parse-printf-format.h"
++
++static const char *consume_nonarg(const char *fmt)
++{
++ do {
++ if (*fmt == '\0')
++ return fmt;
++ } while (*fmt++ != '%');
++ return fmt;
++}
++
++static const char *consume_num(const char *fmt)
++{
++ for (;*fmt >= '0' && *fmt <= '9'; fmt++)
++ /* do nothing */;
++ return fmt;
++}
++
++static const char *consume_argn(const char *fmt, size_t *arg)
++{
++ const char *p = fmt;
++ size_t val = 0;
++
++ if (*p < '1' || *p > '9')
++ return fmt;
++ do {
++ val = 10*val + (*p++ - '0');
++ } while (*p >= '0' && *p <= '9');
++
++ if (*p != '$')
++ return fmt;
++ *arg = val;
++ return p+1;
++}
++
++static const char *consume_flags(const char *fmt)
++{
++ while (1) {
++ switch (*fmt) {
++ case '#':
++ case '0':
++ case '-':
++ case ' ':
++ case '+':
++ case '\'':
++ case 'I':
++ fmt++;
++ continue;
++ }
++ return fmt;
++ }
++}
++
++enum state {
++ BARE,
++ LPRE,
++ LLPRE,
++ HPRE,
++ HHPRE,
++ BIGLPRE,
++ ZTPRE,
++ JPRE,
++ STOP
++};
++
++enum type {
++ NONE,
++ PTR,
++ INT,
++ UINT,
++ ULLONG,
++ LONG,
++ ULONG,
++ SHORT,
++ USHORT,
++ CHAR,
++ UCHAR,
++ LLONG,
++ SIZET,
++ IMAX,
++ UMAX,
++ PDIFF,
++ UIPTR,
++ DBL,
++ LDBL,
++ MAXTYPE
++};
++
++static const short pa_types[MAXTYPE] = {
++ [NONE] = PA_INT,
++ [PTR] = PA_POINTER,
++ [INT] = PA_INT,
++ [UINT] = PA_INT,
++ [ULLONG] = PA_INT | PA_FLAG_LONG_LONG,
++ [LONG] = PA_INT | PA_FLAG_LONG,
++ [ULONG] = PA_INT | PA_FLAG_LONG,
++ [SHORT] = PA_INT | PA_FLAG_SHORT,
++ [USHORT] = PA_INT | PA_FLAG_SHORT,
++ [CHAR] = PA_CHAR,
++ [UCHAR] = PA_CHAR,
++ [LLONG] = PA_INT | PA_FLAG_LONG_LONG,
++ [SIZET] = PA_INT | PA_FLAG_LONG,
++ [IMAX] = PA_INT | PA_FLAG_LONG_LONG,
++ [UMAX] = PA_INT | PA_FLAG_LONG_LONG,
++ [PDIFF] = PA_INT | PA_FLAG_LONG_LONG,
++ [UIPTR] = PA_INT | PA_FLAG_LONG,
++ [DBL] = PA_DOUBLE,
++ [LDBL] = PA_DOUBLE | PA_FLAG_LONG_DOUBLE
++};
++
++#define S(x) [(x)-'A']
++#define E(x) (STOP + (x))
++
++static const unsigned char states[]['z'-'A'+1] = {
++ { /* 0: bare types */
++ S('d') = E(INT), S('i') = E(INT),
++ S('o') = E(UINT),S('u') = E(UINT),S('x') = E(UINT), S('X') = E(UINT),
++ S('e') = E(DBL), S('f') = E(DBL), S('g') = E(DBL), S('a') = E(DBL),
++ S('E') = E(DBL), S('F') = E(DBL), S('G') = E(DBL), S('A') = E(DBL),
++ S('c') = E(CHAR),S('C') = E(INT),
++ S('s') = E(PTR), S('S') = E(PTR), S('p') = E(UIPTR),S('n') = E(PTR),
++ S('m') = E(NONE),
++ S('l') = LPRE, S('h') = HPRE, S('L') = BIGLPRE,
++ S('z') = ZTPRE, S('j') = JPRE, S('t') = ZTPRE
++ }, { /* 1: l-prefixed */
++ S('d') = E(LONG), S('i') = E(LONG),
++ S('o') = E(ULONG),S('u') = E(ULONG),S('x') = E(ULONG),S('X') = E(ULONG),
++ S('e') = E(DBL), S('f') = E(DBL), S('g') = E(DBL), S('a') = E(DBL),
++ S('E') = E(DBL), S('F') = E(DBL), S('G') = E(DBL), S('A') = E(DBL),
++ S('c') = E(INT), S('s') = E(PTR), S('n') = E(PTR),
++ S('l') = LLPRE
++ }, { /* 2: ll-prefixed */
++ S('d') = E(LLONG), S('i') = E(LLONG),
++ S('o') = E(ULLONG),S('u') = E(ULLONG),
++ S('x') = E(ULLONG),S('X') = E(ULLONG),
++ S('n') = E(PTR)
++ }, { /* 3: h-prefixed */
++ S('d') = E(SHORT), S('i') = E(SHORT),
++ S('o') = E(USHORT),S('u') = E(USHORT),
++ S('x') = E(USHORT),S('X') = E(USHORT),
++ S('n') = E(PTR),
++ S('h') = HHPRE
++ }, { /* 4: hh-prefixed */
++ S('d') = E(CHAR), S('i') = E(CHAR),
++ S('o') = E(UCHAR),S('u') = E(UCHAR),
++ S('x') = E(UCHAR),S('X') = E(UCHAR),
++ S('n') = E(PTR)
++ }, { /* 5: L-prefixed */
++ S('e') = E(LDBL),S('f') = E(LDBL),S('g') = E(LDBL), S('a') = E(LDBL),
++ S('E') = E(LDBL),S('F') = E(LDBL),S('G') = E(LDBL), S('A') = E(LDBL),
++ S('n') = E(PTR)
++ }, { /* 6: z- or t-prefixed (assumed to be same size) */
++ S('d') = E(PDIFF),S('i') = E(PDIFF),
++ S('o') = E(SIZET),S('u') = E(SIZET),
++ S('x') = E(SIZET),S('X') = E(SIZET),
++ S('n') = E(PTR)
++ }, { /* 7: j-prefixed */
++ S('d') = E(IMAX), S('i') = E(IMAX),
++ S('o') = E(UMAX), S('u') = E(UMAX),
++ S('x') = E(UMAX), S('X') = E(UMAX),
++ S('n') = E(PTR)
++ }
++};
++
++size_t parse_printf_format(const char *fmt, size_t n, int *types)
++{
++ size_t i = 0;
++ size_t last = 0;
++
++ memset(types, 0, n);
++
++ while (1) {
++ size_t arg;
++ unsigned int state;
++
++ fmt = consume_nonarg(fmt);
++ if (*fmt == '\0')
++ break;
++ if (*fmt == '%') {
++ fmt++;
++ continue;
++ }
++ arg = 0;
++ fmt = consume_argn(fmt, &arg);
++ /* flags */
++ fmt = consume_flags(fmt);
++ /* width */
++ if (*fmt == '*') {
++ size_t warg = 0;
++ fmt = consume_argn(fmt+1, &warg);
++ if (warg == 0)
++ warg = ++i;
++ if (warg > last)
++ last = warg;
++ if (warg <= n && types[warg-1] == NONE)
++ types[warg-1] = INT;
++ } else
++ fmt = consume_num(fmt);
++ /* precision */
++ if (*fmt == '.') {
++ fmt++;
++ if (*fmt == '*') {
++ size_t parg = 0;
++ fmt = consume_argn(fmt+1, &parg);
++ if (parg == 0)
++ parg = ++i;
++ if (parg > last)
++ last = parg;
++ if (parg <= n && types[parg-1] == NONE)
++ types[parg-1] = INT;
++ } else {
++ if (*fmt == '-')
++ fmt++;
++ fmt = consume_num(fmt);
++ }
++ }
++ /* length modifier and conversion specifier */
++ state = BARE;
++ do {
++ unsigned char c = *fmt++;
++
++ if (c < 'A' || c > 'z')
++ continue;
++ state = states[state]S(c);
++ if (state == 0)
++ continue;
++ } while (state < STOP);
++
++ if (state == E(NONE))
++ continue;
++
++ if (arg == 0)
++ arg = ++i;
++ if (arg > last)
++ last = arg;
++ if (arg <= n)
++ types[arg-1] = state - STOP;
++ }
++
++ if (last > n)
++ last = n;
++ for (i = 0; i < last; i++)
++ types[i] = pa_types[types[i]];
++
++ return last;
++}
+diff --git a/src/basic/parse-printf-format.h b/src/basic/parse-printf-format.h
+new file mode 100644
+index 0000000000..47be7522d7
+--- /dev/null
++++ b/src/basic/parse-printf-format.h
+@@ -0,0 +1,57 @@
++/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/
++
++/***
++ This file is part of systemd.
++
++ Copyright 2014 Emil Renner Berthing <systemd@esmil.dk>
++
++ With parts from the GNU C Library
++ Copyright 1991-2014 Free Software Foundation, Inc.
++
++ systemd is free software; you can redistribute it and/or modify it
++ under the terms of the GNU Lesser General Public License as published by
++ the Free Software Foundation; either version 2.1 of the License, or
++ (at your option) any later version.
++
++ systemd is distributed in the hope that it will be useful, but
++ WITHOUT ANY WARRANTY; without even the implied warranty of
++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++ Lesser General Public License for more details.
++
++ You should have received a copy of the GNU Lesser General Public License
++ along with systemd; If not, see <http://www.gnu.org/licenses/>.
++***/
++
++#pragma once
++
++#include "config.h"
++
++#if HAVE_PRINTF_H
++#include <printf.h>
++#else
++
++#include <stddef.h>
++
++enum { /* C type: */
++ PA_INT, /* int */
++ PA_CHAR, /* int, cast to char */
++ PA_WCHAR, /* wide char */
++ PA_STRING, /* const char *, a '\0'-terminated string */
++ PA_WSTRING, /* const wchar_t *, wide character string */
++ PA_POINTER, /* void * */
++ PA_FLOAT, /* float */
++ PA_DOUBLE, /* double */
++ PA_LAST
++};
++
++/* Flag bits that can be set in a type returned by `parse_printf_format'. */
++#define PA_FLAG_MASK 0xff00
++#define PA_FLAG_LONG_LONG (1 << 8)
++#define PA_FLAG_LONG_DOUBLE PA_FLAG_LONG_LONG
++#define PA_FLAG_LONG (1 << 9)
++#define PA_FLAG_SHORT (1 << 10)
++#define PA_FLAG_PTR (1 << 11)
++
++size_t parse_printf_format(const char *fmt, size_t n, int *types);
++
++#endif /* HAVE_PRINTF_H */
+diff --git a/src/basic/stdio-util.h b/src/basic/stdio-util.h
+index c3b9448d4f..2937aa13b1 100644
+--- a/src/basic/stdio-util.h
++++ b/src/basic/stdio-util.h
+@@ -1,13 +1,13 @@
+ /* SPDX-License-Identifier: LGPL-2.1+ */
+ #pragma once
+
+-#include <printf.h>
+ #include <stdarg.h>
+ #include <stdio.h>
+ #include <sys/types.h>
+
+ #include "macro.h"
+ #include "memory-util.h"
++#include "parse-printf-format.h"
+
+ #define snprintf_ok(buf, len, fmt, ...) \
+ ((size_t) snprintf(buf, len, fmt, __VA_ARGS__) < (len))
+diff --git a/src/journal/journal-send.c b/src/journal/journal-send.c
+index 5ef11fa1a4..6384ab620c 100644
+--- a/src/journal/journal-send.c
++++ b/src/journal/journal-send.c
+@@ -2,7 +2,6 @@
+
+ #include <errno.h>
+ #include <fcntl.h>
+-#include <printf.h>
+ #include <stddef.h>
+ #include <sys/socket.h>
+ #include <sys/un.h>
+@@ -21,6 +20,7 @@
+ #include "stdio-util.h"
+ #include "string-util.h"
+ #include "tmpfile-util.h"
++#include "parse-printf-format.h"
+
+ #define SNDBUF_SIZE (8*1024*1024)
+