source: MondoRescue/branches/stable/mindi-busybox/init/mesg.c @ 821

Last change on this file since 821 was 821, checked in by Bruno Cornec, 14 years ago

Addition of busybox 1.2.1 as a mindi-busybox new package
This should avoid delivering binary files in mindi not built there (Fedora and Debian are quite serious about that)

File size: 1014 bytes
Line 
1/* vi: set sw=4 ts=4: */
2/*
3 * mesg implementation for busybox
4 *
5 * Copyright (c) 2002 Manuel Novoa III  <mjn3@codepoet.org>
6 *
7 * Licensed under the GPL v2 or later, see the file LICENSE in this tarball.
8 */
9
10#include "busybox.h"
11#include <unistd.h>
12#include <stdlib.h>
13
14#ifdef USE_TTY_GROUP
15#define S_IWGRP_OR_S_IWOTH  S_IWGRP
16#else
17#define S_IWGRP_OR_S_IWOTH  (S_IWGRP | S_IWOTH)
18#endif
19
20int mesg_main(int argc, char *argv[])
21{
22    struct stat sb;
23    char *tty;
24    char c = 0;
25
26    if ((--argc == 0)
27        || ((argc == 1) && (((c = **++argv) == 'y') || (c == 'n')))) {
28        if ((tty = ttyname(STDERR_FILENO)) == NULL) {
29            tty = "ttyname";
30        } else if (stat(tty, &sb) == 0) {
31            if (argc == 0) {
32                puts(((sb.st_mode & (S_IWGRP | S_IWOTH)) ==
33                      0) ? "is n" : "is y");
34                return EXIT_SUCCESS;
35            }
36            if (chmod
37                (tty,
38                 (c ==
39                  'y') ? sb.st_mode | (S_IWGRP_OR_S_IWOTH) : sb.
40                 st_mode & ~(S_IWGRP | S_IWOTH)) == 0) {
41                return EXIT_SUCCESS;
42            }
43        }
44        bb_perror_msg_and_die("%s", tty);
45    }
46    bb_show_usage();
47}
Note: See TracBrowser for help on using the repository browser.