hush/init/mesg.c
Denys Vlasenko 2ec91aead5 *: remove some uses of argc
function                                             old     new   delta
whoami_main                                           34      37      +3
logname_main                                          60      63      +3
hostid_main                                           35      38      +3
ttysize_main                                         136     135      -1
nmeter_main                                          673     672      -1
logger_main                                          387     386      -1
uuencode_main                                        330     328      -2
ifupdown_main                                       2125    2123      -2
mesg_main                                            158     155      -3
free_main                                            333     330      -3
cal_main                                             902     899      -3
acpid_main                                           443     440      -3
ar_main                                              196     189      -7
find_main                                            476     467      -9
ifconfig_main                                       1235    1221     -14
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 3/12 up/down: 9/-49)            Total: -40 bytes

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2010-01-04 14:15:38 +01:00

49 lines
1.0 KiB
C

/* vi: set sw=4 ts=4: */
/*
* mesg implementation for busybox
*
* Copyright (c) 2002 Manuel Novoa III <mjn3@codepoet.org>
*
* Licensed under the GPL v2 or later, see the file LICENSE in this tarball.
*/
#include "libbb.h"
#ifdef USE_TTY_GROUP
#define S_IWGRP_OR_S_IWOTH S_IWGRP
#else
#define S_IWGRP_OR_S_IWOTH (S_IWGRP | S_IWOTH)
#endif
int mesg_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE;
int mesg_main(int argc UNUSED_PARAM, char **argv)
{
struct stat sb;
const char *tty;
char c = 0;
argv++;
if (!argv[0]
|| (!argv[1] && ((c = argv[0][0]) == 'y' || c == 'n'))
) {
tty = xmalloc_ttyname(STDERR_FILENO);
if (tty == NULL) {
tty = "ttyname";
} else if (stat(tty, &sb) == 0) {
mode_t m;
if (c == 0) {
puts((sb.st_mode & (S_IWGRP|S_IWOTH)) ? "is y" : "is n");
return EXIT_SUCCESS;
}
m = (c == 'y') ? sb.st_mode | S_IWGRP_OR_S_IWOTH
: sb.st_mode & ~(S_IWGRP|S_IWOTH);
if (chmod(tty, m) == 0) {
return EXIT_SUCCESS;
}
}
bb_simple_perror_msg_and_die(tty);
}
bb_show_usage();
}