Mirror of pcloudcc-lneely, an independent fork of pcloudcom/console-client hosted on Github.
Go to file
Levi Neely d0d34f4345
Resolve #394: Replace Boost.Program_options with CLI11 (#396)
* Replace Boost.Program_options with CLI11 to resolve version pinning (#394)

- Replace boost::program_options with header-only CLI11 in main.cpp
- Remove boost dependency from Makefile, default.nix, and flake.nix
- Update documentation in doc/BUILD.md
- Add CMakeLists.txt as an alternative build system

This fixes the issue where the binary would fail to find specific libboost_program_options.so versions (e.g., 1.90.0) on systems with newer/older Boost versions. Since CLI11 is header-only, there is no longer a runtime dependency on Boost for pcloudcc.

* Update build configuration and dev scripts to remove remaining Boost references

- Remove Boost from dev scripts and container build configs
- Add -std=c++11 to Makefile CXXFLAGS
- Explicitly add -I. to Makefile CFLAGS for CLI11.hpp include

* Address build review feedback and fix security/bug issues

- Fix passascrypto logic and type (now a flag) in main.cpp
- Fix typo in daemon process name
- Add secret wiping (putil_wipe) for tfa_code and singleton passwords
- Remove redundant App setup in control_tools.cpp
- Use CLI11 envname for PCLOUD_USER
- Fix C++11 compatibility for putil_wipe and App initialization in control_tools.cpp

* Remove phantom CMakeLists.txt and ensure Makefile is the source of truth

---------

Co-authored-by: Levi Neely <lkn@darkstar.example.net>
2026-05-01 15:02:23 +02:00
.github/workflows Add GitHub Actions CI workflow for unit tests (#379) 2026-03-10 17:48:42 +01:00
dev Resolve #394: Replace Boost.Program_options with CLI11 (#396) 2026-05-01 15:02:23 +02:00
doc Resolve #394: Replace Boost.Program_options with CLI11 (#396) 2026-05-01 15:02:23 +02:00
pclsync relax sqlite version checks to avoid panic on startup (#395) 2026-05-01 15:02:02 +02:00
tests Fix bad-free heap corruption in ppathstatus and psyncer (#392) 2026-03-24 12:12:50 +01:00
.clang-format manual formatting (#136) 2025-03-11 21:36:26 +01:00
.clang-tidy Add clang-tidy signal safety checks (pcl-2s2.2) (#367) 2026-03-08 13:41:51 +01:00
.envrc direnv (#150) 2025-04-13 08:53:41 +02:00
.gitignore Add testability infrastructure: unit tests, extracted modules, CI integration (#381) 2026-03-11 07:52:35 +01:00
CLI11.hpp Revert "Streamline CLI11.hpp to functionality actually used by pcloudcc" (#81) 2024-12-10 21:48:15 +01:00
LOG-MANAGEMENT.md Refactor logging, add cache-size, fs-event-log (#163) 2026-02-27 08:38:28 +01:00
Makefile Resolve #394: Replace Boost.Program_options with CLI11 (#396) 2026-05-01 15:02:23 +02:00
README.md Update README.md (#376) 2026-03-10 14:10:51 +01:00
control_tools.cpp Resolve #394: Replace Boost.Program_options with CLI11 (#396) 2026-05-01 15:02:23 +02:00
control_tools.h non interactive command processing (#123) 2025-03-09 19:18:38 +01:00
default.nix Resolve #394: Replace Boost.Program_options with CLI11 (#396) 2026-05-01 15:02:23 +02:00
detect_fuse.sh Migrate to FUSE 3.x API (#350) 2026-03-09 21:51:00 +01:00
flake.lock Nix shell uses flakes (#147) 2025-04-11 20:55:58 +02:00
flake.nix Resolve #394: Replace Boost.Program_options with CLI11 (#396) 2026-05-01 15:02:23 +02:00
main.cpp Resolve #394: Replace Boost.Program_options with CLI11 (#396) 2026-05-01 15:02:23 +02:00
pcloudcc.logrotate Refactor logging, add cache-size, fs-event-log (#163) 2026-02-27 08:38:28 +01:00
pclsync_lib.cpp Fix authsave to save both username and password (#390) 2026-03-11 22:39:08 +01:00
pclsync_lib.h Add authsave command to save authentication credentials (#389) 2026-03-11 22:23:09 +01:00
rpcclient.cpp Add memory accounting per subsystem (#371) 2026-03-08 21:47:22 +01:00
rpcclient.h 130 use trustworthy location for log and socket (#134) 2025-03-11 19:03:58 +01:00

README.md

Introduction

pcloudcc is simple linux console client for pCloud cloud storage derived from the console-client developed by pCloud. This version is independently maintained by me, whose only affiliation with pCloud is as a user of their services. Due credit goes to Anton Titov, Ivan Stoev, and pCloud.

Supported Platforms & Distributions

The target operating system and platform for this program is linux/amd64, and has been reported to work on linux/aarch64. Program behavior on 32-bit architectures is considered undefined.

I aim to support as many distributions as possible. I maintain a package for AUR and Nix. I do not plan on providing or maintaining any other packages, but encourage anyone interested in doing so for their own distributions.

Compatibility Matrix

Distribution FUSE
Debian trixie 2.x
Debian trixie 3.x
Arch Linux (rolling) 3.x latest
Fedora 41 3.x
Fedora (latest) 3.x latest
Debian forky 3.18+
Slackware 15 3.10.5

All configurations require mbedTLS 3.x. Runtime mount testing was performed manually on FUSE 2 (libfuse 2.9.x), FUSE 3 (libfuse3 3.10.5), and FUSE 3.18+ (Debian forky container).

Notices

Security Notice

My code audits are best-effort, and I make security enhancements as I identify problems. However, I do not promise that this program is free of even older and well-known security vulnerabilities. Therefore, I recommend using this program only on a trusted single-user system. Security-related code audits and contributions are most welcome!

See Also

  • Contributing: Read this if you're interested in helping out. Short version: do your best to write good code, be courteous to maintainers, and most importantly: have fun!

  • Building: Read this if you're not sure how to build pcloudcc. For most users, make and make install are enough.

  • mbedtls 3.x migration notes: Read this if you use an older distribution such as debian:bookworm and encounter build problems.

  • Device Validation Guide: Read this if you're running pcloudcc and encounter device validation-related errors.

  • Usage Guide: Read this if you're unsure how to start using pcloudcc.

  • Log Management Guide: Read this to configure log rotation, cache size limits, and custom log paths. To set up automatic log rotation, copy pcloudcc.logrotate to /etc/logrotate.d/pcloudcc.

  • pcloudcc-service: Container-based systemd service for running pcloudcc in userspace with podman. Includes multi-stage Dockerfile that builds pcloudcc from source and Quadlet systemd unit for automated background syncing.