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 #include #include +#include #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++) {