Contents of /tags/mkinitrd-6_1_0/busybox/init/mesg.c
Parent Directory | Revision Log
Revision 820 -
(show annotations)
(download)
Fri Apr 24 19:09:57 2009 UTC (15 years, 5 months ago) by niro
File MIME type: text/plain
File size: 1038 byte(s)
Fri Apr 24 19:09:57 2009 UTC (15 years, 5 months ago) by niro
File MIME type: text/plain
File size: 1038 byte(s)
tagged 'mkinitrd-6_1_0'
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 "libbb.h" |
11 | |
12 | #ifdef USE_TTY_GROUP |
13 | #define S_IWGRP_OR_S_IWOTH S_IWGRP |
14 | #else |
15 | #define S_IWGRP_OR_S_IWOTH (S_IWGRP | S_IWOTH) |
16 | #endif |
17 | |
18 | int mesg_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE; |
19 | int mesg_main(int argc, char **argv) |
20 | { |
21 | struct stat sb; |
22 | const char *tty; |
23 | char c = 0; |
24 | |
25 | if (--argc == 0 |
26 | || (argc == 1 && ((c = **++argv) == 'y' || c == 'n')) |
27 | ) { |
28 | tty = ttyname(STDERR_FILENO); |
29 | if (tty == NULL) { |
30 | tty = "ttyname"; |
31 | } else if (stat(tty, &sb) == 0) { |
32 | mode_t m; |
33 | if (argc == 0) { |
34 | puts((sb.st_mode & (S_IWGRP|S_IWOTH)) ? "is y" : "is n"); |
35 | return EXIT_SUCCESS; |
36 | } |
37 | m = (c == 'y') ? sb.st_mode | S_IWGRP_OR_S_IWOTH |
38 | : sb.st_mode & ~(S_IWGRP|S_IWOTH); |
39 | if (chmod(tty, m) == 0) { |
40 | return EXIT_SUCCESS; |
41 | } |
42 | } |
43 | bb_simple_perror_msg_and_die(tty); |
44 | } |
45 | bb_show_usage(); |
46 | } |