From dac7ff15b7d32deeeef3d9665744fc5774c21d70 Mon Sep 17 00:00:00 2001 From: Bernhard Reutner-Fischer Date: Wed, 12 Apr 2006 17:55:51 +0000 Subject: [PATCH] - patch from Denis Vlasenko to add and use bb_xsocket() and to use bb_xopen some more while at it. Also use shorter boilerplate while at it. --- archival/gzip.c | 4 +-- docs/new-applet-HOWTO.txt | 19 ++------------ include/libbb.h | 1 + libbb/Makefile.in | 1 + libbb/bb_xsocket.c | 18 +++++++++++++ libbb/xconnect.c | 2 +- networking/arping.c | 4 +-- networking/dnsd.c | 4 +-- networking/ether-wake.c | 12 +++------ networking/fakeidentd.c | 18 ++----------- networking/httpd.c | 40 +++++++++-------------------- networking/ifconfig.c | 14 +++------- networking/nc.c | 17 ++---------- networking/route.c | 15 +++-------- networking/telnetd.c | 12 +++------ networking/tftp.c | 54 +++++++++++++++------------------------ networking/traceroute.c | 12 +++------ networking/vconfig.c | 26 ++++--------------- sysklogd/syslogd.c | 13 ++-------- util-linux/fbset.c | 17 ++---------- util-linux/mkfs_minix.c | 7 ++--- util-linux/mkswap.c | 7 +++-- 22 files changed, 99 insertions(+), 218 deletions(-) create mode 100644 libbb/bb_xsocket.c diff --git a/archival/gzip.c b/archival/gzip.c index 41ed3a2c7..5fb118706 100644 --- a/archival/gzip.c +++ b/archival/gzip.c @@ -1228,8 +1228,8 @@ int gzip_main(int argc, char **argv) inFileNum = STDIN_FILENO; outFileNum = STDOUT_FILENO; } else { - inFileNum = open(argv[i], O_RDONLY); - if (inFileNum < 0 || fstat(inFileNum, &statBuf) < 0) + inFileNum = bb_xopen(argv[i], O_RDONLY); + if (fstat(inFileNum, &statBuf) < 0) bb_perror_msg_and_die("%s", argv[i]); time_stamp = statBuf.st_ctime; ifile_size = statBuf.st_size; diff --git a/docs/new-applet-HOWTO.txt b/docs/new-applet-HOWTO.txt index 24bc1d824..2f5702bd6 100644 --- a/docs/new-applet-HOWTO.txt +++ b/docs/new-applet-HOWTO.txt @@ -28,21 +28,7 @@ For a new applet mu, here is the code that would go in mu.c: * * Copyright (C) [YEAR] by [YOUR NAME] * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA - * 02111-1307 USA - * + * Licensed under GPLv2 or later, see file LICENSE in this tarball for details. */ #include "busybox.h" @@ -52,8 +38,7 @@ int mu_main(int argc, char **argv) int fd; char mu; - if ((fd = open("/dev/random", O_RDONLY)) < 0) - bb_perror_msg_and_die("/dev/random"); + fd = bb_xopen("/dev/random", O_RDONLY); if ((n = safe_read(fd, &mu, 1)) < 1) bb_perror_msg_and_die("/dev/random"); diff --git a/include/libbb.h b/include/libbb.h index d3634f95d..c031f2841 100644 --- a/include/libbb.h +++ b/include/libbb.h @@ -145,6 +145,7 @@ extern int bb_fclose_nonstdin(FILE *f); extern void bb_fflush_stdout_and_exit(int retval) ATTRIBUTE_NORETURN; extern void xstat(const char *filename, struct stat *buf); +extern int bb_xsocket(int domain, int type, int protocol); #define BB_GETOPT_ERROR 0x80000000UL extern const char *bb_opt_complementally; diff --git a/libbb/Makefile.in b/libbb/Makefile.in index de511fc9b..c69978370 100644 --- a/libbb/Makefile.in +++ b/libbb/Makefile.in @@ -30,6 +30,7 @@ LIBBB-y:= \ trim.c u_signal_names.c vdprintf.c verror_msg.c \ vherror_msg.c vperror_msg.c wfopen.c xconnect.c xgetcwd.c xstat.c \ xgethostbyname.c xgethostbyname2.c xreadlink.c xregcomp.c xgetlarg.c \ + bb_xsocket.c \ get_terminal_width_height.c fclose_nonstdin.c fflush_stdout_and_exit.c \ getopt_ulflags.c default_error_retval.c wfopen_input.c speed_table.c \ perror_nomsg_and_die.c perror_nomsg.c skip_whitespace.c bb_askpass.c \ diff --git a/libbb/bb_xsocket.c b/libbb/bb_xsocket.c new file mode 100644 index 000000000..839309ae1 --- /dev/null +++ b/libbb/bb_xsocket.c @@ -0,0 +1,18 @@ +/* vi: set sw=4 ts=4: */ +/* + * bb_xsocket.c - a socket() which dies on failure with error message + * + * Copyright (C) 2006 Denis Vlasenko + * + * Licensed under LGPL, see file docs/lesser.txt in this tarball for details. + */ +#include +#include "libbb.h" + +int bb_xsocket(int domain, int type, int protocol) +{ + int r = socket(domain, type, protocol); + if (r < 0) + bb_perror_msg_and_die("socket"); + return r; +} diff --git a/libbb/xconnect.c b/libbb/xconnect.c index ec99c5882..39052b87b 100644 --- a/libbb/xconnect.c +++ b/libbb/xconnect.c @@ -61,7 +61,7 @@ void bb_lookup_host(struct sockaddr_in *s_in, const char *host) int xconnect(struct sockaddr_in *s_addr) { - int s = socket(AF_INET, SOCK_STREAM, 0); + int s = bb_xsocket(AF_INET, SOCK_STREAM, 0); if (connect(s, (struct sockaddr *)s_addr, sizeof(struct sockaddr_in)) < 0) { if (ENABLE_FEATURE_CLEAN_UP) close(s); diff --git a/networking/arping.c b/networking/arping.c index 48c14f15c..721368273 100644 --- a/networking/arping.c +++ b/networking/arping.c @@ -1,4 +1,4 @@ -/* vi:set ts=4:*/ +/* vi: set sw=4 ts=4: */ /* * arping.c - Ping hosts by ARP requests/replies * @@ -358,7 +358,7 @@ int arping_main(int argc, char **argv) if (!(cfg&dad) || src.s_addr) { struct sockaddr_in saddr; - int probe_fd = socket(AF_INET, SOCK_DGRAM, 0); + int probe_fd = socket(AF_INET, SOCK_DGRAM, 0); /* maybe use bb_xsocket? */ if (probe_fd < 0) { bb_error_msg_and_die("socket"); diff --git a/networking/dnsd.c b/networking/dnsd.c index a815860ab..9c5193820 100644 --- a/networking/dnsd.c +++ b/networking/dnsd.c @@ -1,3 +1,4 @@ +/* vi: set sw=4 ts=4: */ /* * Mini DNS server implementation for busybox * @@ -204,8 +205,7 @@ listen_socket(char *iface_addr, int listen_port) char msg[100]; int s; int yes = 1; - if ((s = socket(PF_INET, SOCK_DGRAM, 0)) < 0) - bb_perror_msg_and_die("socket() failed"); + s = bb_xsocket(PF_INET, SOCK_DGRAM, 0); #ifdef SO_REUSEADDR if (setsockopt(s, SOL_SOCKET, SO_REUSEADDR, (char *)&yes, sizeof(yes)) < 0) bb_perror_msg_and_die("setsockopt() failed"); diff --git a/networking/ether-wake.c b/networking/ether-wake.c index 7d5f79b6a..b4fb0c2d1 100644 --- a/networking/ether-wake.c +++ b/networking/ether-wake.c @@ -1,10 +1,8 @@ +/* vi: set sw=4 ts=4: */ /* * ether-wake.c - Send a magic packet to wake up sleeping machines. * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation; either version - * 2 of the License, or (at your option) any later version. + * Licensed under GPLv2 or later, see file LICENSE in this tarball for details. * * Author: Donald Becker, http://www.scyld.com/"; http://www.scyld.com/wakeonlan.html * Busybox port: Christian Volkmann @@ -95,10 +93,10 @@ */ #ifdef PF_PACKET # define whereto_t sockaddr_ll -# define make_socket() socket(PF_PACKET, SOCK_RAW, 0) +# define make_socket() bb_xsocket(PF_PACKET, SOCK_RAW, 0) #else # define whereto_t sockaddr -# define make_socket() socket(AF_INET, SOCK_PACKET, SOCK_PACKET) +# define make_socket() bb_xsocket(AF_INET, SOCK_PACKET, SOCK_PACKET) #endif #ifdef DEBUG @@ -145,8 +143,6 @@ int etherwake_main(int argc, char *argv[]) /* create the raw socket */ s = make_socket(); - if (s < 0) - bb_perror_msg_and_die(bb_msg_can_not_create_raw_socket); /* now that we have a raw socket we can drop root */ setuid(getuid()); diff --git a/networking/fakeidentd.c b/networking/fakeidentd.c index 5442c22c2..26efdcb34 100644 --- a/networking/fakeidentd.c +++ b/networking/fakeidentd.c @@ -6,20 +6,7 @@ * Original Author: Tomi Ollila * http://www.guru-group.fi/~too/sw/ * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * + * Licensed under GPLv2 or later, see file LICENSE in this tarball for details. */ #include @@ -117,8 +104,7 @@ static void inetbind(void) else port = se->s_port; - if ((s = socket(AF_INET, SOCK_STREAM, 0)) < 0) - bb_perror_msg_and_die("Cannot create server socket"); + s = bb_xsocket(AF_INET, SOCK_STREAM, 0); setsockopt(s, SOL_SOCKET, SO_REUSEADDR, &one, sizeof(one)); diff --git a/networking/httpd.c b/networking/httpd.c index c89073a2a..fde8ae4bd 100644 --- a/networking/httpd.c +++ b/networking/httpd.c @@ -6,19 +6,7 @@ * * simplify patch stolen from libbb without using strdup * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * Licensed under GPLv2 or later, see file LICENSE in this tarball for details. * ***************************************************************************** * @@ -959,25 +947,21 @@ static int openServer(void) memset(&lsocket, 0, sizeof(lsocket)); lsocket.sin_family = AF_INET; lsocket.sin_addr.s_addr = INADDR_ANY; - lsocket.sin_port = htons(config->port) ; - fd = socket(AF_INET, SOCK_STREAM, 0); - if (fd >= 0) { - /* tell the OS it's OK to reuse a previous address even though */ - /* it may still be in a close down state. Allows bind to succeed. */ - int on = 1; + lsocket.sin_port = htons(config->port); + fd = bb_xsocket(AF_INET, SOCK_STREAM, 0); + /* tell the OS it's OK to reuse a previous address even though */ + /* it may still be in a close down state. Allows bind to succeed. */ + int on = 1; #ifdef SO_REUSEPORT - setsockopt(fd, SOL_SOCKET, SO_REUSEPORT, (void *)&on, sizeof(on)) ; + setsockopt(fd, SOL_SOCKET, SO_REUSEPORT, (void *)&on, sizeof(on)) ; #else - setsockopt(fd, SOL_SOCKET, SO_REUSEADDR, (void *)&on, sizeof(on)) ; + setsockopt(fd, SOL_SOCKET, SO_REUSEADDR, (void *)&on, sizeof(on)) ; #endif - if (bind(fd, (struct sockaddr *)&lsocket, sizeof(lsocket)) == 0) { - listen(fd, 9); - signal(SIGCHLD, SIG_IGN); /* prevent zombie (defunct) processes */ - } else { - bb_perror_msg_and_die("bind"); - } + if (bind(fd, (struct sockaddr *)&lsocket, sizeof(lsocket)) == 0) { + listen(fd, 9); + signal(SIGCHLD, SIG_IGN); /* prevent zombie (defunct) processes */ } else { - bb_perror_msg_and_die("create socket"); + bb_perror_msg_and_die("bind"); } return fd; } diff --git a/networking/ifconfig.c b/networking/ifconfig.c index 1e1bd83ee..7b358c43f 100644 --- a/networking/ifconfig.c +++ b/networking/ifconfig.c @@ -1,3 +1,4 @@ +/* vi: set sw=4 ts=4: */ /* ifconfig * * Similar to the standard Unix ifconfig, but with only the necessary @@ -9,14 +10,7 @@ * Authors of the original ifconfig was: * Fred N. van Kempen, * - * This program is free software; you can redistribute it - * and/or modify it under the terms of the GNU General - * Public License as published by the Free Software - * Foundation; either version 2 of the License, or (at - * your option) any later version. - * - * $Id: ifconfig.c,v 1.30 2004/03/31 11:30:08 andersen Exp $ - * + * Licensed under GPLv2 or later, see file LICENSE in this tarball for details. */ /* @@ -335,9 +329,7 @@ int ifconfig_main(int argc, char **argv) } /* Create a channel to the NET kernel. */ - if ((sockfd = socket(AF_INET, SOCK_DGRAM, 0)) < 0) { - bb_perror_msg_and_die("socket"); - } + sockfd = bb_xsocket(AF_INET, SOCK_DGRAM, 0); /* get interface name */ safe_strncpy(ifr.ifr_name, *argv, IFNAMSIZ); diff --git a/networking/nc.c b/networking/nc.c index 85148c4a7..86f0b99df 100644 --- a/networking/nc.c +++ b/networking/nc.c @@ -10,19 +10,7 @@ 19990512 Uses Select. Charles P. Wright 19990513 Fixes stdin stupidity and uses buffers. Charles P. Wright - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + Licensed under GPLv2 or later, see file LICENSE in this tarball for details. */ #include @@ -87,8 +75,7 @@ int nc_main(int argc, char **argv) if ((do_listen && optind != argc) || (!do_listen && optind + 2 != argc)) bb_show_usage(); - if ((sfd = socket(AF_INET, SOCK_STREAM, 0)) < 0) - bb_perror_msg_and_die("socket"); + sfd = bb_xsocket(AF_INET, SOCK_STREAM, 0); x = 1; if (setsockopt(sfd, SOL_SOCKET, SO_REUSEADDR, &x, sizeof (x)) == -1) bb_perror_msg_and_die("reuseaddr"); diff --git a/networking/route.c b/networking/route.c index 8ae0da182..e7e8f1c02 100644 --- a/networking/route.c +++ b/networking/route.c @@ -1,3 +1,4 @@ +/* vi: set sw=4 ts=4: */ /* route * * Similar to the standard Unix route, but with only the necessary @@ -9,11 +10,7 @@ * Fred N. van Kempen, * (derived from FvK's 'route.c 1.70 01/04/94') * - * This program is free software; you can redistribute it - * and/or modify it under the terms of the GNU General - * Public License as published by the Free Software - * Foundation; either version 2 of the License, or (at - * your option) any later version. + * Licensed under GPLv2 or later, see file LICENSE in this tarball for details. * * $Id: route.c,v 1.26 2004/03/19 23:27:08 mjn3 Exp $ * @@ -338,9 +335,7 @@ static void INET_setroute(int action, char **args) } /* Create a socket to the INET kernel. */ - if ((skfd = socket(AF_INET, SOCK_DGRAM, 0)) < 0) { - bb_perror_msg_and_die("socket"); - } + skfd = bb_xsocket(AF_INET, SOCK_DGRAM, 0); if (ioctl(skfd, ((action==RTACTION_ADD) ? SIOCADDRT : SIOCDELRT), &rt)<0) { bb_perror_msg_and_die("SIOC[ADD|DEL]RT"); @@ -434,9 +429,7 @@ static void INET6_setroute(int action, char **args) } /* Create a socket to the INET6 kernel. */ - if ((skfd = socket(AF_INET6, SOCK_DGRAM, 0)) < 0) { - bb_perror_msg_and_die("socket"); - } + skfd = bb_xsocket(AF_INET6, SOCK_DGRAM, 0); rt.rtmsg_ifindex = 0; diff --git a/networking/telnetd.c b/networking/telnetd.c index 8943b2e3b..3e4b42cfa 100644 --- a/networking/telnetd.c +++ b/networking/telnetd.c @@ -1,10 +1,9 @@ -/* $Id: telnetd.c,v 1.13 2004/09/14 17:24:58 bug1 Exp $ - * +/* vi:set ts=4:*/ +/* * Simple telnet server * Bjorn Wesen, Axis Communications AB (bjornw@axis.com) * - * This file is distributed under the Gnu Public License (GPL), - * please see the file LICENSE for further information. + * Licensed under GPL, see file LICENSE in this tarball for details. * * --------------------------------------------------------------------------- * (C) Copyright 2000, Axis Communications AB, LUND, SWEDEN @@ -446,10 +445,7 @@ telnetd_main(int argc, char **argv) /* Grab a TCP socket. */ - master_fd = socket(SOCKET_TYPE, SOCK_STREAM, 0); - if (master_fd < 0) { - bb_perror_msg_and_die("socket"); - } + master_fd = bb_xsocket(SOCKET_TYPE, SOCK_STREAM, 0); (void)setsockopt(master_fd, SOL_SOCKET, SO_REUSEADDR, &on, sizeof(on)); /* Set it to listen to specified port. */ diff --git a/networking/tftp.c b/networking/tftp.c index ddcb5225f..b830f18a5 100644 --- a/networking/tftp.c +++ b/networking/tftp.c @@ -1,35 +1,23 @@ -/* ------------------------------------------------------------------------- */ -/* tftp.c */ -/* */ -/* A simple tftp client for busybox. */ -/* Tries to follow RFC1350. */ -/* Only "octet" mode supported. */ -/* Optional blocksize negotiation (RFC2347 + RFC2348) */ -/* */ -/* Copyright (C) 2001 Magnus Damm */ -/* */ -/* Parts of the code based on: */ -/* */ -/* atftp: Copyright (C) 2000 Jean-Pierre Lefebvre */ -/* and Remi Lefebvre */ -/* */ -/* utftp: Copyright (C) 1999 Uwe Ohse */ -/* */ -/* This program is free software; you can redistribute it and/or modify */ -/* it under the terms of the GNU General Public License as published by */ -/* the Free Software Foundation; either version 2 of the License, or */ -/* (at your option) any later version. */ -/* */ -/* This program is distributed in the hope that it will be useful, */ -/* but WITHOUT ANY WARRANTY; without even the implied warranty of */ -/* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU */ -/* General Public License for more details. */ -/* */ -/* You should have received a copy of the GNU General Public License */ -/* along with this program; if not, write to the Free Software */ -/* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -/* */ -/* ------------------------------------------------------------------------- */ +/* vi: set sw=4 ts=4: */ +/* ------------------------------------------------------------------------- + * tftp.c + * + * A simple tftp client for busybox. + * Tries to follow RFC1350. + * Only "octet" mode supported. + * Optional blocksize negotiation (RFC2347 + RFC2348) + * + * Copyright (C) 2001 Magnus Damm + * + * Parts of the code based on: + * + * atftp: Copyright (C) 2000 Jean-Pierre Lefebvre + * and Remi Lefebvre + * + * utftp: Copyright (C) 1999 Uwe Ohse + * + * Licensed under GPLv2 or later, see file LICENSE in this tarball for details. + * ------------------------------------------------------------------------- */ #include #include @@ -177,7 +165,7 @@ static inline int tftp(const int cmd, const struct hostent *host, tftp_bufsize += 4; - if ((socketfd = socket(PF_INET, SOCK_DGRAM, 0)) < 0) { + if ((socketfd = socket(PF_INET, SOCK_DGRAM, 0)) < 0) { /* bb_xsocket? */ bb_perror_msg("socket"); return EXIT_FAILURE; } diff --git a/networking/traceroute.c b/networking/traceroute.c index 22d27f240..0abd9047d 100644 --- a/networking/traceroute.c +++ b/networking/traceroute.c @@ -1,3 +1,4 @@ +/* vi: set sw=4 ts=4: */ /* * Copyright (c) 1988, 1989, 1991, 1994, 1995, 1996, 1997, 1998, 1999, 2000 * The Regents of the University of California. All rights reserved. @@ -359,9 +360,7 @@ ifaddrlist(struct IFADDRLIST **ipaddrp) struct ifreq ibuf[(32 * 1024) / sizeof(struct ifreq)], ifr; struct IFADDRLIST *st_ifaddrlist; - fd = socket(AF_INET, SOCK_DGRAM, 0); - if (fd < 0) - bb_perror_msg_and_die("socket"); + fd = bb_xsocket(AF_INET, SOCK_DGRAM, 0); ifc.ifc_len = sizeof(ibuf); ifc.ifc_buf = (caddr_t)ibuf; @@ -1091,8 +1090,7 @@ traceroute_main(int argc, char *argv[]) if (n > 2) close(n); - if ((s = socket(AF_INET, SOCK_RAW, pe->p_proto)) < 0) - bb_perror_msg_and_die(bb_msg_can_not_create_raw_socket); + s = bb_xsocket(AF_INET, SOCK_RAW, pe->p_proto); #ifdef CONFIG_FEATURE_TRACEROUTE_SO_DEBUG if (op & USAGE_OP_DEBUG) @@ -1103,9 +1101,7 @@ traceroute_main(int argc, char *argv[]) (void)setsockopt(s, SOL_SOCKET, SO_DONTROUTE, (char *)&on, sizeof(on)); - sndsock = socket(AF_INET, SOCK_RAW, IPPROTO_RAW); - if (sndsock < 0) - bb_perror_msg_and_die(bb_msg_can_not_create_raw_socket); + sndsock = bb_xsocket(AF_INET, SOCK_RAW, IPPROTO_RAW); #ifdef CONFIG_FEATURE_TRACEROUTE_SOURCE_ROUTE #if defined(IP_OPTIONS) diff --git a/networking/vconfig.c b/networking/vconfig.c index 36458f784..72729c7ed 100644 --- a/networking/vconfig.c +++ b/networking/vconfig.c @@ -4,20 +4,7 @@ * * Copyright (C) 2001 Manuel Novoa III * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * + * Licensed under GPLv2 or later, see file LICENSE in this tarball for details. */ /* BB_AUDIT SUSv3 N/A */ @@ -136,9 +123,7 @@ int vconfig_main(int argc, char **argv) } /* Don't bother closing the filedes. It will be closed on cleanup. */ - if (open(conf_file_name, O_RDONLY) < 0) { /* Is 802.1q is present? */ - bb_perror_msg_and_die("open %s", conf_file_name); - } + bb_xopen(conf_file_name, O_RDONLY); /* Will die if 802.1q is not present */ memset(&ifr, 0, sizeof(struct vlan_ioctl_args)); @@ -173,10 +158,9 @@ int vconfig_main(int argc, char **argv) } } - if (((fd = socket(AF_INET, SOCK_STREAM, 0)) < 0) - || (ioctl(fd, SIOCSIFVLAN, &ifr) < 0) - ) { - bb_perror_msg_and_die("socket or ioctl error for %s", *argv); + fd = bb_xsocket(AF_INET, SOCK_STREAM, 0); + if (ioctl(fd, SIOCSIFVLAN, &ifr) < 0) { + bb_perror_msg_and_die("ioctl error for %s", *argv); } return 0; diff --git a/sysklogd/syslogd.c b/sysklogd/syslogd.c index bb8ba1b82..b43c72d66 100644 --- a/sysklogd/syslogd.c +++ b/sysklogd/syslogd.c @@ -369,12 +369,7 @@ static void message(char *fmt, ...) static void init_RemoteLog(void) { memset(&remoteaddr, 0, sizeof(remoteaddr)); - remotefd = socket(AF_INET, SOCK_DGRAM, 0); - - if (remotefd < 0) { - bb_error_msg("cannot create socket"); - } - + remotefd = bb_xsocket(AF_INET, SOCK_DGRAM, 0); remoteaddr.sin_family = AF_INET; remoteaddr.sin_addr = *(struct in_addr *) *(xgethostbyname(RemoteHost))->h_addr_list; remoteaddr.sin_port = htons(RemotePort); @@ -543,11 +538,7 @@ static void doSyslogd(void) memset(&sunx, 0, sizeof(sunx)); sunx.sun_family = AF_UNIX; strncpy(sunx.sun_path, lfile, sizeof(sunx.sun_path)); - if ((sock_fd = socket(AF_UNIX, SOCK_DGRAM, 0)) < 0) { - bb_perror_msg_and_die("Couldn't get file descriptor for socket " - _PATH_LOG); - } - + sock_fd = bb_xsocket(AF_UNIX, SOCK_DGRAM, 0); addrLength = sizeof(sunx.sun_family) + strlen(sunx.sun_path); if (bind(sock_fd, (struct sockaddr *) &sunx, addrLength) < 0) { bb_perror_msg_and_die("Could not connect to socket " _PATH_LOG); diff --git a/util-linux/fbset.c b/util-linux/fbset.c index d2667cf84..7d3cae251 100644 --- a/util-linux/fbset.c +++ b/util-linux/fbset.c @@ -4,19 +4,7 @@ * * Copyright (C) 1999 by Randolph Chung * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * Licensed under GPLv2 or later, see file LICENSE in this tarball for details. * * This is a from-scratch implementation of fbset; but the de facto fbset * implementation was a good reference. fbset (original) is released under @@ -408,8 +396,7 @@ int fbset_main(int argc, char **argv) } } - if ((fh = open(fbdev, O_RDONLY)) < 0) - bb_perror_msg_and_die("fbset(open)"); + fh = bb_xopen(fbdev, O_RDONLY); if (ioctl(fh, FBIOGET_VSCREENINFO, &var)) bb_perror_msg_and_die("fbset(ioctl)"); if (g_options & OPT_READMODE) { diff --git a/util-linux/mkfs_minix.c b/util-linux/mkfs_minix.c index 904a58ee3..30bc9f12d 100644 --- a/util-linux/mkfs_minix.c +++ b/util-linux/mkfs_minix.c @@ -307,8 +307,7 @@ static inline int get_size(const char *file) int fd; long size; - if ((fd = open(file, O_RDWR)) < 0) - bb_perror_msg_and_die("%s", file); + fd = bb_xopen(file, O_RDWR); if (ioctl(fd, BLKGETSIZE, &size) >= 0) { close(fd); return (size * 512); @@ -821,9 +820,7 @@ goodbye: tmp += dirsize; *(short *) tmp = 2; strcpy(tmp + 2, ".badblocks"); - DEV = open(device_name, O_RDWR); - if (DEV < 0) - bb_error_msg_and_die("unable to open %s", device_name); + DEV = bb_xopen(device_name, O_RDWR); if (fstat(DEV, &statbuf) < 0) bb_error_msg_and_die("unable to stat %s", device_name); if (!S_ISBLK(statbuf.st_mode)) diff --git a/util-linux/mkswap.c b/util-linux/mkswap.c index ce123e502..32021fe08 100644 --- a/util-linux/mkswap.c +++ b/util-linux/mkswap.c @@ -258,8 +258,7 @@ static inline long get_size(const char *file) int fd; long size; - if ((fd = open(file, O_RDONLY)) < 0) /* TODO: bb_xopen3 */ - bb_perror_msg_and_die("%s", file); + fd = bb_xopen(file, O_RDONLY); if (ioctl(fd, BLKGETSIZE, &size) >= 0) { size /= pagesize / 512; } else { @@ -342,8 +341,8 @@ int mkswap_main(int argc, char **argv) PAGES * goodpages); } - DEV = open(device_name, O_RDWR); - if (DEV < 0 || fstat(DEV, &statbuf) < 0) + DEV = bb_xopen(device_name, O_RDWR); + if (fstat(DEV, &statbuf) < 0) bb_perror_msg_and_die("%s", device_name); if (!S_ISBLK(statbuf.st_mode)) check = 0;