diff -ru bl-1.2.orig/bl.1 bl-1.2/bl.1
--- bl-1.2.orig/bl.1	Tue Dec 18 16:50:01 2001
+++ bl-1.2/bl.1	Tue Dec 18 16:53:36 2001
@@ -43,6 +43,8 @@
 delay
 between blinks.  The delay must be given in microseconds.  The default delay 
 is 125000 microseconds.  Use this option to speed up, or slow down the blinking.
+.It Fl s
+only single blink for one of LEDs
 .It Ar device
 device without the "/dev/" that you are logged in on.  These can only be 
 virtual console devices.  If you are running X, use the virtual console
diff -ru bl-1.2.orig/bl.c bl-1.2/bl.c
--- bl-1.2.orig/bl.c	Tue Dec 18 16:51:40 2001
+++ bl-1.2/bl.c	Tue Dec 18 16:54:33 2001
@@ -110,6 +110,7 @@
 int main(int argc, char *argv[])		
 {
 	int dir;	/* direction we are going */
+	int single = -1;   /* single or count repetions */
 	int delay;	/* delay between blinks */
 	char c;		/* char for getopt() */
 	char tty[10] = "/dev/";	/* device name */
@@ -142,11 +143,14 @@
 	ioctl(ttyfd,KDGETLED,&savedleds);
 
 	/* get options */
-	while((c = getopt(argc,argv,"Brlbkcd:NCS")) != -1)
+	while((c = getopt(argc,argv,"Bsrlbkcd:NCS")) != -1)
 		switch(c) {
  		case 'B':
  			background = 0;
  			break;
+ 		case 's':
+ 			single = 1;
+ 			break;
 		case 'd':
 			/* set new delay */
 			if(optarg != NULL) delay = atoi(optarg);
@@ -203,6 +207,7 @@
 		case BL_CONVERGE:
 			while(1 > 0) converge(delay);
 			break;
+
 		case BL_BLINK:
         		/* get time and seed random number generator */ 
        			now = time(&now) / rand();
@@ -215,26 +220,51 @@
                         signal(SIGQUIT,reset_num);
                         signal(SIGTERM,reset_num);
                         signal(SIGHUP,reset_num);
-                        while(1 > 0) numblink(delay);
+			 if(single > 0)
+      			 {
+				numblink(delay);
+				numblink(delay);
+			 }
+    			 else
+			 {
+				while(1 > 0)numblink(delay); 
+			 }
                         break;
                 case BL_CAPBLINK:
                         signal(SIGINT,reset_caps);
                         signal(SIGQUIT,reset_caps);
                         signal(SIGTERM,reset_caps);
                         signal(SIGHUP,reset_caps);
-                        while(1 > 0) capblink(delay);
+			 if(single > 0)
+			 {
+				capblink(delay);
+				capblink(delay);
+			 }
+			 else
+			 {
+				while(1> 0)capblink(delay);
+			 }
                         break;
                 case BL_SCRBLINK:
                         signal(SIGINT,reset_scrl);
                         signal(SIGQUIT,reset_scrl);
                         signal(SIGTERM,reset_scrl);
                         signal(SIGHUP,reset_scrl);
-                        while(1 > 0) scrblink(delay);
+			 if(single > 0)
+			 {
+				scrblink(delay);
+				scrblink(delay);
+			 }
+			 else
+			 {
+				while(1> 0)scrblink(delay);
+			 }
                         break;
 		default:
 			exit(-1);
 	}
 
+
 	exit(0);
 }
 
@@ -334,6 +364,7 @@
 	printf("-d	delay value in microseconds (default is 125000)\n");
 	printf("-h	prints out this message\n");
 	printf("-w	prints out warranty\n");
+	printf("-s	only single blink for one of LEDs\n");
 	printf("<device> is the virtual console you are logged in on (without \"/dev/\")\n");
 	printf("         or the virtual console that your X server is running on\n");
 	exit(0);
