From 65af5a9649cb9cdab866a41b9858ecaca9463788 Mon Sep 17 00:00:00 2001 From: Bernhard Walle Date: Fri, 4 Feb 2005 18:12:01 +0000 Subject: [PATCH] Implemented display of IP address, minor code cleanup (Old svn revision: 337) --- panel-plugin/commandline.c | 43 ++++++------ panel-plugin/net.c | 140 +++++++++++++++++++++++++------------ panel-plugin/net.h | 70 +++++++++++-------- panel-plugin/netload.c | 98 +++++++++++++++++--------- panel-plugin/os.h | 73 ++++++++++--------- panel-plugin/utils.c | 57 ++++++++------- panel-plugin/utils.h | 19 ++++- 7 files changed, 307 insertions(+), 193 deletions(-) diff --git a/panel-plugin/commandline.c b/panel-plugin/commandline.c index 163fb95..1e68a4b 100644 --- a/panel-plugin/commandline.c +++ b/panel-plugin/commandline.c @@ -1,32 +1,25 @@ -/* XFce 4 - Netload Plugin - * Copyright (c) 2003 Bernhard Walle - * - * Id: $Id: commandline.c,v 1.1 2003/08/31 12:45:25 bwalle Exp $ - * - * 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: $Id: commandline.c,v 1.2 2005/02/04 18:12:01 bwalle Exp $ + * ------------------------------------------------------------------------------------------------- + * + * 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; You may only use + * version 2 of the License, you have no option to use any other 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. + * 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. + * 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., 675 Mass Ave, Cambridge, MA 02139, USA. + * + * ------------------------------------------------------------------------------------------------- */ - - - /* * This is just a command-line wrapper for the operating-system specific code in wormulon/. * I wrote it because with this I'm able to test on systems with no GUI. Since I'm only running * Linux but develop for other Operating systems this is important! */ - - #ifdef HAVE_CONFIG_H #include #endif @@ -43,13 +36,16 @@ netdata data; +/* ---------------------------------------------------------------------------------------------- */ void sig_end_handler (int sig) { close_netload(&data); exit(0); } -int main (int argc, char* argv[]) + +/* ---------------------------------------------------------------------------------------------- */ +int main(int argc, char* argv[]) { unsigned long in, out, tot; char* device; @@ -80,7 +76,8 @@ int main (int argc, char* argv[]) format_with_thousandssep(bufIn, 20, (double)in, 2); format_with_thousandssep(bufOut, 20, (double)in, 2); format_with_thousandssep(bufTot, 20, (double)in, 2); - printf("Current netload:\nIN : %s\nOUT: %s\nTOT: %s\n", bufIn, bufOut, bufTot); + printf("Current netload:\nIN : %s\nOUT: %s\nTOT: %s\nIP: %s\n", + bufIn, bufOut, bufTot, get_ip_address(&data)); sleep(1); } diff --git a/panel-plugin/net.c b/panel-plugin/net.c index df7a960..6976785 100644 --- a/panel-plugin/net.c +++ b/panel-plugin/net.c @@ -1,25 +1,21 @@ -/* XFce 4 - Netload Plugin - * Copyright (c) 2003 Bernhard Walle - * - * Id: $Id: net.c,v 1.6 2003/09/13 12:30:49 bwalle Exp $ - * - * 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: $Id: net.c,v 1.7 2005/02/04 18:12:01 bwalle Exp $ + * ------------------------------------------------------------------------------------------------- + * + * 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; You may only use + * version 2 of the License, you have no option to use any other 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. + * 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. + * 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., 675 Mass Ave, Cambridge, MA 02139, USA. + * + * ------------------------------------------------------------------------------------------------- */ - - /* * This is just a wrapper between the netload-plugin and the wormulon source. * Wormulon is a small command-line util which displays the netload. You can find it @@ -29,8 +25,6 @@ * number of operating systems quickly without a library! Without him only * Linux and FreeBSD (with foreign code from IceWM) would be supported. */ - - #ifdef HAVE_CONFIG_H #include #endif @@ -41,33 +35,37 @@ #include "wormulon.h" #include "slurm.h" /* slurm structs */ +#include + + #ifdef __HPUX__ -#include "wormulon/hpux.h" -#include "wormulon/hpux.c" +# include "wormulon/hpux.h" +# include "wormulon/hpux.c" #elif __APPLE__ -#include "src/macos.h" -#include "src/macos.c" +# include "src/macos.h" +# include "src/macos.c" #elif __FreeBSD__ -#include "wormulon/freebsd.h" -#include "wormulon/freebsd.c" +# include "wormulon/freebsd.h" +# include "wormulon/freebsd.c" #elif __linux__ -#include "wormulon/linux.h" -#include "wormulon/linux.c" +# include "wormulon/linux.h" +# include "wormulon/linux.c" #elif __OpenBSD__ || __MicroBSD__ -#include "wormulon/openbsd.h" -#include "wormulon/openbsd.c" +# include "wormulon/openbsd.h" +# include "wormulon/openbsd.c" #elif __NetBSD__ -#include "wormulon/netbsd.h" -#include "wormulon/netbsd.c" +# include "wormulon/netbsd.h" +# include "wormulon/netbsd.c" #elif __Solaris__ -#include "wormulon/solaris.h" -#include "wormulon/solaris.c" +# include "wormulon/solaris.h" +# include "wormulon/solaris.c" #else /* should not get here */ -#error "OS not supported" +# error "OS not supported" #endif +/* ---------------------------------------------------------------------------------------------- */ int init_netload(netdata* data, const char* device) { memset( data, 0, sizeof(netdata) ); @@ -77,11 +75,14 @@ int init_netload(netdata* data, const char* device) return TRUE; } - strncpy( data->ifdata.if_name, device, 9 ); - data->ifdata.if_name[9] = '\0'; + strncpy( data->ifdata.if_name, device, INTERFACE_NAME_LENGTH); + data->ifdata.if_name[INTERFACE_NAME_LENGTH] = '\0'; init_osspecific( data ); + data->ip_address[0] = 0; + data->ip_update_count = 0; + if (checkinterface(data) != TRUE) { data->correct_interface = FALSE; @@ -103,20 +104,15 @@ int init_netload(netdata* data, const char* device) } -/** - * Gets the current netload. - * @param in Will be filled with the "in"-load. - * @param out Will be filled with the "out"-load. - * @param tot Will be filled with the "total"-load. - */ +/* ---------------------------------------------------------------------------------------------- */ void get_current_netload(netdata* data, unsigned long *in, unsigned long *out, unsigned long *tot) { struct timeval curr_time; double delta_t; - if( ! data->correct_interface ) + if (! data->correct_interface) { - if( in != NULL && out != NULL && tot != NULL ) + if (in != NULL && out != NULL && tot != NULL) { *in = *out = *tot = 0; } @@ -147,7 +143,7 @@ void get_current_netload(netdata* data, unsigned long *in, unsigned long *out, u data->cur_out = (int)( (data->stats.tx_bytes - data->backup_out) / delta_t + 0.5); } - if( in != NULL && out != NULL && tot != NULL ) + if (in != NULL && out != NULL && tot != NULL) { *in = data->cur_in; *out = data->cur_out; @@ -163,6 +159,58 @@ void get_current_netload(netdata* data, unsigned long *in, unsigned long *out, u data->prev_time.tv_usec = curr_time.tv_usec; } + +/* ---------------------------------------------------------------------------------------------- */ +char* get_name(netdata* data) +{ + return data->ifdata.if_name; +} + + +/* ---------------------------------------------------------------------------------------------- */ +char* get_ip_address(netdata* data) +{ + int sockfd; + struct ifreq ifr; + struct sockaddr_in *p_sa; + + /* use cached value if possible and if the update count is non-zero */ + if (data->ip_address && data->ip_update_count > 0) + { + data->ip_update_count--; + return data->ip_address; + } + + /* get the value from the operating system */ + if ((sockfd = socket(AF_INET, SOCK_STREAM, 0)) == -1) + { + perror("Error in socket"); + return NULL; + } + + snprintf(ifr.ifr_name, IF_NAMESIZE, data->ifdata.if_name); + if (ioctl(sockfd, SIOCGIFADDR, &ifr) != 0) + { + perror("Error in ictl(sockfd)"); + return NULL; + } + + p_sa = (struct sockaddr_in*) &ifr.ifr_addr; + + if (!inet_ntop(AF_INET, &p_sa->sin_addr, data->ip_address, IP_ADDRESS_LENGTH)) + { + perror("Error in inet_ntop"); + return NULL; + } + + /* now updated */ + data->ip_update_count = IP_UPDATE_INTERVAL; + + return data->ip_address; +} + + +/* ---------------------------------------------------------------------------------------------- */ void close_netload(netdata* data) { /* We need not code here */ diff --git a/panel-plugin/net.h b/panel-plugin/net.h index cb310ee..2ead7b2 100644 --- a/panel-plugin/net.h +++ b/panel-plugin/net.h @@ -1,60 +1,53 @@ -/* XFce 4 - Netload Plugin - * Copyright (c) 2003 Bernhard Walle - * - * Id: $Id: net.h,v 1.7 2003/09/13 12:30:49 bwalle Exp $ +/* + * Id: $Id: net.h,v 1.8 2005/02/04 18:12:01 bwalle Exp $ + * ------------------------------------------------------------------------------------------------- + * + * 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; You may only use + * version 2 of the License, you have no option to use any other version. * - * 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. * - * 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., 675 Mass Ave, Cambridge, MA 02139, USA. * - * 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. + * ------------------------------------------------------------------------------------------------- */ - - #ifndef NET_H #define NET_H -/* ----------------------- Some defines here ------------------------------- */ - -#if defined (__sun__) -#define __Solaris__ 1 -#endif - #include "os.h" #include "slurm.h" #define MSGSIZE 1024 +#define IP_UPDATE_INTERVAL 20 +#define IP_ADDRESS_LENGTH 64 +#define INTERFACE_NAME_LENGTH 9 #ifndef gettext_noop #define gettext_noop(String) String #endif /** errorcodes */ -typedef enum { - UNKNOWN_ERROR, /* 0 */ - PROC_DEVICE_NOT_FOUND, /* 1 */ - INTERFACE_NOT_FOUND /* 2 */ +typedef enum +{ + UNKNOWN_ERROR, + PROC_DEVICE_NOT_FOUND, + INTERFACE_NOT_FOUND } errorcode_t; -/* +/** * We need this because we cannot use static variables. Using of static variables allows * us not to use several instances of the plugin. * I know that this change makes it a bit incompatible with wormulon, but that's the * price to pay ... */ - typedef struct { - char old_interface[9]; + char old_interface[INTERFACE_NAME_LENGTH]; double backup_in; errorcode_t errorcode; double backup_out; @@ -63,6 +56,8 @@ typedef struct struct timeval prev_time; int correct_interface; /* treated as boolean */ IfData ifdata; + char ip_address[IP_ADDRESS_LENGTH]; + int ip_update_count; DataStats stats; #ifdef __HPUX__ int wait_pcks_counter; @@ -111,6 +106,21 @@ int init_netload(netdata* data, const char* device); */ void get_current_netload(netdata* data, unsigned long *in, unsigned long *out, unsigned long *tot); +/** + * Returns the name of the network interface. + * @param data object + * @return The name. String resides in data and you don't have to free the string. + * On error, returns NULL. + */ +char* get_name(netdata* data); + +/** + * Returns the IP address of the network interface + * @param data object + * @return the IP address as string, NULL on error. + */ +char* get_ip_address(netdata* data); + /** * Should be called to do cleanup work. */ diff --git a/panel-plugin/netload.c b/panel-plugin/netload.c index d1ee047..2983128 100644 --- a/panel-plugin/netload.c +++ b/panel-plugin/netload.c @@ -1,23 +1,20 @@ -/* XFce 4 - Netload Plugin - * Copyright (c) 2003 Bernhard Walle - * - * Id: $Id: netload.c,v 1.11 2005/01/10 13:43:01 bwalle Exp $ - * - * 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: $Id: netload.c,v 1.12 2005/02/04 18:12:01 bwalle Exp $ + * ------------------------------------------------------------------------------------------------- + * + * 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; You may only use + * version 2 of the License, you have no option to use any other 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. + * 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. + * 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., 675 Mass Ave, Cambridge, MA 02139, USA. + * + * ------------------------------------------------------------------------------------------------- */ - #ifdef HAVE_CONFIG_H #include #endif @@ -133,7 +130,7 @@ typedef struct } t_global_monitor; - +/* ---------------------------------------------------------------------------------------------- */ static gboolean update_monitors(t_global_monitor *global) { char buffer[SUM+1][BUFSIZ]; @@ -188,29 +185,28 @@ static gboolean update_monitors(t_global_monitor *global) } #ifdef DEBUG - switch( i ) + switch (i) { case IN: - fprintf( stderr, "input: Max = %lu\n", global->monitor->net_max[i] ); + fprintf(stderr, "input: Max = %lu\n", global->monitor->net_max[i]); break; case OUT: - fprintf( stderr, "output: Max = %lu\n", global->monitor->net_max[i] ); + fprintf(stderr, "output: Max = %lu\n", global->monitor->net_max[i]); break; case TOT: - fprintf( stderr, "total: Max = %lu\n", global->monitor->net_max[i] ); + fprintf(stderr, "total: Max = %lu\n", global->monitor->net_max[i]); break; } #endif /* DEBUG */ - temp = (double)display[i] / global->monitor->net_max[i]; - if( temp > 1 ) + if (temp > 1) { temp = 1.0; } - else if( temp < 0 ) + else if (temp < 0) { temp = 0.0; } @@ -221,22 +217,28 @@ static gboolean update_monitors(t_global_monitor *global) format_with_thousandssep( buffer[TOT], BUFSIZ, (display[IN]+display[OUT]) / 1024.0, 2 ); - g_snprintf(caption, sizeof(caption), - _("Average of last %d measures:\n" - "Incoming: %s kByte/s\nOutgoing: %s kByte/s\nTotal: %s kByte/s"), - HISTSIZE_CALCULATE, buffer[IN], buffer[OUT], buffer[TOT]); - gtk_tooltips_set_tip(tooltips, GTK_WIDGET(global->monitor->ebox), caption, NULL); + { + char* ip = get_ip_address(&(global->monitor->data)); + g_snprintf(caption, sizeof(caption), + _("<< %s >> (%s)\nAverage of last %d measures:\n" + "Incoming: %s kByte/s\nOutgoing: %s kByte/s\nTotal: %s kByte/s"), + get_name(&(global->monitor->data)), ip ? ip : _("no IP address"), + HISTSIZE_CALCULATE, buffer[IN], buffer[OUT], buffer[TOT]); + gtk_tooltips_set_tip(tooltips, GTK_WIDGET(global->monitor->ebox), caption, NULL); + } XFCE_PANEL_UNLOCK(); return TRUE; } + +/* ---------------------------------------------------------------------------------------------- */ static void run_update (t_global_monitor *global) { - if( global->timeout_id > 0 ) + if (global->timeout_id > 0) { - g_source_remove (global->timeout_id); + g_source_remove(global->timeout_id); global->timeout_id = 0; } @@ -247,6 +249,8 @@ static void run_update (t_global_monitor *global) } } + +/* ---------------------------------------------------------------------------------------------- */ static t_global_monitor * monitor_new(void) { t_global_monitor *global; @@ -339,6 +343,8 @@ static t_global_monitor * monitor_new(void) return global; } + +/* ---------------------------------------------------------------------------------------------- */ static void monitor_set_orientation (Control * ctrl, int orientation) { t_global_monitor *global = ctrl->data; @@ -432,6 +438,8 @@ static void monitor_set_orientation (Control * ctrl, int orientation) run_update( global ); } + +/* ---------------------------------------------------------------------------------------------- */ static gboolean monitor_control_new(Control *ctrl) { t_global_monitor *global; @@ -451,6 +459,7 @@ static gboolean monitor_control_new(Control *ctrl) } +/* ---------------------------------------------------------------------------------------------- */ static void monitor_free(Control *ctrl) { t_global_monitor *global; @@ -474,6 +483,8 @@ static void monitor_free(Control *ctrl) close_netload( &(global->monitor->data) ); } + +/* ---------------------------------------------------------------------------------------------- */ static void setup_monitor(t_global_monitor *global, gboolean supress_warnings) { GtkRcStyle *rc; @@ -542,6 +553,8 @@ static void setup_monitor(t_global_monitor *global, gboolean supress_warnings) } + +/* ---------------------------------------------------------------------------------------------- */ static void monitor_read_config(Control *ctrl, xmlNodePtr node) { xmlChar *value; @@ -621,6 +634,7 @@ static void monitor_read_config(Control *ctrl, xmlNodePtr node) } +/* ---------------------------------------------------------------------------------------------- */ static void monitor_write_config(Control *ctrl, xmlNodePtr parent) { xmlNodePtr root; @@ -674,6 +688,8 @@ static void monitor_write_config(Control *ctrl, xmlNodePtr parent) root = xmlNewTextChild(parent, NULL, MONITOR_ROOT, NULL); } + +/* ---------------------------------------------------------------------------------------------- */ static void monitor_attach_callback(Control *ctrl, const gchar *signal, GCallback cb, gpointer data) { t_global_monitor *global; @@ -683,6 +699,7 @@ static void monitor_attach_callback(Control *ctrl, const gchar *signal, GCallbac } +/* ---------------------------------------------------------------------------------------------- */ static void monitor_set_size(Control *ctrl, int size) { /* do the resize */ @@ -712,6 +729,7 @@ static void monitor_set_size(Control *ctrl, int size) } +/* ---------------------------------------------------------------------------------------------- */ static void monitor_apply_options_cb(GtkWidget *button, t_global_monitor *global) { gint i; @@ -752,8 +770,9 @@ static void monitor_apply_options_cb(GtkWidget *button, t_global_monitor *global } +/* ---------------------------------------------------------------------------------------------- */ static void label_changed(GtkWidget *button, t_global_monitor *global) -{ +{ if (global->monitor->options.label_text) { g_free(global->monitor->options.label_text); @@ -769,8 +788,9 @@ static void label_changed(GtkWidget *button, t_global_monitor *global) } +/* ---------------------------------------------------------------------------------------------- */ static void max_label_changed(GtkWidget *button, t_global_monitor *global) -{ +{ gint i; for( i = 0; i < SUM; i++ ) { @@ -786,6 +806,7 @@ static void max_label_changed(GtkWidget *button, t_global_monitor *global) } +/* ---------------------------------------------------------------------------------------------- */ static void network_changed(GtkWidget *button, t_global_monitor *global) { if (global->monitor->options.network_device) @@ -803,6 +824,7 @@ static void network_changed(GtkWidget *button, t_global_monitor *global) } +/* ---------------------------------------------------------------------------------------------- */ static void label_toggled(GtkWidget *check_button, t_global_monitor *global) { global->monitor->options.use_label = @@ -818,6 +840,8 @@ static void label_toggled(GtkWidget *check_button, t_global_monitor *global) #endif } + +/* ---------------------------------------------------------------------------------------------- */ static void max_label_toggled(GtkWidget *check_button, t_global_monitor *global) { gint i; @@ -843,6 +867,7 @@ static void max_label_toggled(GtkWidget *check_button, t_global_monitor *global) } +/* ---------------------------------------------------------------------------------------------- */ static gboolean expose_event_cb(GtkWidget *widget, GdkEventExpose *event) { if (widget->window) @@ -862,6 +887,7 @@ static gboolean expose_event_cb(GtkWidget *widget, GdkEventExpose *event) } +/* ---------------------------------------------------------------------------------------------- */ static void change_color(GtkWidget *button, t_global_monitor *global, gint type) { GtkWidget *dialog; @@ -896,18 +922,21 @@ static void change_color(GtkWidget *button, t_global_monitor *global, gint type) } +/* ---------------------------------------------------------------------------------------------- */ static void change_color_in(GtkWidget *button, t_global_monitor *global) { change_color(button, global, IN); } +/* ---------------------------------------------------------------------------------------------- */ static void change_color_out(GtkWidget *button, t_global_monitor *global) { change_color(button, global, OUT); } +/* ---------------------------------------------------------------------------------------------- */ static void monitor_create_options(Control *control, GtkContainer *container, GtkWidget *done) { t_global_monitor *global; @@ -1148,6 +1177,7 @@ static void monitor_create_options(Control *control, GtkContainer *container, Gt } +/* ---------------------------------------------------------------------------------------------- */ G_MODULE_EXPORT void xfce_control_class_init(ControlClass *cc) { xfce_textdomain(GETTEXT_PACKAGE, PACKAGE_LOCALE_DIR, "UTF-8"); diff --git a/panel-plugin/os.h b/panel-plugin/os.h index 89e98a4..45b5583 100644 --- a/panel-plugin/os.h +++ b/panel-plugin/os.h @@ -1,13 +1,20 @@ -/****************************************************************************** +/* + * Id: $Id: os.h,v 1.4 2005/02/04 18:12:01 bwalle Exp $ + * ------------------------------------------------------------------------------------------------- + * + * 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; You may only use + * version 2 of the License, you have no option to use any other version. * - * os.h + * 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. * - * include OS-dependent headers + * 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., 675 Mass Ave, Cambridge, MA 02139, USA. * - ****************************************************************************** - * This file is from Wormulon. Id: os.h,v 1.3 2003/08/14 10:58:30 hscholz Exp - *****************************************************************************/ - + * ------------------------------------------------------------------------------------------------- + */ #ifndef _OS_H #define _OS_H @@ -39,32 +46,32 @@ #include #include #include -+#elif __APPLE__ /* Mac OS X */ -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include +#elif __APPLE__ /* Mac OS X */ +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include #elif __FreeBSD__ /* F R E E B S D */ #include #include diff --git a/panel-plugin/utils.c b/panel-plugin/utils.c index 37644ba..104ed84 100644 --- a/panel-plugin/utils.c +++ b/panel-plugin/utils.c @@ -1,22 +1,20 @@ -/* XFce 4 - Netload Plugin - * Copyright (c) 2003 Bernhard Walle +/* + * Id: $Id: utils.c,v 1.3 2005/02/04 18:12:01 bwalle Exp $ + * ------------------------------------------------------------------------------------------------- * - * 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 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; You may only use + * version 2 of the License, you have no option to use any other 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. + * 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. + * 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., 675 Mass Ave, Cambridge, MA 02139, USA. + * + * ------------------------------------------------------------------------------------------------- */ - - #include #include #include @@ -30,14 +28,15 @@ #define BUFSIZ 512 #endif +/* ---------------------------------------------------------------------------------------------- */ unsigned long min_array( unsigned long array[], int size ) { int i; unsigned long min = array[0]; - for( i = 1; i < size; i++ ) + for (i = 1; i < size; i++) { - if( array[i] < min ) + if (array[i] < min) { min = array[i]; } @@ -46,22 +45,26 @@ unsigned long min_array( unsigned long array[], int size ) } +/* ---------------------------------------------------------------------------------------------- */ unsigned long max_array( unsigned long array[], int size ) { int i; unsigned long max = array[0]; - for( i = 1; i < size; i++ ) + for (i = 1; i < size; i++) { if( array[i] > max ) { max = array[i]; } } + return max; } -char* format_with_thousandssep( char* string, int stringsize, double number, int digits ) + +/* ---------------------------------------------------------------------------------------------- */ +char* format_with_thousandssep(char* string, int stringsize, double number, int digits) { char* str = string; char buffer[BUFSIZ], formatstring[BUFSIZ]; @@ -73,13 +76,13 @@ char* format_with_thousandssep( char* string, int stringsize, double number, int /* sensible value for digits */ - if( digits < 0 || digits >= 10 ) + if (digits < 0 || digits >= 10) { digits = 2; } - snprintf( formatstring, BUFSIZ, "%%.%df", digits ); - snprintf( buffer, BUFSIZ, formatstring, number ); + snprintf(formatstring, BUFSIZ, "%%.%df", digits); + snprintf(buffer, BUFSIZ, formatstring, number); /* get the number of integer characters */ count = numberOfIntegerChars = ( digits > 0 @@ -95,21 +98,22 @@ char* format_with_thousandssep( char* string, int stringsize, double number, int /* insert the thousands separator */ - while( *bufptr != 0 && *bufptr != localeinfo->decimal_point[0] ) + while (*bufptr != 0 && *bufptr != localeinfo->decimal_point[0]) { - if( count % grouping == 0 && count != numberOfIntegerChars ) + if (count % grouping == 0 && count != numberOfIntegerChars) { - for( i = 0; i < strlen( localeinfo->thousands_sep ); i++ ) + for (i = 0; i < strlen( localeinfo->thousands_sep ); i++) { *str++ = localeinfo->thousands_sep[i]; } } + *str++ = *bufptr++; count--; } /* Copy the rest */ - while( digits > 0 && *bufptr != 0 ) + while (digits > 0 && *bufptr != 0) { *str++ = *bufptr++; } @@ -119,3 +123,4 @@ char* format_with_thousandssep( char* string, int stringsize, double number, int return string; } + diff --git a/panel-plugin/utils.h b/panel-plugin/utils.h index c3e9681..d46cb03 100644 --- a/panel-plugin/utils.h +++ b/panel-plugin/utils.h @@ -1,4 +1,21 @@ - +/* XFce 4 - Netload Plugin + * Copyright (c) 2003 Bernhard Walle + * + * 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. + * ------------------------------------------------------------------------------------------------- + */ #ifndef UTILS_H #define UTILS_H