Compare commits

...

11 Commits
v1.1 ... master

Author SHA1 Message Date
Morgan Aldridge
ab66e82584 Fixed warning re:unused parameter in readrc() 2020-03-07 12:02:09 -05:00
Morgan Aldridge
ebc53bb8cb Formatting: variables indentation 2020-03-07 11:55:16 -05:00
Morgan Aldridge
af25a06059 Formatting: remove white space 2020-03-07 11:50:48 -05:00
Morgan Aldridge
67f6bf5d9a Formatting: clean up indentation 2020-03-07 11:46:51 -05:00
Morgan Aldridge
ca8f15da73 Formatting: fix spacing around ++ operators 2020-03-07 11:30:06 -05:00
Morgan Aldridge
21b70aa8ba Formatting: fix spacing around parens 2020-03-07 11:28:09 -05:00
Morgan Aldridge
029a115737 Formatting: fix spacing around commas 2020-03-07 11:01:56 -05:00
Morgan Aldridge
7ccb534456 Formatting: remove spaces before semicolons 2020-03-07 10:55:43 -05:00
Morgan Aldridge
d759f5319d Added manual compilation & installation instructions 2020-03-06 11:10:47 -05:00
Morgan Aldridge
0e75409e92 Fix for .mlclockrc parsing 2020-03-06 11:01:08 -05:00
Morgan Aldridge
e8040460b4 Fixes required to compile with clang 2020-03-03 19:04:10 -05:00
2 changed files with 361 additions and 355 deletions

5
README
View File

@ -5,6 +5,11 @@ HOW TO COMPILE
1) xmkmf
2) make
-or-
1) C_INCLUDE_PATH="/usr/X11R6/include" LIBRARY_PATH="/usr/X11R6/lib" clang -std=c11 -pedantic -D_DEFAULT_SOURCE mlclock.c -o mlclock -lc -lm -lX11 -lXext
2) install -m 755 mlclock /usr/local/bin
HOW TO USE
Copy mlclockrc file to your home directory as ".mlclockrc" or specifyed name.

711
mlclock.c
View File

@ -34,416 +34,417 @@
#define FORM2 "(%a)%Y.%b.%d"
#define DEFAULTLANG "C"
int Mode ; /* timing of change form */
int Near ; /* the distance of activity */
int Head ; /* space of window head */
char *Form1 ; /* display form of main */
char *Form2 ; /* display form of second */
char *LocaleName ; /* locale name */
char *FSName ; /* font set name */
char *RCFile ; /* path of config file */
int Color[2][3] ; /* the color for font and background */
int Bold = False ; /* software bold font */
void SetFont( char *localename , Display *dpy , char *fsname ) ;
void readrc() ;
void getRGB( char *color , int *store ) ;
void usage( char *name ) ;
int Mode; /* timing of change form */
int Near; /* the distance of activity */
int Head; /* space of window head */
char *Form1; /* display form of main */
char *Form2; /* display form of second */
char *LocaleName; /* locale name */
char *FSName; /* font set name */
char *RCFile; /* path of config file */
int Color[2][3]; /* the color for font and background */
int Bold = False; /* software bold font */
Display *dpy ;
Window win ;
XEvent eve ;
XRectangle ink, log;
GC gc ;
XFontSet fs ;
Colormap cmap ;
void SetFont(char *localename, Display *dpy, char *fsname);
void readrc();
void getRGB(char *color, int *store);
void usage(char *name);
struct timeval wait ;
Display *dpy;
Window win;
XEvent eve;
XRectangle ink, logical;
GC gc;
XFontSet fs;
Colormap cmap;
void main( int argc , char **argv ){
char str[MAX_FORM] , str2[MAX_FORM] , *form = NULL ;
int screen , sw = False , lsec = 0 , uhead , width , height , i ;
struct tm *tmm ;
time_t tmt ;
struct timeval wait;
Window root , child ;
int rootx , rooty , wx , wy ;
unsigned int key ;
XColor xcol ;
XSizeHints hint ;
int iro[2] ;
wait.tv_usec = 200000 ;
wait.tv_sec = 0 ;
str[0] = '\0' ;
i = 1 ;
while( i < argc ){
if ( !strcmp( "-display" , argv[i] )){
i++ ;
int main(int argc, char **argv) {
char str[MAX_FORM], str2[MAX_FORM], *form = NULL;
int screen, sw = False, lsec = 0, uhead, width, height, i;
struct tm *tmm;
time_t tmt;
Window root, child;
int rootx, rooty, wx, wy;
unsigned int key;
XColor xcol;
XSizeHints hint;
int iro[2];
wait.tv_usec = 200000;
wait.tv_sec = 0;
str[0] = '\0';
i = 1;
while ( i < argc ) {
if ( !strcmp("-display", argv[i]) ) {
i++;
if ( argc >= argc )
usage( argv[0]) ;
strcpy( str , argv[i] ) ;
break ;
usage(argv[0]);
strcpy(str, argv[i]);
break;
}
usage(argv[0]) ;
usage(argv[0]);
}
dpy = XOpenDisplay(NULL);
if ( dpy == NULL ){
fprintf( stderr , "Can't open display.\n" ) ;
exit(0) ;
if ( dpy == NULL ) {
fprintf(stderr, "Can't open display.\n");
exit(0);
}
screen = DefaultScreen( dpy ) ;
gc = DefaultGC( dpy , screen ) ;
cmap = DefaultColormap( dpy , screen ) ;
readrc() ;
if (XSupportsLocale() == False)
fprintf(stderr,"X does not support the locale\n");
SetFont( LocaleName , dpy , FSName ) ;
XSetForeground( dpy , gc , BlackPixel( dpy , screen )) ;
setlocale(LC_TIME, LocaleName );
time( &tmt ) ;
tmm = localtime( &tmt ) ;
screen = DefaultScreen(dpy);
gc = DefaultGC(dpy, screen);
cmap = DefaultColormap(dpy, screen);
readrc();
if ( XSupportsLocale() == False )
fprintf(stderr,"X does not support the locale\n");
SetFont(LocaleName, dpy, FSName);
XSetForeground(dpy, gc, BlackPixel(dpy, screen));
setlocale(LC_TIME, LocaleName);
time(&tmt);
tmm = localtime(&tmt);
tmm->tm_sec = 59;
tmm->tm_min = 59;
tmm->tm_hour = 23;
tmm->tm_mday = 30;
tmm->tm_yday = 365;
strftime(str, MAX_FORM, Form1 , tmm);
XmbTextExtents( fs , str , strlen(str) , &ink, &log);
width=log.width ;
uhead = log.y ;
height = log.height ;
strftime(str, MAX_FORM, Form1, tmm);
XmbTextExtents(fs, str, strlen(str), &ink, &logical);
width=logical.width;
uhead = logical.y;
height = logical.height;
strftime(str, MAX_FORM, Form2 , tmm);
XmbTextExtents( fs , str , strlen(str) , &ink, &log);
if ( width < log.width )
width = log.width ;
if ( uhead < log.y )
uhead = log.y ;
if ( height < log.height )
height = log.height ;
strftime(str, MAX_FORM, Form2, tmm);
XmbTextExtents(fs, str, strlen(str), &ink, &logical);
if ( width < logical.width )
width = logical.width;
if ( uhead < logical.y )
uhead = logical.y;
if ( height < logical.height )
height = logical.height;
xcol.flags = DoRed|DoGreen|DoBlue ;
for ( i = 0 ; i < 2 ; i ++ ){
xcol.red = Color[i][0] ;
xcol.green = Color[i][1] ;
xcol.blue = Color[i][2] ;
if ( XAllocColor( dpy , cmap , &xcol ))
iro[i] = xcol.pixel ;
else fprintf(stderr,"Can't allocate Color \n" ) ;
}
win = XCreateSimpleWindow( dpy , DefaultRootWindow( dpy ) ,
0 , 0 , width + 3 , height + Head + 2 , 0 ,
iro[0] ,iro[1] ) ;
hint.max_width = hint.min_width = width + 3 ;
hint.max_height = hint.min_height = height + Head + 2 ;
hint.flags = PMinSize | PMaxSize;
XSetNormalHints(dpy , win , &hint);
XSelectInput( dpy , win , ButtonReleaseMask ) ;
XStoreName( dpy , win , "mlclock" ) ;
XSetForeground( dpy , gc , iro[0] ) ;
XSync( dpy , 0 );
XMapWindow( dpy ,win ) ;
XSync( dpy , 0 );
str2[0] = '\0' ;
form = Form1 ;
while(1){
select( 0 , (fd_set *)0 , (fd_set *)0 , (fd_set *)0 , &wait) ;
time( &tmt ) ;
tmm = localtime( &tmt ) ;
if ( Mode == FOCUS ){
XQueryPointer( dpy , win , &root , &child , &rootx,&rooty , &wx,&wy,&key);
if (( -Near < wx ) && ( wx < width + Near ) &&
( -Near < wy ) && ( wy < height + Near + Head ))
form = Form2 ;
else
form = Form1 ; }
xcol.flags = DoRed|DoGreen|DoBlue;
for ( i = 0; i < 2; i++ ) {
xcol.red = Color[i][0];
xcol.green = Color[i][1];
xcol.blue = Color[i][2];
if ( XAllocColor(dpy, cmap, &xcol) )
iro[i] = xcol.pixel;
else
if ( Mode == CLICK ){
if( XEventsQueued( dpy, QueuedAfterFlush ) ){
XNextEvent( dpy , &eve ) ;
if ( eve.type == ButtonRelease ){
if ( !sw ){
sw = True ;
lsec = tmm->tm_sec ;
form = Form2 ;
fprintf(stderr,"Can't allocate Color \n");
}
win = XCreateSimpleWindow(dpy, DefaultRootWindow(dpy),
0, 0, width + 3, height + Head + 2, 0,
iro[0], iro[1]);
hint.max_width = hint.min_width = width + 3;
hint.max_height = hint.min_height = height + Head + 2;
hint.flags = PMinSize | PMaxSize;
XSetNormalHints(dpy, win, &hint);
XSelectInput(dpy, win, ButtonReleaseMask);
XStoreName(dpy, win, "mlclock");
XSetForeground(dpy, gc, iro[0]);
XSync(dpy, 0);
XMapWindow(dpy, win);
XSync(dpy, 0);
str2[0] = '\0';
form = Form1;
while (1) {
select(0, (fd_set *)0, (fd_set *)0, (fd_set *)0, &wait);
time(&tmt);
tmm = localtime(&tmt);
if ( Mode == FOCUS ) {
XQueryPointer(dpy, win, &root, &child, &rootx, &rooty, &wx, &wy, &key);
if ( (-Near < wx) && (wx < width + Near) &&
(-Near < wy) && (wy < height + Near + Head) )
form = Form2;
else
form = Form1;
} else if ( Mode == CLICK ) {
if ( XEventsQueued(dpy, QueuedAfterFlush) ) {
XNextEvent(dpy, &eve);
if ( eve.type == ButtonRelease ) {
if ( !sw ) {
sw = True;
lsec = tmm->tm_sec;
form = Form2;
} else {
sw = False;
form = Form1;
}
}
}
else {
sw = False ;
form = Form1 ;
if ( sw ) {
if ( tmm->tm_sec < lsec )
tmm->tm_sec += 60;
if ( tmm->tm_sec > lsec + 2 ) {
sw = False;
form = Form1;
}
}
}
}
if ( sw ){
if ( tmm->tm_sec < lsec )
tmm->tm_sec += 60 ;
if ( tmm->tm_sec > lsec + 2 ){
sw = False ;
form = Form1 ;
}
}
}
strftime(str, sizeof(str),form , tmm);
if ( strcmp( str , str2 )){
XClearWindow( dpy , win ) ;
XmbDrawString( dpy , win , fs , gc, 1 , - uhead + Head + 1 , str, strlen(str));
}
strftime(str, sizeof(str), form, tmm);
if ( strcmp(str, str2) ) {
XClearWindow(dpy, win);
XmbDrawString(dpy, win, fs, gc, 1, - uhead + Head + 1, str, strlen(str));
if ( Bold )
XmbDrawString( dpy , win , fs , gc, 2 , - uhead + Head + 1 , str, strlen(str));
XSync( dpy , 0 ) ;
strcpy( str2 , str ) ;
XmbDrawString(dpy, win, fs, gc, 2, - uhead + Head + 1, str, strlen(str));
XSync(dpy, 0);
strcpy(str2, str);
}
}
return 0;
}
void SetFont( char *localename , Display *dpy , char *fsname )
{
void SetFont(char *localename, Display *dpy, char *fsname) {
char **miss, *def;
int nMiss;
int nMiss;
if (setlocale(LC_ALL, localename) == NULL)
if ( setlocale(LC_ALL, localename) == NULL )
fprintf(stderr,"Can't set the locale\n");
fs = XCreateFontSet( dpy , fsname , &miss, &nMiss, &def);
if (fs == NULL)
fprintf(stderr,"Can't get fontset.\n" ) ;
fs = XCreateFontSet(dpy, fsname, &miss, &nMiss, &def);
if ( fs == NULL )
fprintf(stderr,"Can't get fontset.\n");
}
void readrc(){
int i , end , len , sw1 , cn = 0 ;
char string[501] , work[201] , code[100] , data[100] , *ptr ;
char *fore , *back ;
void readrc() {
int i, end, len, sw1, cn = 0;
char string[501], work[201], code[100], data[100], *ptr;
char *fore, *back;
struct _name {
char name[10] ;
int sw ;
} ;
char name[10];
int sw;
};
FILE *file ;
struct _name N[] ={
{ "FORM1" , 1 } ,
{ "FORM2" , 2 } ,
{ "NEAR" , 3 } ,
{ "EVENT" , 4 } ,
{ "LOCALE" , 5 } ,
{ "FONTSET" , 6 } ,
{ "HEAD" , 7 } ,
{ "FONTCOLOR" , 8 } ,
{ "BACKCOLOR" , 9 } ,
{ "BOLD" , 10 } ,
{ "" , 0 }} ;
FILE *file;
Mode = Near = Head = NONE ;
Form1 = Form2 = LocaleName = FSName = NULL ;
for ( i = 0 ; i < 3 ; i ++ ){
Color[0][i] = 0 ;
Color[1][i] = 0xffff ;
struct _name N[] = {
{ "FORM1", 1 },
{ "FORM2", 2 },
{ "NEAR", 3 },
{ "EVENT", 4 },
{ "LOCALE", 5 },
{ "FONTSET", 6 },
{ "HEAD", 7 },
{ "FONTCOLOR", 8 },
{ "BACKCOLOR", 9 },
{ "BOLD", 10 },
{ "", 0 }
};
Mode = Near = Head = NONE;
Form1 = Form2 = LocaleName = FSName = NULL;
for ( i = 0; i < 3; i++ ) {
Color[0][i] = 0;
Color[1][i] = 0xffff;
}
RCFile = malloc ( sizeof( RCFILE ) + strlen( getenv("HOME")) + 3 ) ;
sprintf( RCFile , "%s/%s",getenv("HOME"),RCFILE ) ;
if ( ( file = fopen( RCFile , "r" )) == NULL ){
fprintf( stderr , "Can't open \"%s\" file.\n" , RCFile ) ;
fprintf( stderr , "Now making rc file.\n" , RCFile ) ;
if ((file = fopen( RCFile , "a" )) == NULL )
fprintf( stderr , "You can't make rc file in your own dirctory.\n" ) ;
else{
fprintf( file , "FORM1 = \"(%%a)%%l:%%M:%%S%%p\"\n") ;
fprintf( file , "FORM2 = \"(%%a)%%b-%%d\"\n") ;
fprintf( file , "EVENT = FOCUS ; FOCUS or CLICK\n") ;
fprintf( file , "NEAR = 10\n" ) ;
fprintf( file , "LOCALE = \"C\"\n") ;
fprintf( file , "FONTSET = \"-*-*-medium-r-normal--12-*\"\n") ;
fprintf( file , "HEAD = 5\n") ;
fprintf( file , "FONTCOLOR = \"blue\"\n" ) ;
fprintf( file , "BACKCOLOR = \"white\"\n" ) ;
fprintf( file , "BOLD = FALSE ; TRUE or FALSE\n" ) ;
fclose ( file ) ;
fprintf( stderr , "Created %s file.\n" , RCFile ) ;
RCFile = malloc(sizeof(RCFILE) + strlen(getenv("HOME")) + 3);
sprintf(RCFile, "%s/%s", getenv("HOME"), RCFILE);
if ( (file = fopen(RCFile, "r")) == NULL ) {
fprintf(stderr, "Can't open \"%s\" file.\n", RCFile);
fprintf(stderr, "Now making rc file '%s'.\n", RCFile);
if ( (file = fopen(RCFile, "a")) == NULL )
fprintf(stderr, "You can't make rc file in your own dirctory.\n");
else {
fprintf(file, "FORM1 = \"(%%a)%%l:%%M:%%S%%p\"\n");
fprintf(file, "FORM2 = \"(%%a)%%b-%%d\"\n");
fprintf(file, "EVENT = FOCUS ; FOCUS or CLICK\n");
fprintf(file, "NEAR = 10\n");
fprintf(file, "LOCALE = \"C\"\n");
fprintf(file, "FONTSET = \"-*-*-medium-r-normal--12-*\"\n");
fprintf(file, "HEAD = 5\n");
fprintf(file, "FONTCOLOR = \"blue\"\n");
fprintf(file, "BACKCOLOR = \"white\"\n");
fprintf(file, "BOLD = FALSE ; TRUE or FALSE\n");
fclose(file);
fprintf(stderr, "Created %s file.\n", RCFile);
}
} else {
while ( fgets(string, 500, file) ) {
end = FALSE;
i = 0;
sw1 = False;
while ( string[i] != ';' && string[i] != '\0' && string[i] != '\n' ) {
if ( string[i] == '=' && sw1 == False ) {
string[i] = ' ';
sw1 = True;
}
work[i] = string[i];
i++;
}
work[i] = '\0';
if ( sw1 == False )
continue;
code[0] = '\0';
data[0] = '\0';
sscanf(work, "%s %s", code, data);
if ( code[0] == '\0' )
continue;
i = 0;
while ( True ) {
if ( N[i].name[0] == '\0' ) {
cn = 0;
break;
}
if ( !strcmp(N[i].name, code) ) {
cn = N[i].sw;
break;
}
i++;
}
switch ( cn ) {
case 1:
len = strlen(data);
Form1 = malloc(len);
strcpy(Form1, &data[1]);
Form1[len-2] = '\0';
break;
case 2:
len = strlen(data);
Form2 = malloc(len);
strcpy(Form2, &data[1]);
Form2[len-2] = '\0';
break;
case 3:
Near = atoi(data);
break;
case 4:
if ( !strcmp(data, "FOCUS") ) {
Mode = FOCUS;
break;
}
if ( !strcmp(data, "CLICK") ) {
Mode = CLICK;
break;
}
break;
case 5:
len = strlen(data);
LocaleName = malloc(len);
strcpy(LocaleName, &data[1]);
LocaleName[len-2] = '\0';
break;
case 6:
len = strlen(data);
FSName = malloc(len);
strcpy(FSName, &data[1]);
FSName[len-2] = '\0';
break;
case 7:
Head = atoi(data);
break;
case 8:
len = strlen(data);
fore = malloc(len);
strcpy(fore, &data[1]);
fore[len-2] = '\0';
getRGB(fore, Color[0]);
break;
case 9:
len = strlen(data);
back = malloc(len);
strcpy(back, &data[1]);
back[len-2] = '\0';
getRGB(back, Color[1]);
break;
case 10:
if ( !strcmp(data, "TRUE") ) {
Bold = True;
break;
}
if ( !strcmp(data, "FALSE") ) {
Bold = False;
break;
}
break;
default:
break;
}
}
}
else
while( fgets( string , 500 , file )){
end = FALSE ;
i = 0 ;
sw1 = False ;
while( string[i] != ';' && string[i] != '\0' && string[i] != '\n' ){
if ( string[i] == '=' && sw1 == False ){
string[i] = ' ' ;
sw1 = True ;
}
work[i] = string[i++] ;
}
work[i] = '\0' ;
if ( sw1 == False )
continue ;
code[0] = '\0' ;
data[0] = '\0' ;
sscanf( work , "%s %s", code , data) ;
if ( code[0] == '\0' )
continue ;
i = 0 ;
while( True ){
if ( N[i].name[0] == '\0' ){
cn = 0 ;
break ;
}
if ( !strcmp( N[i].name , code )){
cn = N[i].sw ;
break ;
}
i ++ ;
}
switch( cn ){
case 1:
len = strlen( data ) ;
Form1 = malloc( len ) ;
strcpy( Form1 , &data[1] ) ;
Form1[len-2] = '\0' ;
break ;
case 2:
len = strlen( data ) ;
Form2 = malloc( len ) ;
strcpy( Form2 , &data[1] ) ;
Form2[len-2] = '\0' ;
break ;
case 3:
Near = atoi( data ) ;
break;
case 4:
if ( !strcmp( data , "FOCUS" )){
Mode = FOCUS ;
break ;
}
if ( !strcmp( data , "CLICK" )){
Mode = CLICK ;
break ;
}
break ;
case 5:
len = strlen( data ) ;
LocaleName = malloc( len ) ;
strcpy( LocaleName , &data[1] ) ;
LocaleName[len-2] = '\0' ;
break ;
case 6:
len = strlen( data ) ;
FSName = malloc( len ) ;
strcpy( FSName , &data[1] ) ;
FSName[len-2] = '\0' ;
break ;
case 7:
Head = atoi( data ) ;
break;
case 8:
len = strlen( data ) ;
fore = malloc( len ) ;
strcpy( fore , &data[1] ) ;
fore[len-2] = '\0' ;
getRGB( fore , Color[0] ) ;
break ;
case 9:
len = strlen( data ) ;
back = malloc( len ) ;
strcpy( back , &data[1] ) ;
back[len-2] = '\0' ;
getRGB( back , Color[1] ) ;
break ;
case 10:
if ( !strcmp( data , "TRUE" )){
Bold = True ;
break ;
}
if ( !strcmp( data , "FALSE" )){
Bold = False ;
break ;
}
break ;
default:
break ;
}
}
if ( Mode == NONE )
Mode = FOCUS ;
Mode = FOCUS;
if ( Near == NONE )
Near = NEAR ;
Near = NEAR;
if ( Head == NONE )
Head = 0 ;
if ( Form1 == NULL ){
Form1 = malloc( strlen( FORM1 ) + 1) ;
strcpy( Form1 , FORM1 ) ;
Head = 0;
if ( Form1 == NULL ) {
Form1 = malloc(strlen(FORM1) + 1);
strcpy(Form1, FORM1);
}
if ( Form2 == NULL ){
Form2 = malloc( strlen( FORM2 ) + 1) ;
strcpy( Form2 , FORM2 ) ;
if ( Form2 == NULL ) {
Form2 = malloc(strlen(FORM2) + 1);
strcpy(Form2, FORM2);
}
if ( FSName == NULL ){
FSName = malloc( strlen( DEFAULTFONT ) + 1) ;
strcpy( FSName , DEFAULTFONT ) ;
if ( FSName == NULL ) {
FSName = malloc(strlen(DEFAULTFONT) + 1);
strcpy(FSName, DEFAULTFONT);
}
if ( LocaleName == NULL ){
ptr = getenv( "LANG" ) ;
if ( LocaleName == NULL ) {
ptr = getenv("LANG");
if ( ptr == NULL )
ptr = DEFAULTLANG ;
LocaleName = malloc( strlen( ptr ) + 1) ;
strcpy( LocaleName , ptr ) ;
ptr = DEFAULTLANG;
LocaleName = malloc(strlen(ptr) + 1);
strcpy(LocaleName, ptr);
}
}
void getRGB( char *color , int *store ){
int i ;
char tmpcolor[3] ;
XColor rgb , hard ;
if ( color[0] == '#' ){
color ++ ;
for ( i = 0 ; i < 3 ; i ++ ){
strncpy( tmpcolor , color , 2 ) ;
sscanf( tmpcolor , "%x" , store ) ;
(*store) *= 256 ;
color += 2 ;
void getRGB(char *color, int *store) {
int i;
char tmpcolor[3];
XColor rgb, hard;
if ( color[0] == '#' ) {
color++;
for ( i = 0; i < 3; i++ ) {
strncpy(tmpcolor, color, 2);
sscanf(tmpcolor, "%x", store);
(*store) *= 256;
color += 2;
}
}
else {
XLookupColor( dpy , cmap , color , &rgb , &hard ) ;
store[0] = hard.red ;
store[1] = hard.green ;
store[2] = hard.blue ;
XLookupColor(dpy, cmap, color, &rgb, &hard);
store[0] = hard.red;
store[1] = hard.green;
store[2] = hard.blue;
}
}
void usage( char *name ){
printf("%s: usage\n" , name ) ;
printf(" -display display name\n\n" ) ;
printf(" Version %s\n" , VERSION );
printf(" Written by Hideki Kimata\n") ;
printf(" EMail hideki@hry.info.gifu-u.ac.jp\n" ) ;
printf(" Access to http://www.hry.info.gifu-u.ac.jp/~hideki/index.html\n" ) ;
exit(0) ;
void usage(char *name) {
printf("%s: usage\n", name);
printf(" -display display name\n\n");
printf(" Version %s\n", VERSION);
printf(" Written by Hideki Kimata\n");
printf(" EMail hideki@hry.info.gifu-u.ac.jp\n");
printf(" Access to http://www.hry.info.gifu-u.ac.jp/~hideki/index.html\n");
exit(0);
}