Initial import from FreeBSD RELENG_4:
[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  */
32
33 static char *id =
34         "@(#)playvt.c, 1.00, Last Edit-Date: [Sun Jan  1 18:32:22 1995]";
35
36 /*---------------------------------------------------------------------------*
37  *
38  *      history:
39  *
40  *      -hm     want to see my xmas greeting ... :-)
41  *
42  *---------------------------------------------------------------------------*/
43
44 #include <stdio.h>
45 #include <unistd.h>
46
47 main(argc,argv)
48 int argc;
49 char *argv[];
50 {
51         extern int optind;
52         extern int opterr;
53         extern char *optarg;
54
55         int c;
56         FILE *fp = stdin;
57         volatile int i;
58         int delay = 0;
59         int fflag = -1;
60         char *filename;
61
62         while( (c = getopt(argc, argv, "d:f:")) != -1)
63         {
64                 switch(c)
65                 {
66                         case 'd':
67                                 delay = atoi(optarg);
68                                 break;
69
70                         case 'f':
71                                 filename = optarg;
72                                 fflag = 1;
73                                 break;
74
75                         case '?':
76                         default:
77                                 usage();
78                                 break;
79                 }
80         }
81
82         if(fflag == 1)
83         {
84                 if((fp = fopen(filename, "r")) == NULL)
85                 {
86                         char buffer[80];
87                         strcpy(buffer,"ERROR opening file ");
88                         strcat(buffer,filename);
89                         perror(buffer);
90                         exit(1);
91                 }
92         }
93
94         while((c = getc(fp)) != EOF)
95         {
96                 putchar(c);
97                 for(i = delay; i > 0; i--)
98                         ;
99         }
100 }
101
102
103 usage()
104 {
105         fprintf(stderr,"\nplayvt - play a VT animation with programmable delay\n");
106         fprintf(stderr,"usage: playvt -f [filename] -d [delay]\n");
107         fprintf(stderr,"       -f <filename>   file containing the animation\n");
108         fprintf(stderr,"       -d <delay>      delay between characters\n");
109         exit(1);
110 }
111