From: bruceperens Date: Thu, 13 Mar 2014 21:29:38 +0000 (+0000) Subject: Put pastable commands in error messages. X-Git-Url: http://git.whiteaudio.com/gitweb/?a=commitdiff_plain;h=7eb9d3dc45c232945deb421a489e48b5bcf08d1b;p=freetel-svn-tracking.git Put pastable commands in error messages. git-svn-id: https://svn.code.sf.net/p/freetel/code@1438 01035d8c-6547-0410-b346-abe4f91aad63 --- diff --git a/freedv-server/source/big_main.cpp b/freedv-server/source/big_main.cpp index 7ba58c57..a9e306f8 100644 --- a/freedv-server/source/big_main.cpp +++ b/freedv-server/source/big_main.cpp @@ -88,9 +88,14 @@ static const struct option options[] = { { 0, 0, 0, 0 } }; +namespace FreeDV { + const char * program_name = 0; +}; + int main(int argc, char * * argv) { + FreeDV::program_name = argv[0]; Interfaces i; const DriverManager * const m = driver_manager(); diff --git a/freedv-server/source/drivers.h b/freedv-server/source/drivers.h index 0ab42bb8..9b13440c 100644 --- a/freedv-server/source/drivers.h +++ b/freedv-server/source/drivers.h @@ -5,6 +5,8 @@ /// Namespace used for all code in this program. namespace FreeDV { + /// This propogates argv[0] so that it can be used in error messages. + extern const char * program_name; /// The sample rate used by all audio interfaces in the program. /// the sound cards are in general driven at 48000 because that's diff --git a/freedv-server/source/platform/linux/scheduler.cpp b/freedv-server/source/platform/linux/scheduler.cpp index cc07ba57..2c33ed85 100644 --- a/freedv-server/source/platform/linux/scheduler.cpp +++ b/freedv-server/source/platform/linux/scheduler.cpp @@ -1,34 +1,39 @@ +#include "drivers.h" +#include +#include +#include #include +#include + #ifdef _POSIX_PRIORITY_SCHEDULING #include #endif + #ifdef _POSIX_MEMLOCK_RANGE #include #endif -#include -#include -#include -#include "drivers.h" -static const char insufficient_privilege_message[] = -"Warning: Insufficient privilege to set a real-time scheduling priority,\n" -"or to lock memory.\n" -"This could cause audio to be interrupted while other programs use the CPU.\n" -"To fix: As root, run\n" -"\n" -"\tsetcap cap_sys_nice+ep filename\n" -"\tsetcap cap_ipc_lock+ep filename\n" -"\n" -"where filename is the executable file for this program.\n" -"That will allow you to use a real-time scheduling priority and locked memory\n" -"while running as any user.\n" -"Alternatively, you can execute this program as root.\n"; -static const char old_kernel_message[] = -"This kernel doesn't seem to have real-time facilities or memory locking.\n" -"If audio is sometimes interrupted, try a newer kernel.\n"; namespace FreeDV { + static const char privilege_message_a[] = + "Warning: Insufficient privilege to set a real-time scheduling priority,\n" + "or to lock memory.\n" + "This could cause audio to be interrupted while other programs use the CPU.\n" + "To fix: As root, run\n" + "\n" + "\tsetcap cap_sys_nice+ep "; /* program_name */ + static const char privilege_message_b[] = "\n\tsetcap cap_ipc_lock+ep "; + /* program_name */ + static const char privilege_message_c[] = "\n\n" + "That will allow you to use a real-time scheduling priority and locked\n" + "memory while running as any user.\n" + "Alternatively, you can execute this program as root.\n\n"; + + static const char old_kernel_message[] = + "This kernel doesn't seem to have real-time facilities or memory locking.\n" + "If audio is sometimes interrupted, try a newer kernel.\n"; + void set_scheduler() { @@ -66,6 +71,10 @@ namespace FreeDV { if ( old_kernel ) std::cerr << old_kernel_message; else if ( insufficient_privilege ) - std::cerr << insufficient_privilege_message; + std::cerr << privilege_message_a; + std::cerr << program_name; + std::cerr << privilege_message_b; + std::cerr << program_name; + std::cerr << privilege_message_c; } }