Date: Sat, 22 Dec 2007 00:12:39 +0100 From: "Pietro Cerutti" <gahr@gahr.ch> To: "FreeBSD gnats submit" <FreeBSD-gnats-submit@FreeBSD.org> Cc: screen-devel@gnu.org Subject: ports/118942: [patch] sysutils/screen print the PID of a session created in "detached" mode Message-ID: <1198278759.35483@gahrtop.localhost> Resent-Message-ID: <200712212320.lBLNK2Ii096541@freefall.freebsd.org>
next in thread | raw e-mail | index | archive | help
>Number: 118942 >Category: ports >Synopsis: [patch] sysutils/screen print the PID of a session created in "detached" mode >Confidential: no >Severity: non-critical >Priority: low >Responsible: freebsd-ports-bugs >State: open >Quarter: >Keywords: >Date-Required: >Class: change-request >Submitter-Id: current-users >Arrival-Date: Fri Dec 21 23:20:01 UTC 2007 >Closed-Date: >Last-Modified: >Originator: Pietro Cerutti >Release: FreeBSD 8.0-CURRENT i386 >Organization: >Environment: System: FreeBSD 8.0-CURRENT #18: Tue Dec 18 12:48:22 CET 2007 root@gahrtop.localhost:/usr/obj/usr/src/sys/MSI1034 >Description: The patch below adds the -P option to screen. This option is only used in conjunction with '-d -m' to print the PID of the screen session which has been created in "detached" mode. Example: > screen -dmP 35532 > screen -list There is a screen on: 35532..hostname (Detached) 1 Socket in /tmp/screens/S-username. >How-To-Repeat: >Fix: --- _screen.diff begins here --- --- Makefile.orig 2007-12-22 00:04:19.000000000 +0100 +++ Makefile 2007-12-22 00:04:26.000000000 +0100 @@ -7,7 +7,7 @@ PORTNAME= screen PORTVERSION= 4.0.3 -PORTREVISION= 1 +PORTREVISION= 2 CATEGORIES= sysutils MASTER_SITES= ftp://ftp.uni-erlangen.de/pub/utilities/screen/ \ http://komquats.com/distfiles/ \ --- /dev/null 2007-12-22 00:04:29.000000000 +0100 +++ files/patch-screen.c 2007-12-21 23:51:03.000000000 +0100 @@ -0,0 +1,33 @@ +--- screen.c.orig 2007-12-21 23:41:32.000000000 +0100 ++++ screen.c 2007-12-21 23:49:26.000000000 +0100 +@@ -340,6 +340,7 @@ + char *av0; + char socknamebuf[2 * MAXSTR]; + int mflag = 0; ++ int printpid = 0; + char *myname = (ac == 0) ? "screen" : av[0]; + char *SockDir; + struct stat st; +@@ -522,6 +523,9 @@ + } + ap = NULL; + break; ++ case 'P': /* print PID */ ++ printpid = 1; ++ break; + #ifdef HAVE_BRAILLE + case 'B': + bd.bd_start_braille = 1; +@@ -1141,8 +1145,11 @@ + case 0: + break; + default: +- if (detached) ++ if (detached) { ++ if (printpid) ++ printf("%d\n", MasterPid); + exit(0); ++ } + if (SockMatch) + sprintf(socknamebuf, "%d.%s", MasterPid, SockMatch); + else --- /dev/null 2007-12-22 00:04:29.000000000 +0100 +++ files/patch-help.c 2007-12-21 23:56:03.000000000 +0100 @@ -0,0 +1,10 @@ +--- help.c.orig 2007-12-21 23:54:57.000000000 +0100 ++++ help.c 2007-12-21 23:55:53.000000000 +0100 +@@ -70,6 +70,7 @@ + printf("-m ignore $STY variable, do create a new screen session.\n"); + printf("-O Choose optimal output rather than exact vt100 emulation.\n"); + printf("-p window Preselect the named window if it exists.\n"); ++ printf("-P Print PID of detached screen (when used with -d and -m).\n"); + printf("-q Quiet startup. Exits with non-zero return code if unsuccessful.\n"); + printf("-r Reattach to a detached screen process.\n"); + printf("-R Reattach if possible, otherwise start a new session.\n"); --- /dev/null 2007-12-22 00:04:29.000000000 +0100 +++ files/patch-doc_screen.1 2007-12-21 23:58:30.000000000 +0100 @@ -0,0 +1,15 @@ +--- doc/screen.1.orig 2007-12-21 23:57:50.000000000 +0100 ++++ doc/screen.1 2007-12-21 23:57:59.000000000 +0100 +@@ -266,10 +266,10 @@ + session or not. This flag has a special meaning in connection + with the `-d' option: + .TP 8 +-.B \-d \-m ++.B \-d \-m (\-P) + Start + .I screen +-in \*Qdetached\*U mode. This creates a new session but doesn't ++in \*Qdetached\*U mode (and print the PID of the created session). This creates a new session but doesn't + attach to it. This is useful for system startup scripts. + .TP 8 + .B \-D \-m --- /dev/null 2007-12-22 00:04:29.000000000 +0100 +++ files/patch-doc_screen.texinfo 2007-12-22 00:00:56.000000000 +0100 @@ -0,0 +1,13 @@ +--- doc/screen.texinfo.orig 2007-12-21 23:58:43.000000000 +0100 ++++ doc/screen.texinfo 2007-12-22 00:00:31.000000000 +0100 +@@ -351,6 +351,10 @@ + selects the blank window. As a special case for reattach, @samp{=} + brings up the windowlist on the blank window. + ++@item -P ++Print the PID of detached screen. This is meant to be used in ++conjunction with @samp{-d -m}. ++ + @item -q + Suppress printing of error messages. In combination with @samp{-ls} the exit + value is set as follows: 9 indicates a directory without sessions. 10 --- _screen.diff ends here --- >Release-Note: >Audit-Trail: >Unformatted:
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?1198278759.35483>