make 'forceexit' more fprintf-like, better error message when ioctl fails.
This commit is contained in:
20
nethogs.cpp
20
nethogs.cpp
@@ -10,6 +10,7 @@
|
|||||||
#include <signal.h>
|
#include <signal.h>
|
||||||
#include <string>
|
#include <string>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
#include <stdarg.h>
|
||||||
|
|
||||||
#include <netinet/ip.h>
|
#include <netinet/ip.h>
|
||||||
#include <netinet/ip6.h>
|
#include <netinet/ip6.h>
|
||||||
@@ -200,24 +201,19 @@ void quit_cb (int i)
|
|||||||
exit(0);
|
exit(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
void forceExit(const char *msg)
|
void forceExit(const char *msg, ...)
|
||||||
{
|
|
||||||
forceExit (msg, NULL);
|
|
||||||
}
|
|
||||||
|
|
||||||
void forceExit(const char *msg, const char* msg2)
|
|
||||||
{
|
{
|
||||||
if ((!tracemode)&&(!DEBUG)){
|
if ((!tracemode)&&(!DEBUG)){
|
||||||
exit_ui();
|
exit_ui();
|
||||||
}
|
}
|
||||||
std::cerr << msg;
|
|
||||||
if (msg2 != NULL)
|
va_list argp;
|
||||||
{
|
va_start(argp, msg);
|
||||||
std::cerr << msg2;
|
vfprintf(stderr, msg, argp);
|
||||||
}
|
va_end(argp);
|
||||||
std::cerr << std::endl;
|
std::cerr << std::endl;
|
||||||
|
|
||||||
exit(0);
|
exit(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void versiondisplay(void)
|
static void versiondisplay(void)
|
||||||
|
|||||||
@@ -47,8 +47,7 @@
|
|||||||
|
|
||||||
#define PROGNAME_WIDTH 27
|
#define PROGNAME_WIDTH 27
|
||||||
|
|
||||||
void forceExit(const char *msg);
|
void forceExit(const char *msg, ...);
|
||||||
void forceExit(const char *msg, const char* msg2);
|
|
||||||
|
|
||||||
class local_addr {
|
class local_addr {
|
||||||
public:
|
public:
|
||||||
|
|||||||
@@ -43,7 +43,7 @@ void getLocal (const char *device, bool tracemode)
|
|||||||
}
|
}
|
||||||
strcpy(iFreq.ifr_name, device);
|
strcpy(iFreq.ifr_name, device);
|
||||||
if(ioctl(sock, SIOCGIFADDR, &iFreq)<0){
|
if(ioctl(sock, SIOCGIFADDR, &iFreq)<0){
|
||||||
forceExit("ioctl failed while establishing local IP for selected device ", device);
|
forceExit("ioctl failed while establishing local IP for selected device %s. You may specify the device on the command line.", device);
|
||||||
}
|
}
|
||||||
saddr=(struct sockaddr_in*)&iFreq.ifr_addr;
|
saddr=(struct sockaddr_in*)&iFreq.ifr_addr;
|
||||||
local_addrs = new local_addr (saddr->sin_addr.s_addr, local_addrs);
|
local_addrs = new local_addr (saddr->sin_addr.s_addr, local_addrs);
|
||||||
|
|||||||
Reference in New Issue
Block a user