Re: I am so bored
Article: 7385 of alt.hackers Newsgroups: alt.hackers From: dawagner@flagstaff.princeton.edu (David A. Wagner) Subject: Re: I am so bored Message-ID: 1995Feb14.030931.840@Princeton.EDU Originator: news@hedgehog.Princeton.EDU Sender: news@Princeton.EDU (USENET News System) Nntp-Posting-Host: flagstaff.princeton.edu Organization: Princeton University Date: Tue, 14 Feb 1995 03:09:31 GMT Approved: by induction. Lines: 99 Status: RO
In article <1995Feb13.092210.15981@liberty.uc.wlu.edu>,
<dogan@ceng.metu.edu.tr> wrote:
> sitting by myself, I decided to turn on and off the loghts f my pc.
> The Capslock,numlock,.. : yeah the three lights on the keyboard.
Two guys (Unix gods!) who used to go to school here wrote
a program to do this on a Sun; I'll include it below for
amusement value. [Hope they don't mind.]
ObHack: hrmm... well, this one is lame, but...
Simulating tar xf without using tar.
[Someone sent me a .tar which included a file with
an absolute path (/home/user/foo); unless I'm missing
something, there's no way to tell tar to extract this
to a different path.]
-------------------------------------------------------------------------------
David Wagner dawagner@princeton.edu
/*
* stupid LEDS program for a SPARCstation, by Spencer Sun
*
* idea somewhat ripped off from Kartik Subbarao
* initial coding from scratch some time in 11/93 at the request of Jason Todd
* (I must have been really bored)
* last touched 12/8/93
*/
#include <stdio.h>
#include <stdlib.h>
#include <sys/fcntlcom.h>
#include <sys/ioctl.h>
#include <sys/types.h>
#include <sys/signal.h>
#include <sundev/kbd.h>
#include <sundev/kbio.h>
int done = 0;
void
die(void)
{
done = 1;
}
int
main(int argc, char **argv)
{
int delay = 200000, devkbd, ch, i;
char save, chararg, *argv0 = argv[0];
extern int optind;
extern char *optarg;
if ((devkbd = open("/dev/kbd", O_RDWR)) < 0)
{
perror("Can't open /dev/kbd");
return 1;
}
/* yeah, I think getopt is kind of overkill for this... */
while ((ch = getopt(argc, argv, "i:")) != EOF)
delay = atoi(optarg);
argc -= optind; argv += optind;
if (0 == argc)
{
fprintf(stderr, "Usage: %s [ -i usecs ] <pattern> [
<pattern> ... ]\n",
argv0);
return 1;
}
/* save current LED settings and set up appropriate signal handlers */
ioctl(devkbd, KIOCGLED, &save);
signal(SIGINT, die);
signal(SIGHUP, die);
signal(SIGTERM, die);
/* the main loop -- oh, boy, this is complex. */
while(!done)
for (i = 0; (i < argc) && !done; i++)
{
ch = atoi(argv[i]);
chararg = 0;
if (ch & 0x1) chararg |= LED_NUM_LOCK;
if (ch & 0x2) chararg |= LED_SCROLL_LOCK;
if (ch & 0x4) chararg |= LED_COMPOSE;
if (ch & 0x8) chararg |= LED_CAPS_LOCK;
ioctl(devkbd, KIOCSLED, &chararg);
usleep(delay);
}
/* let's be polite and clean up after ourselves */
ioctl(devkbd, KIOCSLED, &save);
return 0;
}