[vdr] VDR 1.3.38 and "-u root"
Darren Salt
linux at youmustbejoking.demon.co.uk
Tue Jan 10 19:31:41 CET 2006
I demand that Oliver Friedrich may or may not have written...
[snip]
> And with 1.3.38 it is impossible to simply get the commandline help if
> no useraccount 'vdr' is present on the system and the user doesn't know
> the '-u' switch ...
The attached patch (or something similar) should help.
--
| Darren Salt | d youmustbejoking,demon,co,uk | nr. Ashington,
| Debian, | s zap,tartarus,org | Northumberland
| RISC OS | @ | Toon Army
| <URL:http://www.youmustbejoking.demon.co.uk/progs.packages.html>
The disks are getting full; purge a file today.
-------------- next part --------------
diff -urNad vdr-1.3.38~/vdr.c vdr-1.3.38/vdr.c
--- vdr-1.3.38~/vdr.c 2006-01-09 15:08:26.000000000 +0000
+++ vdr-1.3.38/vdr.c 2006-01-09 15:08:26.780107092 +0000
@@ -35,6 +35,7 @@
#include <sys/prctl.h>
#include <termios.h>
#include <unistd.h>
+#include <sys/types.h>
#include "audio.h"
#include "channels.h"
#include "config.h"
@@ -151,6 +152,9 @@
// Save terminal settings:
struct termios savedTm;
+
+ bool isroot = !getuid ();// || !getgid () || !geteuid () || !getegid ();
+
bool HasStdin = (tcgetpgrp(STDIN_FILENO) == getpid() || getppid() != (pid_t)1) && tcgetattr(STDIN_FILENO, &savedTm) == 0;
// Initiate locale:
@@ -226,6 +230,16 @@
};
int c;
+ if (isroot)
+ while ((c = getopt_long(argc, argv, "a:c:dD:E:g:hl:L:mp:P:r:s:t:u:v:Vw:", long_options, NULL)) != -1) {
+ switch (c) {
+ case 'h': DisplayHelp = true;
+ break;
+ case 'V': DisplayVersion = true;
+ break;
+ }
+ }
+ else
while ((c = getopt_long(argc, argv, "a:c:dD:E:g:hl:L:mp:P:r:s:t:u:v:Vw:", long_options, NULL)) != -1) {
switch (c) {
case 'a': AudioCommand = optarg;
@@ -349,14 +363,17 @@
return 2;
if (!SetCapSysTime())
return 2;
+ isroot = false;
}
// Help and version info:
if (DisplayHelp || DisplayVersion) {
+ if (!isroot) {
if (!PluginManager.HasPlugins())
PluginManager.AddPlugin("*"); // adds all available plugins
PluginManager.LoadPlugins();
+ }
if (DisplayHelp) {
printf("Usage: vdr [OPTIONS]\n\n" // for easier orientation, this is column 80|
" -a CMD, --audio=CMD send Dolby Digital audio to stdin of command CMD\n"
@@ -415,7 +432,7 @@
}
if (DisplayVersion)
printf("vdr (%s) - The Video Disk Recorder\n", VDRVERSION);
- if (PluginManager.HasPlugins()) {
+ if (!isroot && PluginManager.HasPlugins()) {
if (DisplayHelp)
printf("Plugins: vdr -P\"name [OPTIONS]\"\n\n");
for (int i = 0; ; i++) {
More information about the vdr
mailing list