1 /* 2 Network utilities for the Midnight Commander Virtual File System. 3 4 Copyright (C) 1995-2024 5 Free Software Foundation, Inc. 6 7 This file is part of the Midnight Commander. 8 9 The Midnight Commander is free software: you can redistribute it 10 and/or modify it under the terms of the GNU General Public License as 11 published by the Free Software Foundation, either version 3 of the License, 12 or (at your option) any later version. 13 14 The Midnight Commander is distributed in the hope that it will be useful, 15 but WITHOUT ANY WARRANTY; without even the implied warranty of 16 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 17 GNU General Public License for more details. 18 19 You should have received a copy of the GNU General Public License 20 along with this program. If not, see <http://www.gnu.org/licenses/>. 21 */ 22 23 /** 24 * \file 25 * \brief Source: Virtual File System: Network utilities 26 */ 27 28 #include <config.h> 29 30 #include <stdlib.h> 31 #include <signal.h> 32 #include <string.h> /* memset() */ 33 34 #include "lib/global.h" 35 #include "lib/util.h" 36 37 #include "netutil.h" 38 39 /*** global variables ****************************************************************************/ 40 41 SIG_ATOMIC_VOLATILE_T got_sigpipe = 0; 42 43 /*** file scope macro definitions ****************************************************************/ 44 45 /*** file scope type declarations ****************************************************************/ 46 47 /*** forward declarations (file scope functions) *************************************************/ 48 49 /*** file scope variables ************************************************************************/ 50 51 /* --------------------------------------------------------------------------------------------- */ 52 /*** file scope functions ************************************************************************/ 53 /* --------------------------------------------------------------------------------------------- */ 54 55 static void 56 sig_pipe (int unused) /* */ 57 { 58 (void) unused; 59 got_sigpipe = 1; 60 } 61 62 /* --------------------------------------------------------------------------------------------- */ 63 /*** public functions ****************************************************************************/ 64 /* --------------------------------------------------------------------------------------------- */ 65 66 void 67 tcp_init (void) /* */ 68 { 69 static gboolean initialized = FALSE; 70 struct sigaction sa; 71 72 if (initialized) 73 return; 74 75 got_sigpipe = 0; 76 memset (&sa, 0, sizeof (sa)); 77 sa.sa_handler = sig_pipe; 78 sigemptyset (&sa.sa_mask); 79 my_sigaction (SIGPIPE, &sa, NULL); 80 81 initialized = TRUE; 82 } 83 84 /* --------------------------------------------------------------------------------------------- */