Merge from vendor branch NTPD:
[dragonfly.git] / usr.sbin / pcvt / demo / playvt.c
1 /*
2  * Copyright (c) 1995 Hellmuth Michaelis
3  *
4  * All rights reserved.
5  *
6  * Redistribution and use in source and binary forms, with or without
7  * modification, are permitted provided that the following conditions
8  * are met:
9  * 1. Redistributions of source code must retain the above copyright
10  *    notice, this list of conditions and the following disclaimer.
11  * 2. Redistributions in binary form must reproduce the above copyright
12  *    notice, this list of conditions and the following disclaimer in the
13  *    documentation and/or other materials provided with the distribution.
14  * 3. All advertising materials mentioning features or use of this software
15  *    must display the following acknowledgement:
16  *      This product includes software developed by Hellmuth Michaelis
17  * 4. The name authors may not be used to endorse or promote products
18  *    derived from this software without specific prior written permission.
19  *
20  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
21  * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
22  * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
23  * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
24  * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
25  * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
26  * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
27  * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
28  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
29  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
30  *
31  * $DragonFly: src/usr.sbin/pcvt/demo/Attic/playvt.c,v 1.2 2004/03/24 17:46:22 cpressey Exp $
32  */
33
34 static char *id =
35         "@(#)playvt.c, 1.00, Last Edit-Date: [Sun Jan  1 18:32:22 1995]";
36
37 /*---------------------------------------------------------------------------*
38  *
39  *      history:
40  *
41  *      -hm     want to see my xmas greeting ... :-)
42  *
43  *---------------------------------------------------------------------------*/
44
45 #include <stdio.h>
46 #include <unistd.h>
47
48 static void usage(void);
49
50 main(int argc, char **argv)
51 {
52         extern int optind;
53         extern int opterr;
54         extern char *optarg;
55
56         int c;
57         FILE *fp = stdin;
58         volatile int i;
59         int delay = 0;
60         int fflag = -1;
61         char *filename;
62
63         while( (c = getopt(argc, argv, "d:f:")) != -1)
64         {
65                 switch(c)
66                 {
67                         case 'd':
68                                 delay = atoi(optarg);
69                                 break;
70
71                         case 'f':
72                                 filename = optarg;
73                                 fflag = 1;
74                                 break;
75
76                         case '?':
77                         default:
78                                 usage();
79                                 break;
80                 }
81         }
82
83         if(fflag == 1)
84         {
85                 if((fp = fopen(filename, "r")) == NULL)
86                 {
87                         char buffer[80];
88                         strcpy(buffer,"ERROR opening file ");
89                         strcat(buffer,filename);
90                         perror(buffer);
91                         exit(1);
92                 }
93         }
94
95         while((c = getc(fp)) != EOF)
96         {
97                 putchar(c);
98                 for(i = delay; i > 0; i--)
99                         ;
100         }
101 }
102
103 void
104 usage(void)
105 {
106         fprintf(stderr,"\nplayvt - play a VT animation with programmable delay\n");
107         fprintf(stderr,"usage: playvt -f [filename] -d [delay]\n");
108         fprintf(stderr,"       -f <filename>   file containing the animation\n");
109         fprintf(stderr,"       -d <delay>      delay between characters\n");
110         exit(1);
111 }
112