* Fix #103: Refactor putil to use putil_ namespace and enforce encapsulation All public functions in putil now use the putil_ prefix (e.g., putil_strdup, putil_strcat, putil_time_format, putil_base64_encode, etc.). Internal variables (normalize_table, base64_reverse_table) and the constructor remain static. Updated all 34 call-site files across pclsync accordingly. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * Fix #96: Refactor pfs to use pfs_ namespace and enforce encapsulation All public functions in the pfs module renamed from psync_fs_ to pfs_ (e.g., pfs_update_openfile, pfs_refresh, pfs_start, pfs_stop, etc.). Extern vars psync_fake_prefix/psync_fake_prefix_len renamed to pfs_fake_prefix/pfs_fake_prefix_len. Functions only used within pfs.c (pfs_update_openfile_fileid_locked, pfs_chown) made static. Updated all call sites across 17 files including pclsync_lib.cpp. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * Refactor pfsxattr to use pfs_xattr_ namespace All psync_fs_ prefixed functions in the pfsxattr module renamed to pfs_xattr_ (e.g., pfs_xattr_set, pfs_xattr_get, pfs_xattr_list, pfs_xattr_remove, pfs_xattr_file_deleted, pfs_xattr_task_to_file, etc.). Local macro psync_fs_set_thread_name renamed to pfs_xattr_set_thread_name. Internal static helpers (delete_object_id, update_object_id, xattr_get_object_id_locked) remain static and unchanged. Updated all call sites in pfs.c, pfsupload.c, and pdiff.c. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * Rename pfs_xattr_ namespace to pfs_xatr_ Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * Refactor pfs sub-modules to use namespaced function prefixes - pfscrypto_* → pfs_crpt_* - psync_fsstatic_* → pfs_stat_* - psync_fsupload_* → pfs_upld_* - psync_fstask_* → pfs_task_* (functions only; typedefs unchanged) - psync_fsfolder_*/psync_fsfolderid_*/psync_fsfolderflags_*/ get_decname_for_folder/psync_get_folderid → pfs_fldr_* Type names, macro constants, and typedef aliases are unchanged. Updated all call sites across 17 files. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> --------- Co-authored-by: Levi Neely <lkn@darkstar.example.net> Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com> |
||
|---|---|---|
| .github/workflows | ||
| dev | ||
| doc | ||
| pclsync | ||
| .clang-format | ||
| .envrc | ||
| .gitignore | ||
| CLI11.hpp | ||
| LOG-MANAGEMENT.md | ||
| Makefile | ||
| README.md | ||
| control_tools.cpp | ||
| control_tools.h | ||
| default.nix | ||
| flake.lock | ||
| flake.nix | ||
| main.cpp | ||
| pcloudcc.logrotate | ||
| pclsync_lib.cpp | ||
| pclsync_lib.h | ||
| rpcclient.cpp | ||
| rpcclient.h | ||
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.
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,makeandmake installare enough. -
mbedtls 3.x migration notes: Read this if you use an older distribution such as
debian:bookwormand encounter build problems. -
Device Validation Guide: Read this if you're running
pcloudccand 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.logrotateto/etc/logrotate.d/pcloudcc. -
pcloudcc-service: Container-based systemd service for running
pcloudccin userspace with podman. Includes multi-stage Dockerfile that buildspcloudccfrom source and Quadlet systemd unit for automated background syncing.