"Fossies" - the Fresh Open Source Software Archive

Member "dmd2/src/dmd/dmd/root/man.d" (20 Nov 2020, 2435 Bytes) of package /linux/misc/dmd.2.094.2.linux.tar.xz:


As a special service "Fossies" has tried to format the requested source page into HTML format using (guessed) D source code syntax highlighting (style: standard) with prefixed line numbers and code folding option. Alternatively you can here view or download the uninterpreted source code file.

    1 /**
    2  * Open an online manual page.
    3  *
    4  * Copyright: Copyright (C) 1999-2020 by The D Language Foundation, All Rights Reserved
    5  * Authors:   Walter Bright, http://www.digitalmars.com
    6  * License:   $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost License 1.0)
    7  * Source:    $(LINK2 https://github.com/dlang/dmd/blob/master/src/dmd/root/man.d, root/_man.d)
    8  * Documentation:  https://dlang.org/phobos/dmd_root_man.html
    9  * Coverage:    https://codecov.io/gh/dlang/dmd/src/master/src/dmd/root/man.d
   10  */
   11 
   12 module dmd.root.man;
   13 
   14 import core.stdc.stdio;
   15 import core.stdc.stdlib;
   16 import core.stdc.string;
   17 import core.sys.posix.unistd;
   18 import core.sys.windows.shellapi;
   19 import core.sys.windows.winuser;
   20 
   21 version (Windows)
   22 {
   23     extern (C++) void browse(const(char)* url) nothrow @nogc
   24     in
   25     {
   26         assert(strncmp(url, "http://", 7) == 0 || strncmp(url, "https://", 8) == 0);
   27     }
   28     do
   29     {
   30         ShellExecuteA(null, "open", url, null, null, SW_SHOWNORMAL);
   31     }
   32 }
   33 else version (OSX)
   34 {
   35     extern (C++) void browse(const(char)* url) nothrow @nogc
   36     in
   37     {
   38         assert(strncmp(url, "http://", 7) == 0 || strncmp(url, "https://", 8) == 0);
   39     }
   40     do
   41     {
   42         pid_t childpid;
   43         const(char)*[5] args;
   44         char* browser = getenv("BROWSER");
   45         if (browser)
   46         {
   47             browser = strdup(browser);
   48             args[0] = browser;
   49             args[1] = url;
   50             args[2] = null;
   51         }
   52         else
   53         {
   54             args[0] = "open";
   55             args[1] = url;
   56             args[2] = null;
   57         }
   58         childpid = fork();
   59         if (childpid == 0)
   60         {
   61             execvp(args[0], cast(char**)args);
   62             perror(args[0]); // failed to execute
   63             return;
   64         }
   65     }
   66 }
   67 else version (Posix)
   68 {
   69     extern (C++) void browse(const(char)* url) nothrow @nogc
   70     in
   71     {
   72         assert(strncmp(url, "http://", 7) == 0 || strncmp(url, "https://", 8) == 0);
   73     }
   74     do
   75     {
   76         pid_t childpid;
   77         const(char)*[3] args;
   78         const(char)* browser = getenv("BROWSER");
   79         if (browser)
   80             browser = strdup(browser);
   81         else
   82             browser = "xdg-open";
   83         args[0] = browser;
   84         args[1] = url;
   85         args[2] = null;
   86         childpid = fork();
   87         if (childpid == 0)
   88         {
   89             execvp(args[0], cast(char**)args);
   90             perror(args[0]); // failed to execute
   91             return;
   92         }
   93     }
   94 }