Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 27 Dec 2001 13:19:58 +0000 (GMT)
From:      Bruce M Simpson <bms@spc.org>
To:        FreeBSD-gnats-submit@freebsd.org
Subject:   ports/33243: new port: net/wmwave 0.4
Message-ID:  <20011227131958.049D52102C@kiowa.dek.spc.org>

next in thread | raw e-mail | index | archive | help

>Number:         33243
>Category:       ports
>Synopsis:       new port: net/wmwave 0.4
>Confidential:   no
>Severity:       non-critical
>Priority:       medium
>Responsible:    freebsd-ports
>State:          open
>Quarter:        
>Keywords:       
>Date-Required:
>Class:          change-request
>Submitter-Id:   current-users
>Arrival-Date:   Thu Dec 27 05:20:01 PST 2001
>Closed-Date:
>Last-Modified:
>Originator:     Bruce M Simpson
>Release:        FreeBSD 5.0-CURRENT i386
>Organization:
>Environment:
System: FreeBSD kiowa.dek.spc.org 5.0-CURRENT FreeBSD 5.0-CURRENT #7: Mon Dec 24 04:57:54 GMT 2001 root@kiowa.dek.spc.org:/usr/src/sys/i386/compile/KIOWA i386

>Description:
	Display 802.11 signal status in the WindowMaker Dock.
>How-To-Repeat:
>Fix:

--- wmwave.shar begins here ---
# This is a shell archive.  Save it in a file, remove anything before
# this line, and then unpack it by entering "sh file".  Note, it may
# create directories; files and directories will be owned by you and
# have default permissions.
#
# This archive contains:
#
#	wmwave
#	wmwave/files
#	wmwave/files/patch-aa
#	wmwave/files/patch-ab
#	wmwave/pkg-descr
#	wmwave/distinfo
#	wmwave/Makefile
#	wmwave/pkg-comment
#	wmwave/pkg-plist
#
echo c - wmwave
mkdir -p wmwave > /dev/null 2>&1
echo c - wmwave/files
mkdir -p wmwave/files > /dev/null 2>&1
echo x - wmwave/files/patch-aa
sed 's/^X//' >wmwave/files/patch-aa << 'END-of-wmwave/files/patch-aa'
X--- Makefile.orig	Thu Aug 19 18:58:51 1999
X+++ Makefile	Thu Dec 27 13:17:22 2001
X@@ -1,41 +1,20 @@
X #
X-# $Log: Makefile,v $
X-# Revision 1.2  1999/08/19 17:58:51  carsten
X-# Almost final version
X+# $FreeBSD$
X #
X-# Revision 1.1  1999/08/15 15:38:09  carsten
X-# Added wmwave project to repository
X-
X-LIBDIR = -L/usr/X11R6/lib
X-LIBS   = -lXpm -lXext -lX11 -lm
X-FLAGS = -O6
X-OBJS =	 \
X-		wmgeneral.o \
X-
X-default:all
X-
X-.c.o:
X-	cc -I/usr/X11R6/share/include $(FLAGS) -c -Wall $< -o $*.o
X-
X-wmwave.o: wmwave.c wmwave-master.xpm
X-	cc -I/usr/X11R6/share/include $(FLAGS) -c -Wall wmwave.c -o $*.o
X+# makefile for wmwave-0.4 on 27-12-2001 by bms
X+#
X+PROG=wmwave
X+SRCS=wmwave.c wmgeneral.c
X+MAN1=wmwave.1
X 
X-wmwave: $(OBJS) wmwave.o
X-	cc $(FLAGS) -o wmwave $(OBJS) -lXext $(LIBDIR) $(LIBS) wmwave.o
X+CFLAGS += -g -I${X11BASE}/include -DWICACHE
X+#CFLAGS += -O6
X+LDFLAGS+= -L${X11BASE}/lib -lX11 -lXpm -lXext -lm
X 
X-all:: wmwave
X+BINDIR=${PREFIX}/bin
X+MANDIR=${PREFIX}/man/man
X 
X-clean::
X-	rm -f *.o
X-	rm -f wmwave 
X-	rm -f *~
X+# extra dependency to rebuild when master pixmap changed
X+wmwave.o: wmwave-master.xpm
X 
X-install:: wmwave
X-	strip wmwave
X-	cp -f wmwave /usr/bin/
X-	chmod 755 /usr/bin/wmwave
X-	chown root:root /usr/bin/wmwave
X-	cp -f wmwave.1 /usr/man/man1
X-	chmod 644 /usr/man/man1/wmwave.1
X-	chown root:root /usr/man/man1/wmwave.1
X-	@echo "wmwave Installation finished..."
X+.include <bsd.prog.mk>
END-of-wmwave/files/patch-aa
echo x - wmwave/files/patch-ab
sed 's/^X//' >wmwave/files/patch-ab << 'END-of-wmwave/files/patch-ab'
X--- wmwave.c.orig	Thu Dec 27 12:10:44 2001
X+++ wmwave.c	Thu Dec 27 13:09:37 2001
X@@ -1,38 +1,21 @@
X /*
X+ * $Id$
X+ * 
X  * wmtop.c -- WindowMaker process view dock app
X- * Derived by Carsten Schuermann   carsten@schuermann.org
X- * http://www.schuermann.org/~carsten
X- * from
X- * Dan Piponi dan@tanelorn.demon.co.uk
X- * http://www.tanelorn.demon.co.uk
X- * who derived it 
X- * from code originally contained in wmsysmon by Dave Clark (clarkd@skynet.ca)
X+ * 
X  * This software is licensed through the GNU General Public License.
X- * $Log: wmwave.c,v $
X- * Revision 1.7  1999/08/20 13:44:21  carsten
X- * version 0.4 complete
X- *
X- * Revision 1.6  1999/08/19 17:58:52  carsten
X- * Almost final version
X- *
X- * Revision 1.5  1999/08/19 13:54:30  carsten
X- * done
X- *
X- * Revision 1.4  1999/08/19 11:14:50  carsten
X- * hookup to /proc/net/wirless complete
X- *
X- * Revision 1.3  1999/08/19 02:39:07  carsten
X- * improved design and hooked it up
X- *
X- * Revision 1.2  1999/08/16 03:45:34  carsten
X- * Added dots
X- *
X- * Revision 1.1  1999/08/15 15:39:18  carsten
X- * Added wmwave project to repository
X- *
X+ * 
X+ * Authors (in reverse chronological order):
X+ * Bruce M. Simpson <bms@spc.org>
X+ * Carsten Schuermann <carsten@schuermann.org>
X+ * Dan Piponi <dan@tanelorn.demon.co.uk>
X+ * Dave Clark <clarkd@skynet.ca>
X+ * 
X+ * The FreeBSD version of this software is released under the GNU GPL, and
X+ * forms part of the Consume Project <URL: http://www.consume.net/>.
X+ * 
X  */
X 
X-
X #include <stdlib.h>
X #include <stdio.h>
X #include <time.h>
X@@ -45,313 +28,387 @@
X #include <limits.h>
X #include <errno.h>
X #include <signal.h>
X+#include <sysexits.h>
X 
X+#include <sys/types.h>
X #include <sys/wait.h>
X #include <sys/stat.h>
X #include <sys/param.h>
X-#include <sys/types.h>
X #include <sys/ioctl.h>
X #include <sys/time.h>
X+#include <sys/socket.h>
X+#include <sys/sockio.h>
X+
X+#include <netdb.h>
X+#include <net/if.h>
X+#include <net/if_var.h>
X+#include <net/route.h>
X+#include <net/ethernet.h>
X+
X+#include <netinet/in.h>
X+#include <netinet/in_systm.h>
X+#include <netinet/in_var.h>
X+#include <netinet/ip.h>
X+#include <netinet/ip_var.h>
X+#include <arpa/inet.h>
X+#include <machine/if_wavelan_ieee.h>
X 
X #include <X11/Xlib.h>
X #include <X11/xpm.h>
X #include <X11/extensions/shape.h>
X 
X-
X #include "wmgeneral.h"
X-
X #include "wmwave-master.xpm"
X 
X-char wmwave_mask_bits[64*64];
X-int wmwave_mask_width = 64;
X-int wmwave_mask_height = 64;
X-
X-#define WMWAVE_VERSION "0.4"
X+char            wmwave_mask_bits[64 * 64];
X+int             wmwave_mask_width = 64;
X+int             wmwave_mask_height = 64;
X+
X+#define WMWAVE_DEFAULT_INTERFACE	"wi0"
X+#define WMWAVE_VERSION			"0.4_FreeBSD"
X+
X+int             update_rate = 100000;
X+char            *ProgName;
X+char		*iface = WMWAVE_DEFAULT_INTERFACE;
X+time_t          curtime;
X+time_t          prevtime;
X+int             mode = 0;	/* default: no card detected */
X+int             screen = 0;	/* default: Quality screen is displayed */
X+
X+void            usage(void);
X+void            printversion(void);
X+void            BlitString(char *name, int x, int y);
X+void            BlitNum(int num, int x, int y);
X+void            wmwave_routine(int, char **);
X+void            DrawBar(float percent, int dx, int dy);
X+void            DrawGreenBar(float percent, int dx, int dy);
X 
X-int update_rate=100000;
X-
X-char *ProgName;
X-
X-time_t curtime;
X-time_t prevtime;
X-
X-int mode = 0;    // default: no card detected
X-int screen = 0;  // default: Quality screen is displayed
X-
X-void usage(void);
X-void printversion(void);
X-void BlitString(char *name, int x, int y);
X-void BlitNum(int num, int x, int y);
X-void wmwave_routine(int, char **);
X-void DrawBar(float percent, int dx, int dy);
X-void DrawGreenBar(float percent, int dx, int dy);
X+inline void
X+DrawBar(float percent, int dx, int dy)
X+{
X+	int             tx;
X 
X-inline void DrawBar(float percent, int dx, int dy) {
X-  int tx;
X-  
X-  tx = (float)((float)54 * ((float)percent / (float)100.0));
X-  copyXPMArea(67, 36, tx, 4, dx, dy);
X-  copyXPMArea(67, 43, 54-tx, 4, dx+tx, dy); 
X+	tx = (float)((float)54 * ((float)percent / (float)100.0));
X+	copyXPMArea(67, 36, tx, 4, dx, dy);
X+	copyXPMArea(67, 43, 54 - tx, 4, dx + tx, dy);
X }
X 
X 
X-inline void DrawGreenBar(float percent, int dx, int dy) {
X-  int tx;
X-  
X-  tx = (float)((float)54 * ((float)percent / (float)100.0));
X-  copyXPMArea(67, 58, tx, 4, dx, dy);
X-  copyXPMArea(67, 43, 54-tx, 4, dx+tx, dy); 
X-}
X+inline void
X+DrawGreenBar(float percent, int dx, int dy)
X+{
X+	int             tx;
X 
X-inline void DrawRedDot() {
X-  copyXPMArea(80, 65, 6, 6, 52, 5);
X+	tx = (float)((float)54 * ((float)percent / (float)100.0));
X+	copyXPMArea(67, 58, tx, 4, dx, dy);
X+	copyXPMArea(67, 43, 54 - tx, 4, dx + tx, dy);
X }
X 
X-inline void DrawYellowDot() {
X-  copyXPMArea(86, 65, 6, 6, 52, 5);
X+inline void
X+DrawRedDot()
X+{
X+	copyXPMArea(80, 65, 6, 6, 52, 5);
X }
X 
X-inline void DrawGreenDot() {
X-  copyXPMArea(92, 65, 6, 6, 52, 5);
X+inline void
X+DrawYellowDot()
X+{
X+	copyXPMArea(86, 65, 6, 6, 52, 5);
X }
X 
X-inline void DrawEmptyDot() {
X-  copyXPMArea(98, 65, 6, 6, 52, 5);
X+inline void
X+DrawGreenDot()
X+{
X+	copyXPMArea(92, 65, 6, 6, 52, 5);
X }
X 
X-float min (float x, float y) {
X-  if (x < y) {return x;}
X-  else {return y;}
X+inline void
X+DrawEmptyDot()
X+{
X+	copyXPMArea(98, 65, 6, 6, 52, 5);
X }
X 
X /*
X- * Find CPU times for all processes
X+ * XXX: redefining min() to operate on floats is a bad idea;
X+ * changed to _fmin().
X  */
X-void DisplayWireless(void) {
X-  FILE *wireless;   // File handle for /proc/net/wireless
X-					      
X-  char line[255];
X-  char iface[5];
X-  char status [3];
X-  float link = 0;
X-  float level = 0;
X-  float noise = 0;
X-  int nwid = 0;
X-  int crypt = 0;
X-  int misc = 0;
X-  
X-  if ((wireless = fopen ("/proc/net/wireless", "r")) != NULL)
X-    {
X-      fgets(line,sizeof(line),wireless);
X-      fgets(line,sizeof(line),wireless);
X-      if (fgets(line,sizeof(line),wireless) == NULL) {
X-	mode = 0;
X-      }
X-      else {
X-	sscanf(line,"%s %s %f %f %f %d %d %d",
X-	       iface,status,&link,&level,&noise,&nwid,&crypt,&misc);
X-	mode = 1;
X-      }
X-      fclose(wireless);
X-      
X-      
X-      /* Print channel information, and signal ratio */
X-      
X-      switch (mode) {
X-      case 1: BlitString("Quality",4,4);
X-	if (link<=10) {DrawRedDot ();}
X-	else if (link<=20) {DrawYellowDot ();}
X-	else {DrawGreenDot();};
X-	BlitString("Link     ", 4,18);	
X-	DrawBar(min ((int)(link * 1.8), 100.0), 4, 27);
X-	BlitString("Level    ", 4,32);
X-	DrawGreenBar(min ((int)(level * 0.3), 100.0), 4, 41);
X-	BlitString("Noise    ", 4,46);
X-	DrawGreenBar(min ((int)(noise * 0.3), 100.0), 4, 55);
X-	break;
X-      case 0: BlitString("NO CARD",4,4);
X-	DrawEmptyDot();
X-	BlitString("         ", 4,18);
X-	DrawBar(0.0, 4, 27);
X-	BlitString("         ", 4,32);
X-	DrawGreenBar(0.0, 4, 41);
X-	BlitString("         ", 4,46);
X-	DrawGreenBar(0.0, 4, 55);
X-	break;
X-      };
X-    }
X-  else {
X-    printf ("Wirless device /proc/net/wireless not found\nEnable radio networking and recompile your kernel\n");
X-    exit (0);
X-  }
X-}
X-
X-/* SIGCHLD handler */
X-void sig_chld(int signo)
X-{
X-  waitpid((pid_t) -1, NULL, WNOHANG);
X-  signal(SIGCHLD, sig_chld);
X-}
X-
X-int main(int argc, char *argv[]) {
X-  int i;
X-  
X-  /* Parse Command Line */
X-  
X-  signal(SIGCHLD, sig_chld);
X-  ProgName = argv[0];
X-  if (strlen(ProgName) >= 5)
X-    ProgName += (strlen(ProgName) - 5);
X-  
X-  for (i=1; i<argc; i++) {
X-    char *arg = argv[i];
X-    
X-    if (*arg=='-') {
X-      switch (arg[1]) {
X-      case 'd' :
X-	if (strcmp(arg+1, "display")) {
X-	  usage();
X-	  exit(1);
X+float
X+_fmin(float x, float y)
X+{
X+	if (x < y) {
X+		return x;
X+	} else {
X+		return y;
X 	}
X-	break;
X-      case 'g' :
X-	if (strcmp(arg+1, "geometry")) {
X-	  usage();
X-	  exit(1);
X+}
X+
X+/*
X+ * XXX: Fetch OS-specific wireless statistics.
X+ * 
X+ * These are: quality, signal, noise. On NetBSD, the 
X+ * statistics kept on an AP-basis for the driver are valid.
X+ * On FreeBSD, it is necessary to interrogate the WICACHE.
X+ * For the purposes of keeping things simple, this code will only
X+ * look at the first slot in the WICACHE table.
X+ */
X+void
X+DisplayWireless(void)
X+{
X+        struct ifreq             ifr;
X+        struct wi_req            wireq;
X+        struct wi_sigcache      *wisigsp;
X+        int                     *wisigsnp, s, mode, err;
X+	float  	                 link, level, noise;
X+	enum {
X+		MODE_NO_CARD = 0,
X+		MODE_HAVE_CARD = 1
X+	};
X+
X+        s = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP);
X+        if (s == -1) 
X+                errx(errno, "socket");
X+        bzero(&ifr, sizeof(ifr));
X+        strncpy(ifr.ifr_name, iface, strlen(iface));
X+        bzero(&wireq, sizeof(wireq));
X+        wireq.wi_type = WI_RID_READ_CACHE;
X+        wireq.wi_len = WI_MAX_DATALEN;
X+        ifr.ifr_data = (void *) &wireq;
X+
X+        err = ioctl(s, SIOCGWAVELAN, (caddr_t)&ifr);
X+        if (err < 0) {
X+		mode = MODE_NO_CARD;
X+		goto draw;
X+        }
X+        wisigsnp = (int *) &wireq.wi_val;
X+	if (*wisigsnp < 1) {
X+		mode = MODE_NO_CARD;
X+		goto draw;
X 	}
X-	break;
X-      case 'v' :
X-	printversion();
X-	exit(0);
X-	break;
X-      case 'r':
X-	if (argc > (i+1)) {
X-	  update_rate = (atoi(argv[i+1]) * 1000);
X-	  i++;
X+
X+	mode = MODE_HAVE_CARD;
X+        wisigsp = (struct wi_sigcache *) (wisigsnp+1);
X+	link  = wisigsp->quality * 1.0;
X+	level = wisigsp->signal  * -1.0;
X+	noise = wisigsp->noise   * -1.0;
X+draw:
X+	/*
X+	 * Print channel information, and signal ratio
X+	 */
X+	switch (mode) {
X+	case MODE_HAVE_CARD:
X+		BlitString("Quality", 4, 4);
X+		if (link <= 10) {
X+			DrawRedDot();
X+		} else if (link <= 20) {
X+			DrawYellowDot();
X+		} else {
X+			DrawGreenDot();
X+		};
X+		BlitString("Link     ", 4, 18);
X+		DrawBar(_fmin((int)(link * 1.8), 100.0), 4, 27);
X+		BlitString("Level    ", 4, 32);
X+		DrawGreenBar(_fmin((int)(level * 0.3), 100.0), 4, 41);
X+		BlitString("Noise    ", 4, 46);
X+		DrawGreenBar(_fmin((int)(noise * 0.3), 100.0), 4, 55);
X+		break;
X+	case MODE_NO_CARD:
X+	default:
X+		BlitString("NO CARD", 4, 4);
X+		DrawEmptyDot();
X+		BlitString("         ", 4, 18);
X+		DrawBar(0.0, 4, 27);
X+		BlitString("         ", 4, 32);
X+		DrawGreenBar(0.0, 4, 41);
X+		BlitString("         ", 4, 46);
X+		DrawGreenBar(0.0, 4, 55);
X+		break;
X+	};
X+}
X+
X+void
X+sig_chld(int signo)
X+{
X+	waitpid((pid_t) - 1, NULL, WNOHANG);
X+	signal(SIGCHLD, sig_chld);
X+}
X+
X+int
X+main(int argc, char *argv[])
X+{
X+	int             i;
X+
X+
X+	signal(SIGCHLD, sig_chld);
X+
X+	ProgName = argv[0];
X+	if (strlen(ProgName) >= 5)
X+		ProgName += (strlen(ProgName) - 5);
X+
X+	for (i = 1; i < argc; i++) {
X+		char           *arg = argv[i];
X+
X+		if (*arg == '-') {
X+			switch (arg[1]) {
X+			case 'i':
X+				if (argc > (i + 1)) {
X+					iface = argv[i+1];
X+					if (strncmp("wi", iface, 2) != 0) {
X+						fprintf(stderr, "error: you "
X+					"must specify a wiX interface.\n");
X+						usage();
X+						exit(EX_USAGE);
X+					}
X+				}
X+				break;
X+			case 'd':
X+				if (strcmp(arg + 1, "display")) {
X+					usage();
X+					exit(EX_USAGE);
X+				}
X+				break;
X+			case 'g':
X+				if (strcmp(arg + 1, "geometry")) {
X+					usage();
X+					exit(EX_USAGE);
X+				}
X+				break;
X+			case 'v':
X+				printversion();
X+				exit(EX_OK);
X+				break;
X+			case 'r':
X+				if (argc > (i + 1)) {
X+					update_rate = (atoi(argv[i+1]) * 1000);
X+					i++;
X+				}
X+				break;
X+			default:
X+				usage();
X+				exit(EX_USAGE);
X+				break;
X+			}
X+		}
X 	}
X-	break;
X-      default:
X-	usage();
X-	exit(0);
X-	break;
X-      }
X-    }
X-  }
X-  
X-  wmwave_routine(argc, argv);
X-  
X-  return 0;
X+
X+	wmwave_routine(argc, argv);
X+
X+	exit(EX_OK);
X }
X 
X /*
X  * Main loop
X  */
X-void wmwave_routine(int argc, char **argv) {
X-  XEvent Event;
X-  struct timeval tv={0,0};
X-  struct timeval last={0,0};
X-  
X-  createXBMfromXPM(wmwave_mask_bits, wmwave_master_xpm, wmwave_mask_width, wmwave_mask_height);
X-  
X-  openXwindow(argc, argv, wmwave_master_xpm, wmwave_mask_bits, wmwave_mask_width, wmwave_mask_height);
X-  
X-  RedrawWindow();
X-  
X-  
X-  while (1) {
X-    
X-    curtime = time(0);
X-    
X-    if (1) {
X-      memcpy(&last, &tv, sizeof(tv));
X-      
X-      /*
X-       * Update display
X-       */
X-      DisplayWireless();
X-      
X-      RedrawWindow();
X-    }
X-    
X-    /*
X-     * X Events
X-     */
X-    while (XPending(display)) {
X-      XNextEvent(display, &Event);
X-      switch (Event.type) {
X-      case Expose:
X+void
X+wmwave_routine(int argc, char **argv)
X+{
X+	XEvent          Event;
X+	struct timeval  tv = {0, 0};
X+	struct timeval  last = {0, 0};
X+
X+	createXBMfromXPM(wmwave_mask_bits, wmwave_master_xpm, wmwave_mask_width, wmwave_mask_height);
X+
X+	openXwindow(argc, argv, wmwave_master_xpm, wmwave_mask_bits, wmwave_mask_width, wmwave_mask_height);
X+
X 	RedrawWindow();
X-	break;
X-      case DestroyNotify:
X-	XCloseDisplay(display);
X-	exit(0);
X-      case ButtonPress:
X-	switch (screen) {
X-	case 0: screen=1; break;
X-	case 1: screen=0; break;
X-	};
X-	break;
X-      }
X-    }
X-    
X-    usleep(update_rate);
X-  }
X+
X+	for (;;) {
X+		curtime = time(0);
X+		memcpy(&last, &tv, sizeof(tv));
X+
X+		/*
X+		 * Update display
X+		 */
X+		DisplayWireless();
X+		RedrawWindow();
X+
X+		/*
X+		 * X Events
X+		 */
X+		while (XPending(display)) {
X+			XNextEvent(display, &Event);
X+			switch (Event.type) {
X+			case Expose:
X+				RedrawWindow();
X+				break;
X+			case DestroyNotify:
X+				XCloseDisplay(display);
X+				exit(EX_OK);
X+			case ButtonPress:
X+				switch (screen) {
X+				case 0:
X+					screen = 1;
X+					break;
X+				case 1:
X+					screen = 0;
X+					break;
X+				};
X+				break;
X+			}
X+		}
X+		usleep(update_rate);
X+	}
X }
X 
X /*
X  * Blits a string at given co-ordinates
X  */
X-void BlitString(char *name, int x, int y) {
X-  int	i;
X-  int	c;
X-  int	k;
X-  
X-  k = x;
X-  for (i=0; name[i]; i++)
X-    {
X-      
X-      c = toupper(name[i]); 
X-      if (c >= 'A' && c <= 'Z')
X-        {   // its a letter
X-		 c -= 'A';
X-	copyXPMArea(c * 6, 74, 6, 8, k, y);
X-	k += 6;
X-	} else
X-	  if (c>='0' && c<='9') {   // its a number or symbol
X-					 c -= '0';
X-	  copyXPMArea(c * 6, 64, 6, 8, k, y);
X-	  k += 6;
X-	  } else {
X-	    copyXPMArea(5, 84, 6, 8, k, y);
X-	    k += 6;
X-	    
X-	  }
X-    }
X-}
X-
X-void BlitNum(int num, int x, int y) {
X-  char buf[1024];
X-  int newx=x;
X-  
X-  sprintf(buf, "%03i", num);
X-  
X-  BlitString(buf, newx, y);
X+void
X+BlitString(char *name, int x, int y)
X+{
X+	int             i;
X+	int             c;
X+	int             k;
X+
X+	k = x;
X+	for (i = 0; name[i]; i++) {
X+
X+		c = toupper(name[i]);
X+		if (c >= 'A' && c <= 'Z') {	/* its a letter */
X+			c -= 'A';
X+			copyXPMArea(c * 6, 74, 6, 8, k, y);
X+			k += 6;
X+		} else if (c >= '0' && c <= '9') {
X+			/* its a number or symbol */
X+			c -= '0';
X+			copyXPMArea(c * 6, 64, 6, 8, k, y);
X+			k += 6;
X+		} else {
X+			copyXPMArea(5, 84, 6, 8, k, y);
X+			k += 6;
X+
X+		}
X+	}
X+}
X+
X+void
X+BlitNum(int num, int x, int y)
X+{
X+	char            buf[1024];
X+	int             newx = x;
X+
X+	sprintf(buf, "%03i", num);
X+	BlitString(buf, newx, y);
X }
X 
X /*
X  * Usage
X  */
X-void usage(void) {
X-  fprintf(stderr, "\nWmwave - Carsten Schuermann <carsten@schuermann.org>  http://www.schuermann.org/~dockapps\n\n");
X-  fprintf(stderr, "usage:\n");
X-  fprintf(stderr, "    -display <display name>\n");
X-  fprintf(stderr, "    -r                        update rate in milliseconds (default:100)\n");
X-  fprintf(stderr, "\n");
X+void
X+usage(void)
X+{
X+	fprintf(stderr, "\rwmwave 0.4 - by Bruce M Simpson <bms@spc.org> et al. \n");
X+	fprintf(stderr, "usage:\n");
X+	fprintf(stderr, "    -display  <display name>\n");
X+	fprintf(stderr, "    -i        interface to use (default to wi0)\n");
X+	fprintf(stderr, "    -r        update rate in milliseconds (default:100)\n");
X+	fprintf(stderr, "\n");
X }
X 
X /*
X  * printversion
X  */
X-void printversion(void) {
X-  fprintf(stderr, "wmwave v%s\n", WMWAVE_VERSION);
X+void
X+printversion(void)
X+{
X+	fprintf(stderr, "wmwave v%s\n", WMWAVE_VERSION);
X }
END-of-wmwave/files/patch-ab
echo x - wmwave/pkg-descr
sed 's/^X//' >wmwave/pkg-descr << 'END-of-wmwave/pkg-descr'
XFrom the README on the website:
X
Xwmwave is dockapp for window maker to display statistical information
Xabout a current wireless ethernet connection. The current release is
XVersion 0.4. wmwave has been tested under Redhat 5.2 with an Wavelan
XSilver WEP/IEEE card from Lucent Technologies.
X
XI have rewritten the network code for use with Bill Paul's wi(4)
Xdriver as it appears in FreeBSD 5.0-CURRENT and 4.4-STABLE. Support
Xfor other cards will not be integrated into this GPLed version.
X
XAuthors: Bruce M Simpson, Carsten Schuermann, Dan Piponi, Dave Clark
XWWW:	http://www.schuermann.org/~dockapps/
X
XBruce
Xbms@spc.org
END-of-wmwave/pkg-descr
echo x - wmwave/distinfo
sed 's/^X//' >wmwave/distinfo << 'END-of-wmwave/distinfo'
XMD5 (wmwave-0-4.tgz) = 24e985599a85d7165e5905b9d34cd81d
END-of-wmwave/distinfo
echo x - wmwave/Makefile
sed 's/^X//' >wmwave/Makefile << 'END-of-wmwave/Makefile'
X# New ports collection makefile for:    wmwave
X# Date created:         27 December 2001
X# Whom:                 Bruce M Simpson <bms@spc.org>
X#
X# $FreeBSD$
X#
X
XPORTNAME=       wmwave
XPORTVERSION=    0.4
XCATEGORIES=     net
XMASTER_SITES=   http://www.schuermann.org/~dockapps/dist/
XDISTNAME=	wmwave-0-4
XEXTRACT_SUFX=	.tgz
X
XMAINTAINER=     bms@spc.org
X
XWRKSRC=		${WRKDIR}/${PORTNAME}
XUSE_XPM=	yes
X
XMAN1=		wmwave.1
XMANCOMPRESSED=	yes
X
X# configure is a no-op for this port.
Xdo-configure:
X
X.include <bsd.port.mk>
END-of-wmwave/Makefile
echo x - wmwave/pkg-comment
sed 's/^X//' >wmwave/pkg-comment << 'END-of-wmwave/pkg-comment'
XDisplay 802.11 status in the WindowMaker Dock
END-of-wmwave/pkg-comment
echo x - wmwave/pkg-plist
sed 's/^X//' >wmwave/pkg-plist << 'END-of-wmwave/pkg-plist'
Xbin/wmwave
END-of-wmwave/pkg-plist
exit
--- wmwave.shar ends here ---


>Release-Note:
>Audit-Trail:
>Unformatted:

To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-ports" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20011227131958.049D52102C>