Magellan Linux

Contents of /trunk/mkinitrd-magellan/busybox/init/mesg.c

Parent Directory Parent Directory | Revision Log Revision Log


Revision 984 - (show annotations) (download)
Sun May 30 11:32:42 2010 UTC (13 years, 11 months ago) by niro
File MIME type: text/plain
File size: 1064 byte(s)
-updated to busybox-1.16.1 and enabled blkid/uuid support in default config
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 }