Pierre Ossman 5 месяцев назад
Родитель
Сommit
fc066ebfb1
2 измененных файлов: 39 добавлений и 9 удалений
  1. 29
    9
      unix/vncserver/vncsession.c
  2. 10
    0
      unix/vncserver/vncsession.man.in

+ 29
- 9
unix/vncserver/vncsession.c Просмотреть файл

@@ -503,6 +503,14 @@ run_script(const char *username, const char *display, char **envp)
_exit(EX_OSERR);
}

static void
usage(void)
{
fprintf(stderr, "Syntax:\n");
fprintf(stderr, " vncsession [-D] <username> <display>\n");
exit(EX_USAGE);
}

int
main(int argc, char **argv)
{
@@ -511,14 +519,23 @@ main(int argc, char **argv)

const char *username, *display;

if ((argc != 3) || (argv[2][0] != ':')) {
fprintf(stderr, "Syntax:\n");
fprintf(stderr, " %s <username> <display>\n", argv[0]);
return EX_USAGE;
int opt, forking = 1;

while ((opt = getopt(argc, argv, "D")) != -1) {
switch (opt) {
case 'D':
forking = 0;
break;
default:
usage();
}
}

username = argv[1];
display = argv[2];
if ((argc != optind + 2) || (argv[optind +1][0] != ':'))
usage();

username = argv[argc - 2];
display = argv[argc - 1];

if (geteuid() != 0) {
fprintf(stderr, "This program needs to be run as root!\n");
@@ -534,8 +551,10 @@ main(int argc, char **argv)
return EX_OSERR;
}

if (begin_daemon() == -1)
return EX_OSERR;
if (forking) {
if (begin_daemon() == -1)
return EX_OSERR;
}

openlog("vncsession", LOG_PID, LOG_AUTH);

@@ -586,7 +605,8 @@ main(int argc, char **argv)
fclose(f);
}

finish_daemon();
if (forking)
finish_daemon();

while (1) {
int status;

+ 10
- 0
unix/vncserver/vncsession.man.in Просмотреть файл

@@ -3,6 +3,7 @@
vncsession \- start a VNC server
.SH SYNOPSIS
.B vncsession
.RI [-D]
.RI < username >
.RI <: display# >
.SH DESCRIPTION
@@ -16,6 +17,15 @@ appropriate options and starts a window manager on the VNC desktop.
is rarely called directly and is normally started by the system service
manager.

.SH -D OPTION
.B vncsession
by default forks and detaches. If the -D option is used, it does not fork and
detach. This option is provided for use with system service managers that
require services to run in the foreground. This option is not intended for
debugging in a login shell from a terminal or for running
.B vncsession
from a terminal as an ordinary user.

.SH FILES
Several VNC-related files are found in the directory $HOME/.vnc:
.TP

Загрузка…
Отмена
Сохранить