chiark / gitweb /
cgi/cgimain.c: Make the CGI program be (a little) locale-aware.
[disorder] / disobedience / help.c
CommitLineData
13affe66
RK
1/*
2 * This file is part of DisOrder
5aff007d 3 * Copyright (C) 2007, 2008 Richard Kettlewell
13affe66 4 *
e7eb3a27 5 * This program is free software: you can redistribute it and/or modify
13affe66 6 * it under the terms of the GNU General Public License as published by
e7eb3a27 7 * the Free Software Foundation, either version 3 of the License, or
13affe66
RK
8 * (at your option) any later version.
9 *
e7eb3a27
RK
10 * This program is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 * GNU General Public License for more details.
14 *
13affe66 15 * You should have received a copy of the GNU General Public License
e7eb3a27 16 * along with this program. If not, see <http://www.gnu.org/licenses/>.
13affe66 17 */
8439fcfd
RK
18/** @file disobedience/help.c
19 * @brief Help support
20 */
13affe66
RK
21
22#include "disobedience.h"
f486ea18
RK
23#include <sys/wait.h>
24#include <unistd.h>
13affe66 25
f486ea18 26/** @brief Display the manual page */
ad424400 27void popup_help(const char *what) {
f486ea18
RK
28 char *path;
29 pid_t pid;
30 int w;
31
ad424400
RK
32 if(!what)
33 what = "index.html";
cc345694
RK
34#if __APPLE__
35 if(!strcmp(browser, "open"))
36 /* Apple's open(1) isn't really a web browser so needs some extra hints
37 * that it should see the argument as a URL. Otherwise it doesn't treat #
38 * specially. A better answer would be to identify the system web browser
39 * and invoke it directly. */
40 byte_xasprintf(&path, "file:///%s/%s", dochtmldir, what);
41 else
42#endif
43 byte_xasprintf(&path, "%s/%s", dochtmldir, what);
f486ea18
RK
44 if(!(pid = xfork())) {
45 exitfn = _exit;
46 if(!xfork()) {
47 execlp(browser, browser, path, (char *)0);
2e9ba080 48 disorder_fatal(errno, "error executing %s", browser);
f486ea18
RK
49 }
50 _exit(0);
13affe66 51 }
f486ea18
RK
52 while(waitpid(pid, &w, 0) < 0 && errno == EINTR)
53 ;
13affe66
RK
54}
55
56/*
57Local Variables:
58c-basic-offset:2
59comment-column:40
60fill-column:79
61indent-tabs-mode:nil
62End:
63*/