Contents of /tags/mkinitrd-6_2_1/busybox/init/mesg.c
Parent Directory | Revision Log
Revision 999 -
(show annotations)
(download)
Sun May 30 12:16:23 2010 UTC (14 years, 4 months ago) by niro
File MIME type: text/plain
File size: 1064 byte(s)
Sun May 30 12:16:23 2010 UTC (14 years, 4 months ago) by niro
File MIME type: text/plain
File size: 1064 byte(s)
tagged 'mkinitrd-6_2_1'
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 UNUSED_PARAM, char **argv) |
20 | { |
21 | struct stat sb; |
22 | const char *tty; |
23 | char c = 0; |
24 | |
25 | argv++; |
26 | |
27 | if (!argv[0] |
28 | || (!argv[1] && ((c = argv[0][0]) == 'y' || c == 'n')) |
29 | ) { |
30 | tty = xmalloc_ttyname(STDERR_FILENO); |
31 | if (tty == NULL) { |
32 | tty = "ttyname"; |
33 | } else if (stat(tty, &sb) == 0) { |
34 | mode_t m; |
35 | if (c == 0) { |
36 | puts((sb.st_mode & (S_IWGRP|S_IWOTH)) ? "is y" : "is n"); |
37 | return EXIT_SUCCESS; |
38 | } |
39 | m = (c == 'y') ? sb.st_mode | S_IWGRP_OR_S_IWOTH |
40 | : sb.st_mode & ~(S_IWGRP|S_IWOTH); |
41 | if (chmod(tty, m) == 0) { |
42 | return EXIT_SUCCESS; |
43 | } |
44 | } |
45 | bb_simple_perror_msg_and_die(tty); |
46 | } |
47 | bb_show_usage(); |
48 | } |