mirror of
https://github.com/aristocratos/btop.git
synced 2024-06-18 18:34:36 +12:00
c0e17a64d3
commitc2c4fe47db
Author: aristocratos <admin@qvantnet.com> Date: Sat Nov 13 23:15:53 2021 +0100 Changes from main + fixes commitbd5d867089
Author: aristocratos <admin@qvantnet.com> Date: Sat Nov 13 21:24:01 2021 +0100 Fixes commitdc5f0606cb
Author: aristocratos <admin@qvantnet.com> Date: Sat Nov 13 20:51:06 2021 +0100 Fixed leak in Proc::collect() commit8b59ab6e11
Author: aristocratos <admin@qvantnet.com> Date: Sat Nov 13 19:59:56 2021 +0100 Fixed process cpu usage calculation commit53c8a0325b
Author: aristocratos <admin@qvantnet.com> Date: Mon Oct 25 13:01:53 2021 +0200 Cpu temp set to average of pACC and eACC for mac m1 commit940cd0a513
Author: Jos Dehaes <jos.dehaes@gmail.com> Date: Sun Oct 24 21:12:16 2021 +0200 limit cpu temp to 20 commit254ceb9c2d
Author: aristocratos <admin@qvantnet.com> Date: Sun Oct 24 11:24:04 2021 +0200 Fixed up Makefile commit6fa3bf41d7
Author: aristocratos <admin@qvantnet.com> Date: Thu Oct 21 13:12:45 2021 +0200 Makefile fixed WARNFLAGS commit2c98e2ca29
Author: aristocratos <admin@qvantnet.com> Date: Thu Oct 21 13:08:12 2021 +0200 Updated Makefile commite69780e9bc
Author: Jos Dehaes <jos.dehaes@gmail.com> Date: Wed Oct 20 23:26:09 2021 +0200 fix build commitde62167921
Merge:a590dd3
a0ee404
Author: Jos Dehaes <jos.dehaes@gmail.com> Date: Wed Oct 20 23:10:36 2021 +0200 Merge branch 'main' into OSX commita590dd3f67
Author: aristocratos <admin@qvantnet.com> Date: Mon Oct 18 11:20:12 2021 +0200 Ignore format-truncation commit4c30742d41
Author: Jos Dehaes <jos.dehaes@gmail.com> Date: Mon Oct 18 10:08:01 2021 +0200 comments about temp sensors commit46030de77c
Author: Jos Dehaes <jos.dehaes@gmail.com> Date: Mon Oct 18 08:10:37 2021 +0200 available = total - used commit4c228de0ef
Author: Jos Dehaes <jos.dehaes@gmail.com> Date: Sun Oct 17 22:19:41 2021 +0200 use sysconf to get arg_max - seems simpler commitc60fc29f0f
Author: Jos Dehaes <jos.dehaes@gmail.com> Date: Sun Oct 17 22:10:50 2021 +0200 arg_max should be int on macos commit0b5a931a6d
Author: Jos Dehaes <jos.dehaes@gmail.com> Date: Sun Oct 17 22:01:42 2021 +0200 only fetch max_args once commit71d5cd5fd9
Author: aristocratos <admin@qvantnet.com> Date: Sat Oct 16 23:24:07 2021 +0200 Reverted mutexes back to custom atomic bool based locks commit3f34a67df6
Author: Jos Dehaes <jos.dehaes@gmail.com> Date: Sat Oct 16 21:47:55 2021 +0200 these helpers can be static commitfc19c46c8a
Author: Jos Dehaes <jos.dehaes@gmail.com> Date: Sat Oct 16 21:44:49 2021 +0200 code cleanup: put the code in .cpp to enable incremental build commitc252c618c0
Author: Jos Dehaes <jos.dehaes@gmail.com> Date: Sat Oct 16 21:09:21 2021 +0200 don't crash on intel commit9f88187c29
Author: Jos Dehaes <jos.dehaes@gmail.com> Date: Sat Oct 16 21:06:18 2021 +0200 small improvement commit808f09c974
Author: Jos Dehaes <jos.dehaes@gmail.com> Date: Sat Oct 16 20:59:48 2021 +0200 don't iterate 3 times commitd8408336e3
Author: Jos Dehaes <jos.dehaes@gmail.com> Date: Sat Oct 16 20:59:27 2021 +0200 remove debug commit4f078c3beb
Author: Jos Dehaes <jos.dehaes@gmail.com> Date: Wed Oct 13 23:38:27 2021 +0200 more temperature (M1 + intel) commit289880aaa6
Merge:88a2528
3ffb212
Author: aristocratos <admin@qvantnet.com> Date: Sat Oct 16 19:37:09 2021 +0200 Merge branch 'OSX' of github.com:aristocratos/btop into OSX commit88a2528ca3
Author: aristocratos <admin@qvantnet.com> Date: Sat Oct 16 19:34:10 2021 +0200 Merge changes from main commit3ffb21203a
Author: Jos Dehaes <jos.dehaes@gmail.com> Date: Sat Oct 16 19:20:45 2021 +0200 release a bit more - still has negative temps for 2 cores on my system commit70b4871062
Author: aristocratos <admin@qvantnet.com> Date: Sat Oct 16 01:59:44 2021 +0200 Fixed leaks in Mem and attempt at fixing leaks in sensors.cpp commitfbae907720
Author: Jos Dehaes <jos.dehaes@gmail.com> Date: Fri Oct 15 23:41:37 2021 +0200 temperature sensors via IOKit commitcef0f0a68d
Author: aristocratos <admin@qvantnet.com> Date: Fri Oct 15 18:39:17 2021 +0200 Process command line arguments commit921cfa01ff
Author: aristocratos <admin@qvantnet.com> Date: Wed Oct 13 23:20:15 2021 +0200 Re-enable setuid and set default SU_GROUP to wheel for OSX commita416c888c7
Author: Jos Dehaes <jos.dehaes@gmail.com> Date: Wed Oct 13 21:16:41 2021 +0200 temperature commite7afe00ce7
Author: aristocratos <admin@qvantnet.com> Date: Wed Oct 13 12:54:43 2021 +0200 Cpu usage working again commit4193ef8921
Author: aristocratos <admin@qvantnet.com> Date: Wed Oct 13 10:36:51 2021 +0200 Fixed cpu lazy sorting commit93fcb6ff04
Author: aristocratos <admin@qvantnet.com> Date: Tue Oct 12 22:22:45 2021 +0200 Update README.md commit683354cd2e
Merge:8a399c4
6d724d6
Author: aristocratos <admin@qvantnet.com> Date: Tue Oct 12 22:19:30 2021 +0200 Merge pull request #80 from ShrirajHegde/OSX Add github workflow for MacOS commit8a399c499a
Author: aristocratos <admin@qvantnet.com> Date: Tue Oct 12 21:50:46 2021 +0200 pointer to smart pointer, first pass commit772605003a
Author: aristocratos <admin@qvantnet.com> Date: Tue Oct 12 18:54:38 2021 +0200 Fixed detailed memory not updating commit28cb677533
Author: Jos Dehaes <jos.dehaes@gmail.com> Date: Mon Oct 11 22:19:25 2021 +0200 more memory free-up - still leaks like crazy commit304457863f
Author: Jos Dehaes <jos.dehaes@gmail.com> Date: Mon Oct 11 21:48:07 2021 +0200 more RAII cleanup commit82e2e3c55c
Author: aristocratos <admin@qvantnet.com> Date: Mon Oct 11 12:40:25 2021 +0200 Removed non present cpu fields and fixed calculation for selectable cpu field graphs commit68603f2b37
Author: aristocratos <admin@qvantnet.com> Date: Mon Oct 11 10:57:04 2021 +0200 RAII Wrappers for Cpu::get_battery() commitd5cb24fbeb
Author: Jos Dehaes <jos.dehaes@gmail.com> Date: Sun Oct 10 20:23:11 2021 +0200 RAII commit8fad5a61be
Author: Jos Dehaes <jos.dehaes@gmail.com> Date: Sat Oct 9 21:44:16 2021 +0200 get more disk IO stats commit7fa903cf16
Author: Jos Dehaes <jos.dehaes@gmail.com> Date: Sat Oct 9 21:43:48 2021 +0200 fix build commit98036db660
Author: Jos Dehaes <jos.dehaes@gmail.com> Date: Sat Oct 9 21:18:25 2021 +0200 remove unnecessary uptime param commitaae7ae35ca
Author: Jos Dehaes <jos.dehaes@gmail.com> Date: Sat Oct 9 21:07:23 2021 +0200 remove debug logging commit5187420b04
Author: Jos Dehaes <jos.dehaes@gmail.com> Date: Sat Oct 9 21:06:43 2021 +0200 fix process elapsed time commit89582c0ea6
Author: Jos Dehaes <jos.dehaes@gmail.com> Date: Sat Oct 9 21:06:29 2021 +0200 don't double free commit6d724d6155
Author: Shriraj Hegde <shriraj.hegde@gmail.com> Date: Sat Oct 9 21:46:33 2021 +0530 Change Upload filename commit4f94ecc8ad
Author: Shriraj Hegde <shriraj.hegde@gmail.com> Date: Sat Oct 9 21:40:11 2021 +0530 Fix upload path commite1d6d0a1f2
Author: Shriraj Hegde <shriraj.hegde@gmail.com> Date: Sat Oct 9 21:36:13 2021 +0530 Skip installing gcc via Homebrew Change job name commit02cdd9d759
Author: Shriraj Hegde <shriraj.hegde@gmail.com> Date: Sat Oct 9 21:30:40 2021 +0530 Fix uploading Remove distclean commit39eb6c396f
Author: Shriraj Hegde <shriraj.hegde@gmail.com> Date: Sat Oct 9 21:26:57 2021 +0530 Disable static compilation commit099592bccd
Author: aristocratos <admin@qvantnet.com> Date: Sat Oct 9 17:52:10 2021 +0200 Ignore empty pid 0 to fix tree mode commita28e17556e
Author: Shriraj Hegde <shriraj.hegde@gmail.com> Date: Sat Oct 9 21:17:11 2021 +0530 Add workflow for MacOS commitaee9179c0a
Author: aristocratos <admin@qvantnet.com> Date: Sat Oct 9 17:36:46 2021 +0200 Disable failed tty mode detection for OSX commit4b7b98058d
Author: aristocratos <admin@qvantnet.com> Date: Sat Oct 9 11:28:32 2021 +0200 Fixed disk io and added io activity based on read/write commitbfa0629e7d
Author: Jos Dehaes <jos.dehaes@gmail.com> Date: Fri Oct 8 22:28:10 2021 +0200 fill in 0 for ioticks commita016ff8a03
Author: Jos Dehaes <jos.dehaes@gmail.com> Date: Fri Oct 8 22:16:01 2021 +0200 disk io from IOreg. Does not show any io though commitf98606c6db
Author: Jos Dehaes <jos.dehaes@gmail.com> Date: Fri Oct 8 09:32:06 2021 +0200 per process IO stats commitc8b50ed488
Author: Jos Dehaes <jos.dehaes@gmail.com> Date: Fri Oct 8 00:11:08 2021 +0200 don't show autofs, it's useless commitc4df64d440
Author: aristocratos <admin@qvantnet.com> Date: Thu Oct 7 18:41:49 2021 +0200 Fixed compile time display for gmake and command timings commitb3e6f495f7
Author: aristocratos <admin@qvantnet.com> Date: Thu Oct 7 18:26:15 2021 +0200 Fixed clk_tck -> clkTck commite53799188f
Author: aristocratos <admin@qvantnet.com> Date: Thu Oct 7 18:25:14 2021 +0200 Fixed better detection for OSX commitb864edf984
Author: aristocratos <admin@qvantnet.com> Date: Thu Oct 7 18:24:37 2021 +0200 Fixed cumulative cpu usage commit6a3c5d9b97
Author: aristocratos <admin@qvantnet.com> Date: Thu Oct 7 13:20:30 2021 +0200 Proc::collect() better cpu percent accurazy commit84d0596294
Merge:3564f8e
98e1e87
Author: aristocratos <admin@qvantnet.com> Date: Thu Oct 7 12:56:55 2021 +0200 Merge branch 'OSX' of github.com:aristocratos/btop into OSX commit3564f8e4c2
Author: aristocratos <admin@qvantnet.com> Date: Thu Oct 7 12:56:27 2021 +0200 Proc::collect() fixed cputimes and cpu percentage calc commit98e1e87405
Merge:60c5636
d96fdd7
Author: Jos Dehaes <jos.dehaes@gmail.com> Date: Thu Oct 7 11:32:41 2021 +0200 Merge branch 'main' into OSX commit60c5636cd7
Author: Jos Dehaes <jos.dehaes@gmail.com> Date: Wed Oct 6 22:45:54 2021 +0200 fix warning commit489e446152
Author: Jos Dehaes <jos.dehaes@gmail.com> Date: Wed Oct 6 22:38:40 2021 +0200 details + process states commit7e5a808c73
Author: Jos Dehaes <jos.dehaes@gmail.com> Date: Wed Oct 6 22:38:19 2021 +0200 avoid details crash commit9c9da4606b
Author: Jos Dehaes <jos.dehaes@gmail.com> Date: Wed Oct 6 21:03:21 2021 +0200 fix quit on macos commitec7415384d
Author: Jos Dehaes <jos.dehaes@gmail.com> Date: Wed Oct 6 00:41:37 2021 +0200 fix mistake in makefile commit5ac8fa4c8a
Author: Jos Dehaes <jos.dehaes@gmail.com> Date: Wed Oct 6 18:56:13 2021 +0200 don't show /dev commitd901bbebd9
Author: aristocratos <gnmjpl@gmail.com> Date: Wed Oct 6 17:27:51 2021 +0200 Ignore tags and other branches commitc7f1e71e29
Author: Jos Dehaes <jos.dehaes@gmail.com> Date: Wed Oct 6 16:00:41 2021 +0200 comment commitb9d58e3faf
Author: Jos Dehaes <jos.dehaes@gmail.com> Date: Wed Oct 6 15:55:58 2021 +0200 impossible to get CPU freq on M1 apparently commit66072711c2
Author: Jos Dehaes <jos.dehaes@gmail.com> Date: Wed Oct 6 15:33:43 2021 +0200 detect full commit6bb0e930a2
Author: Jos Dehaes <jos.dehaes@gmail.com> Date: Wed Oct 6 00:38:46 2021 +0200 CPU freq in GHz commita5f10f1a0f
Author: Jos Dehaes <jos.dehaes@gmail.com> Date: Wed Oct 6 15:13:18 2021 +0200 check array length commit155c848b97
Author: Jos Dehaes <jos.dehaes@gmail.com> Date: Wed Oct 6 15:05:20 2021 +0200 switch to other way to get CPU freq (still does not work) commitcf51ba2ebe
Author: Jos Dehaes <jos.dehaes@gmail.com> Date: Wed Oct 6 14:45:44 2021 +0200 remove some warnings commit775dff5f72
Author: Jos Dehaes <jos.dehaes@gmail.com> Date: Wed Oct 6 14:16:45 2021 +0200 fix link commit8c67967775
Author: Jos Dehaes <jos.dehaes@gmail.com> Date: Wed Oct 6 14:16:38 2021 +0200 reduce diff more commit70b47d2ca8
Author: Jos Dehaes <jos.dehaes@gmail.com> Date: Wed Oct 6 14:10:23 2021 +0200 reduce diff with main branch commitca9cb48054
Merge:d0c6c0a
c66b46f
Author: Jos Dehaes <jos.dehaes@gmail.com> Date: Wed Oct 6 13:49:20 2021 +0200 Merge remote-tracking branch 'origin/main' into OSX commitc66b46f850
Author: Jos Dehaes <jos.dehaes@gmail.com> Date: Wed Oct 6 13:41:57 2021 +0200 battery state via CoreFoundation commitd0c6c0a362
Author: Jos Dehaes <jos.dehaes@gmail.com> Date: Wed Oct 6 10:51:36 2021 +0200 all disks + load averages commitca67526dc1
Author: Jos Dehaes <jos.dehaes@gmail.com> Date: Wed Oct 6 10:33:55 2021 +0200 show all disks commit56119f99a9
Author: Jos Dehaes <jos.dehaes@gmail.com> Date: Wed Oct 6 00:17:41 2021 +0200 procs sorting/filtering commit8d86011d72
Author: Jos Dehaes <jos.dehaes@gmail.com> Date: Tue Oct 5 23:42:17 2021 +0200 battery states commita9b64d62e4
Author: Jos Dehaes <jos.dehaes@gmail.com> Date: Tue Oct 5 23:24:59 2021 +0200 battery hack works on M1 commitce51031142
Author: Jos Dehaes <jos.dehaes@gmail.com> Date: Tue Oct 5 23:18:22 2021 +0200 ugly hack to get battery commitd5e6725c6c
Author: Jos Dehaes <jos.dehaes@gmail.com> Date: Tue Oct 5 22:42:42 2021 +0200 CPU stuff commit5c02bd8c83
Author: Jos Dehaes <jos.dehaes@gmail.com> Date: Tue Oct 5 21:25:42 2021 +0200 network commitd5da9d4983
Author: Jos Dehaes <jos.dehaes@gmail.com> Date: Tue Oct 5 15:43:05 2021 +0200 correct cached size commit5f11aba504
Author: Jos Dehaes <jos.dehaes@gmail.com> Date: Tue Oct 5 12:03:48 2021 +0200 vm stats from syscall + swap commit776fc96852
Author: Jos Dehaes <jos.dehaes@gmail.com> Date: Tue Oct 5 10:48:07 2021 +0200 seems to work indeed commit7b40e2835a
Author: Jos Dehaes <jos.dehaes@gmail.com> Date: Tue Oct 5 10:46:14 2021 +0200 allow override optimization flag commit005ea24e4c
Author: Jos Dehaes <jos.dehaes@gmail.com> Date: Tue Oct 5 10:09:24 2021 +0200 update Makefile commitaf8cec9deb
Author: Jos Dehaes <jos.dehaes@gmail.com> Date: Mon Oct 4 15:32:55 2021 +0200 some more params commit7ebe4f7594
Author: Jos Dehaes <jos.dehaes@gmail.com> Date: Mon Oct 4 15:15:55 2021 +0200 show more disks commite50a56394a
Author: Jos Dehaes <jos.dehaes@gmail.com> Date: Mon Oct 4 14:52:56 2021 +0200 disks show something commit6497a8c202
Author: Jos Dehaes <jos.dehaes@gmail.com> Date: Mon Oct 4 09:15:35 2021 +0200 reformat commit28e152b80c
Author: Jos Dehaes <jos.dehaes@gmail.com> Date: Sun Oct 3 23:21:13 2021 +0200 decrease diff with upstream commit40da88e9ca
Author: Jos Dehaes <jos.dehaes@gmail.com> Date: Sun Oct 3 22:56:14 2021 +0200 try to get disks to show commiteaf2bb56a5
Author: Jos Dehaes <jos.dehaes@gmail.com> Date: Sun Oct 3 22:42:01 2021 +0200 don't crash on deque::back() commitf66b6f712c
Author: Jos Dehaes <jos.dehaes@gmail.com> Date: Sun Oct 3 22:08:21 2021 +0200 cpu freq, name & process uid/name commit34a8a61f4d
Author: Jos Dehaes <jos.dehaes@gmail.com> Date: Sun Oct 3 21:46:11 2021 +0200 basic process info commit29bb2dcc5f
Author: Jos Dehaes <jos.dehaes@gmail.com> Date: Sun Oct 3 21:45:39 2021 +0200 initialize mutex (needed on macos apparently and not on linux) commitfb5970b000
Author: Jos Dehaes <jos.dehaes@gmail.com> Date: Sat Oct 2 23:53:41 2021 +0200 comment commit49d16cdddd
Author: Jos Dehaes <jos.dehaes@gmail.com> Date: Sat Oct 2 23:51:29 2021 +0200 extract delimiters commit3db9d66476
Author: Jos Dehaes <jos.dehaes@gmail.com> Date: Sat Oct 2 23:48:28 2021 +0200 first infos on macos: memory used & free commitf8acb2f854
Author: Jos Dehaes <jos.dehaes@gmail.com> Date: Tue Sep 28 23:37:03 2021 +0200 make it compile on macos (M1 - arm64). Does not run though commitbbba17cd35
Author: Jos Dehaes <jos.dehaes@gmail.com> Date: Wed Oct 6 10:51:36 2021 +0200 all disks + load averages commit548203e93d
Author: Jos Dehaes <jos.dehaes@gmail.com> Date: Wed Oct 6 10:33:55 2021 +0200 show all disks commit0ab2be3985
Author: Jos Dehaes <jos.dehaes@gmail.com> Date: Wed Oct 6 00:17:41 2021 +0200 procs sorting/filtering commit096104c90b
Author: Jos Dehaes <jos.dehaes@gmail.com> Date: Tue Oct 5 23:42:17 2021 +0200 battery states commit0ad93684c2
Author: Jos Dehaes <jos.dehaes@gmail.com> Date: Tue Oct 5 23:24:59 2021 +0200 battery hack works on M1 commitc75b0f1cea
Author: Jos Dehaes <jos.dehaes@gmail.com> Date: Tue Oct 5 23:18:22 2021 +0200 ugly hack to get battery commit600b4f72b3
Author: Jos Dehaes <jos.dehaes@gmail.com> Date: Tue Oct 5 22:42:42 2021 +0200 CPU stuff commit4eb812d52c
Author: Jos Dehaes <jos.dehaes@gmail.com> Date: Tue Oct 5 21:25:42 2021 +0200 network commit899be68a78
Author: Jos Dehaes <jos.dehaes@gmail.com> Date: Tue Oct 5 15:43:05 2021 +0200 correct cached size commita1c7f935e3
Author: Jos Dehaes <jos.dehaes@gmail.com> Date: Tue Oct 5 12:03:48 2021 +0200 vm stats from syscall + swap commitbd1050a740
Author: Jos Dehaes <jos.dehaes@gmail.com> Date: Tue Oct 5 10:48:07 2021 +0200 seems to work indeed commit5094b73758
Author: Jos Dehaes <jos.dehaes@gmail.com> Date: Tue Oct 5 10:46:14 2021 +0200 allow override optimization flag commit8811270332
Author: Jos Dehaes <jos.dehaes@gmail.com> Date: Tue Oct 5 10:09:24 2021 +0200 update Makefile commit42f966f448
Author: Jos Dehaes <jos.dehaes@gmail.com> Date: Mon Oct 4 15:32:55 2021 +0200 some more params commitc1e6d6a62e
Author: Jos Dehaes <jos.dehaes@gmail.com> Date: Mon Oct 4 15:15:55 2021 +0200 show more disks commit50fcdaa854
Author: Jos Dehaes <jos.dehaes@gmail.com> Date: Mon Oct 4 14:52:56 2021 +0200 disks show something commit264bf2d7da
Author: Jos Dehaes <jos.dehaes@gmail.com> Date: Mon Oct 4 09:15:35 2021 +0200 reformat commit1fd625086b
Author: Jos Dehaes <jos.dehaes@gmail.com> Date: Sun Oct 3 23:21:13 2021 +0200 decrease diff with upstream commit17f9f3703c
Author: Jos Dehaes <jos.dehaes@gmail.com> Date: Sun Oct 3 22:56:14 2021 +0200 try to get disks to show commit8462ae6431
Author: Jos Dehaes <jos.dehaes@gmail.com> Date: Sun Oct 3 22:42:01 2021 +0200 don't crash on deque::back() commit78bce5b5a6
Merge:53e379d
f9505a4
Author: Jos Dehaes <jos.dehaes@gmail.com> Date: Sun Oct 3 22:08:34 2021 +0200 Merge branch 'aristocratos:main' into main commit53e379d74d
Author: Jos Dehaes <jos.dehaes@gmail.com> Date: Sun Oct 3 22:08:21 2021 +0200 cpu freq, name & process uid/name commit2a44b307ef
Author: Jos Dehaes <jos.dehaes@gmail.com> Date: Sun Oct 3 21:46:11 2021 +0200 basic process info commit66534eb5b5
Author: Jos Dehaes <jos.dehaes@gmail.com> Date: Sun Oct 3 21:45:39 2021 +0200 initialize mutex (needed on macos apparently and not on linux) commit0983917f26
Author: Jos Dehaes <jos.dehaes@gmail.com> Date: Sat Oct 2 23:53:41 2021 +0200 comment commit9732507248
Author: Jos Dehaes <jos.dehaes@gmail.com> Date: Sat Oct 2 23:51:29 2021 +0200 extract delimiters commit6e704ce838
Merge:fe4db7c
7bfbd83
Author: Jos Dehaes <jos.dehaes@gmail.com> Date: Sat Oct 2 23:48:43 2021 +0200 Merge branch 'main' of github.com:joske/btop commitfe4db7c16c
Author: Jos Dehaes <jos.dehaes@gmail.com> Date: Sat Oct 2 23:48:28 2021 +0200 first infos on macos: memory used & free commit7bfbd83a47
Merge:8c8139b
a15f961
Author: Jos Dehaes <jos.dehaes@gmail.com> Date: Fri Oct 1 17:05:26 2021 +0200 Merge branch 'aristocratos:main' into main commit8c8139bd1d
Merge:679d21c
a246c09
Author: Jos Dehaes <jos.dehaes@gmail.com> Date: Wed Sep 29 21:50:00 2021 +0200 Merge branch 'aristocratos:main' into main commit679d21cd22
Merge:4c70c5b
a49b8f9
Author: Jos Dehaes <jos.dehaes@gmail.com> Date: Wed Sep 29 20:23:34 2021 +0200 Merge branch 'aristocratos:main' into main commit4c70c5bdd9
Merge:84a9746
c70667e
Author: Jos Dehaes <jos.dehaes@gmail.com> Date: Wed Sep 29 08:30:05 2021 +0200 Merge branch 'aristocratos:main' into main commit84a974695a
Author: Jos Dehaes <jos.dehaes@gmail.com> Date: Tue Sep 28 23:37:03 2021 +0200 make it compile on macos (M1 - arm64). Does not run though Co-authored-by: Jos Dehaes <jos.dehaes@gmail.com>
327 lines
12 KiB
C++
327 lines
12 KiB
C++
/* Copyright 2021 Aristocratos (jakob@qvantnet.com)
|
|
|
|
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.
|
|
|
|
indent = tab
|
|
tab-size = 4
|
|
*/
|
|
|
|
#pragma once
|
|
|
|
#include <string>
|
|
#include <vector>
|
|
#include <array>
|
|
#include <atomic>
|
|
#include <filesystem>
|
|
#include <ranges>
|
|
#include <chrono>
|
|
#include <thread>
|
|
#include <tuple>
|
|
#include <pthread.h>
|
|
#include <limits.h>
|
|
#ifndef HOST_NAME_MAX
|
|
#ifdef __APPLE__
|
|
#define HOST_NAME_MAX 255
|
|
#else
|
|
#define HOST_NAME_MAX 64
|
|
#endif
|
|
#endif
|
|
|
|
using std::string, std::vector, std::atomic, std::to_string, std::tuple, std::array;
|
|
|
|
|
|
//? ------------------------------------------------- NAMESPACES ------------------------------------------------------
|
|
|
|
//* Collection of escape codes for text style and formatting
|
|
namespace Fx {
|
|
const string e = "\x1b["; //* Escape sequence start
|
|
const string b = e + "1m"; //* Bold on/off
|
|
const string ub = e + "22m"; //* Bold off
|
|
const string d = e + "2m"; //* Dark on
|
|
const string ud = e + "22m"; //* Dark off
|
|
const string i = e + "3m"; //* Italic on
|
|
const string ui = e + "23m"; //* Italic off
|
|
const string ul = e + "4m"; //* Underline on
|
|
const string uul = e + "24m"; //* Underline off
|
|
const string bl = e + "5m"; //* Blink on
|
|
const string ubl = e + "25m"; //* Blink off
|
|
const string s = e + "9m"; //* Strike/crossed-out on
|
|
const string us = e + "29m"; //* Strike/crossed-out on/off
|
|
|
|
//* Reset foreground/background color and text effects
|
|
const string reset_base = e + "0m";
|
|
|
|
//* Reset text effects and restore theme foregrund and background color
|
|
extern string reset;
|
|
|
|
//* Return a string with all colors and text styling removed
|
|
string uncolor(const string& s);
|
|
|
|
}
|
|
|
|
//* Collection of escape codes and functions for cursor manipulation
|
|
namespace Mv {
|
|
//* Move cursor to <line>, <column>
|
|
inline string to(const int& line, const int& col) { return Fx::e + to_string(line) + ';' + to_string(col) + 'f'; }
|
|
|
|
//* Move cursor right <x> columns
|
|
inline string r(const int& x) { return Fx::e + to_string(x) + 'C'; }
|
|
|
|
//* Move cursor left <x> columns
|
|
inline string l(const int& x) { return Fx::e + to_string(x) + 'D'; }
|
|
|
|
//* Move cursor up x lines
|
|
inline string u(const int& x) { return Fx::e + to_string(x) + 'A'; }
|
|
|
|
//* Move cursor down x lines
|
|
inline string d(const int& x) { return Fx::e + to_string(x) + 'B'; }
|
|
|
|
//* Save cursor position
|
|
const string save = Fx::e + "s";
|
|
|
|
//* Restore saved cursor postion
|
|
const string restore = Fx::e + "u";
|
|
}
|
|
|
|
//* Collection of escape codes and functions for terminal manipulation
|
|
namespace Term {
|
|
extern atomic<bool> initialized;
|
|
extern atomic<int> width;
|
|
extern atomic<int> height;
|
|
extern string fg, bg, current_tty;
|
|
|
|
const string hide_cursor = Fx::e + "?25l";
|
|
const string show_cursor = Fx::e + "?25h";
|
|
const string alt_screen = Fx::e + "?1049h";
|
|
const string normal_screen = Fx::e + "?1049l";
|
|
const string clear = Fx::e + "2J" + Fx::e + "0;0f";
|
|
const string clear_end = Fx::e + "0J";
|
|
const string clear_begin = Fx::e + "1J";
|
|
const string mouse_on = Fx::e + "?1002h" + Fx::e + "?1015h" + Fx::e + "?1006h"; //? Enable reporting of mouse position on click and release
|
|
const string mouse_off = Fx::e + "?1002l" + Fx::e + "?1015l" + Fx::e + "?1006l";
|
|
const string mouse_direct_on = Fx::e + "?1003h"; //? Enable reporting of mouse position at any movement
|
|
const string mouse_direct_off = Fx::e + "?1003l";
|
|
const string sync_start = Fx::e + "?2026h"; //? Start of terminal synchronized output
|
|
const string sync_end = Fx::e + "?2026l"; //? End of terminal synchronized output
|
|
|
|
//* Returns true if terminal has been resized and updates width and height
|
|
bool refresh(bool only_check=false);
|
|
|
|
//* Returns an array with the lowest possible width, height with current box config
|
|
auto get_min_size(const string& boxes) -> array<int, 2>;
|
|
|
|
//* Check for a valid tty, save terminal options and set new options
|
|
bool init();
|
|
|
|
//* Restore terminal options
|
|
void restore();
|
|
}
|
|
|
|
//? --------------------------------------------------- FUNCTIONS -----------------------------------------------------
|
|
|
|
namespace Tools {
|
|
constexpr auto SSmax = std::numeric_limits<std::streamsize>::max();
|
|
extern atomic<int> active_locks;
|
|
|
|
//* Return number of UTF8 characters in a string (wide=true counts UTF-8 characters with a width > 1 as 2 characters)
|
|
inline size_t ulen(const string& str, const bool wide=false) {
|
|
return std::ranges::count_if(str, [](char c) { return (static_cast<unsigned char>(c) & 0xC0) != 0x80; })
|
|
+ (wide ? std::ranges::count_if(str, [](char c) { return (static_cast<unsigned char>(c) > 0xef); }) : 0);
|
|
}
|
|
|
|
//* Resize a string consisting of UTF8 characters (only reduces size)
|
|
string uresize(const string str, const size_t len, const bool wide=false);
|
|
|
|
//* Resize a string consisting of UTF8 characters from left (only reduces size)
|
|
string luresize(const string str, const size_t len, const bool wide=false);
|
|
|
|
//* Replace <from> in <str> with <to> and return new string
|
|
string s_replace(const string& str, const string& from, const string& to);
|
|
|
|
//* Capatilize <str>
|
|
inline string capitalize(string str) {
|
|
str.at(0) = toupper(str.at(0));
|
|
return str;
|
|
}
|
|
|
|
//* Return <str> with only uppercase characters
|
|
inline string str_to_upper(string str) {
|
|
std::ranges::for_each(str, [](auto& c) { c = ::toupper(c); } );
|
|
return str;
|
|
}
|
|
|
|
//* Return <str> with only lowercase characters
|
|
inline string str_to_lower(string str) {
|
|
std::ranges::for_each(str, [](char& c) { c = ::tolower(c); } );
|
|
return str;
|
|
}
|
|
|
|
//* Check if vector <vec> contains value <find_val>
|
|
template <typename T, typename T2>
|
|
inline bool v_contains(const vector<T>& vec, const T2& find_val) {
|
|
return std::ranges::find(vec, find_val) != vec.end();
|
|
}
|
|
|
|
//* Check if string <str> contains value <find_val>
|
|
template <typename T>
|
|
inline bool s_contains(const string& str, const T& find_val) {
|
|
return str.find(find_val) != string::npos;
|
|
}
|
|
|
|
//* Return index of <find_val> from vector <vec>, returns size of <vec> if <find_val> is not present
|
|
template <typename T>
|
|
inline size_t v_index(const vector<T>& vec, const T& find_val) {
|
|
return std::ranges::distance(vec.begin(), std::ranges::find(vec, find_val));
|
|
}
|
|
|
|
//* Compare <first> with all following values
|
|
template<typename First, typename ... T>
|
|
inline bool is_in(const First& first, const T& ... t) {
|
|
return ((first == t) or ...);
|
|
}
|
|
|
|
//* Return current time since epoch in seconds
|
|
inline uint64_t time_s() {
|
|
return std::chrono::duration_cast<std::chrono::seconds>(std::chrono::system_clock::now().time_since_epoch()).count();
|
|
}
|
|
|
|
//* Return current time since epoch in milliseconds
|
|
inline uint64_t time_ms() {
|
|
return std::chrono::duration_cast<std::chrono::milliseconds>(std::chrono::system_clock::now().time_since_epoch()).count();
|
|
}
|
|
|
|
//* Return current time since epoch in microseconds
|
|
inline uint64_t time_micros() {
|
|
return std::chrono::duration_cast<std::chrono::microseconds>(std::chrono::system_clock::now().time_since_epoch()).count();
|
|
}
|
|
|
|
//* Check if a string is a valid bool value
|
|
inline bool isbool(const string& str) {
|
|
return is_in(str, "true", "false", "True", "False");
|
|
}
|
|
|
|
//* Convert string to bool, returning any value not equal to "true" or "True" as false
|
|
inline bool stobool(const string& str) {
|
|
return is_in(str, "true", "True");
|
|
}
|
|
|
|
//* Check if a string is a valid integer value (only postive)
|
|
inline bool isint(const string& str) {
|
|
return all_of(str.begin(), str.end(), ::isdigit);
|
|
}
|
|
|
|
//* Left-trim <t_str> from <str> and return new string
|
|
string ltrim(const string& str, const string& t_str = " ");
|
|
|
|
//* Right-trim <t_str> from <str> and return new string
|
|
string rtrim(const string& str, const string& t_str = " ");
|
|
|
|
//* Left/right-trim <t_str> from <str> and return new string
|
|
inline string trim(const string& str, const string& t_str = " ") {
|
|
return ltrim(rtrim(str, t_str), t_str);
|
|
}
|
|
|
|
//* Split <string> at all occurrences of <delim> and return as vector of strings
|
|
auto ssplit(const string& str, const char& delim = ' ') -> vector<string>;
|
|
|
|
//* Put current thread to sleep for <ms> milliseconds
|
|
inline void sleep_ms(const size_t& ms) { std::this_thread::sleep_for(std::chrono::milliseconds(ms)); }
|
|
|
|
//* Put current thread to sleep for <micros> microseconds
|
|
inline void sleep_micros(const size_t& micros) { std::this_thread::sleep_for(std::chrono::microseconds(micros)); }
|
|
|
|
//* Left justify string <str> if <x> is greater than <str> length, limit return size to <x> by default
|
|
string ljust(string str, const size_t x, const bool utf=false, const bool wide=false, const bool limit=true);
|
|
|
|
//* Right justify string <str> if <x> is greater than <str> length, limit return size to <x> by default
|
|
string rjust(string str, const size_t x, const bool utf=false, const bool wide=false, const bool limit=true);
|
|
|
|
//* Center justify string <str> if <x> is greater than <str> length, limit return size to <x> by default
|
|
string cjust(string str, const size_t x, const bool utf=false, const bool wide=false, const bool limit=true);
|
|
|
|
//* Replace whitespaces " " with escape code for move right
|
|
string trans(const string& str);
|
|
|
|
//* Convert seconds to format "<days>d <hours>:<minutes>:<seconds>" and return string
|
|
string sec_to_dhms(size_t seconds, bool no_days=false, bool no_seconds=false);
|
|
|
|
//* Scales up in steps of 1024 to highest positive value unit and returns string with unit suffixed
|
|
//* bit=True or defaults to bytes
|
|
//* start=int to set 1024 multiplier starting unit
|
|
//* short=True always returns 0 decimals and shortens unit to 1 character
|
|
string floating_humanizer(uint64_t value, const bool shorten=false, size_t start=0, const bool bit=false, const bool per_second=false);
|
|
|
|
//* Add std::string operator * : Repeat string <str> <n> number of times
|
|
std::string operator*(const string& str, int64_t n);
|
|
|
|
//* Return current time in <strf> format
|
|
string strf_time(const string& strf);
|
|
|
|
string hostname();
|
|
string username();
|
|
|
|
static inline void busy_wait (void) {
|
|
#if defined __i386__ || defined __x86_64__
|
|
__builtin_ia32_pause();
|
|
#elif defined __ia64__
|
|
__asm volatile("hint @pause" : : : "memory");
|
|
#elif defined __sparc__ && (defined __arch64__ || defined __sparc_v9__)
|
|
__asm volatile("membar #LoadLoad" : : : "memory");
|
|
#else
|
|
__asm volatile("" : : : "memory");
|
|
#endif
|
|
}
|
|
|
|
void atomic_wait(const atomic<bool>& atom, const bool old=true) noexcept;
|
|
|
|
void atomic_wait_for(const atomic<bool>& atom, const bool old=true, const uint64_t wait_ms=0) noexcept;
|
|
|
|
//* Waits for atomic<bool> to be false and sets it to true on construct, sets to false on destruct
|
|
class atomic_lock {
|
|
atomic<bool>& atom;
|
|
bool not_true = false;
|
|
public:
|
|
atomic_lock(atomic<bool>& atom, bool wait=false);
|
|
~atomic_lock();
|
|
};
|
|
|
|
//* Read a complete file and return as a string
|
|
string readfile(const std::filesystem::path& path, const string& fallback="");
|
|
|
|
//* Convert a celsius value to celsius, fahrenheit, kelvin or rankin and return tuple with new value and unit.
|
|
auto celsius_to(const long long& celsius, const string& scale) -> tuple<long long, string>;
|
|
|
|
}
|
|
|
|
//* Simple logging implementation
|
|
namespace Logger {
|
|
const vector<string> log_levels = {
|
|
"DISABLED",
|
|
"ERROR",
|
|
"WARNING",
|
|
"INFO",
|
|
"DEBUG",
|
|
};
|
|
extern std::filesystem::path logfile;
|
|
|
|
//* Set log level, valid arguments: "DISABLED", "ERROR", "WARNING", "INFO" and "DEBUG"
|
|
void set(const string& level);
|
|
|
|
void log_write(const size_t level, const string& msg);
|
|
inline void error(const string msg) { log_write(1, msg); }
|
|
inline void warning(const string msg) { log_write(2, msg); }
|
|
inline void info(const string msg) { log_write(3, msg); }
|
|
inline void debug(const string msg) { log_write(4, msg); }
|
|
}
|
|
|