clean-up extra " in d/copyright
[debian/cdck.git] / src / cdck_main.cpp
1 /*
2  * $RCSfile: cdck_main.cpp,v $
3  * $Author: swaj $
4  * $Revision: 1.7 $
5  */
6
7 #ifdef HAVE_CONFIG_H
8 #include "config.h"
9 #endif
10
11 #include <stdio.h>
12 #include <unistd.h>
13 #include <stdlib.h>
14 #include <string.h>
15
16 #include "defines.h"
17 #include "debugging.h"
18 #include "cdck_main.h"
19 #include "lib_main.h"
20
21
22 int main (int argc, char *argv[])
23 {
24         signed char ch;
25         char *program_name = (strchr(argv[0], '/') == NULL) ? argv[0] : (strrchr(argv[0], '/') + 1);
26
27         bool verbose = false;
28         bool only_info = true;
29         bool do_plot = false;
30         char devname[FILE_MAX];
31         char plotname[FILE_MAX];
32         
33         memset (devname, 0x0, FILE_MAX); 
34         memset (plotname, 0x0, FILE_MAX); 
35
36         while ((ch = getopt(argc, argv, "?hitvd:po:V"))!=-1) {
37                 switch (ch) {
38                 case 'h':
39                 case '?':
40                         print_help (program_name);
41                         exit(0);
42                 case 'V':
43                         print_ver();
44                         exit (0);
45                 case 'v':
46                         verbose = true;
47                         break;
48                 case 'i':
49                         only_info = true;
50                         break;
51                 case 't':
52                         only_info = false;
53                         break;
54                 case 'p':
55                         do_plot = true;
56                         break;
57                 case 'd':
58                         strncpy (devname,  optarg, FILE_MAX-1); 
59                         break;
60
61                 case 'o':
62                         strncpy (plotname,  optarg, FILE_MAX-1); 
63                         break;
64
65                 default:
66                        break;
67                 }
68
69         }
70
71         if (only_info)
72                 verbose=true;
73
74         /* some debug info
75         printf ("verbose = %d\n", verbose);
76         printf ("only_info = %d\n", only_info);
77         printf ("do_plot = %d\n", do_plot );
78         printf ("devname = '%s'\n", devname);
79         printf ("plotname = '%s'\n", plotname);
80         */
81
82         Ccdrom *cdrom=0;
83
84         if (!strlen (devname))
85                 cdrom = new Ccdrom ();
86         else
87                 cdrom = new Ccdrom (devname);
88
89         
90         unless (cdrom) {
91                 fprintf (stderr, "Out of nemory\n");
92                 exit (1);
93         }
94
95         cdrom->EnableInfo (verbose);
96
97         int rv = cdrom->ReadTOC();
98
99         if (rv) {
100                 fprintf (stderr, "Unable to read TOC because %s\n", cdrom->Error() );
101                 delete cdrom;
102                 exit (1);
103         }
104
105         if (only_info)
106                 exit (0);
107
108
109         printf ("\nNB! For disks written with some burners cdck might \n");
110         printf ("    report about unreadable sectors at the end of the disk.\n");
111         printf ("    In such cases you can just ignore those warnings.\n\n");
112
113         rv = cdrom->ReadCD();
114         if (rv) {
115                 fprintf (stderr, "Unable to read disc because %s\n", cdrom->Error() );
116                 delete cdrom;
117                 exit (1);
118         }
119
120
121
122
123         cdrom->AnalyzeResults();
124
125         if (do_plot) {
126                 if (! strlen (plotname) )
127                         rv = cdrom->OpenPlotFile();
128                 else
129                         rv = cdrom->OpenPlotFile (plotname);
130
131                 if (rv) {
132                         fprintf (stderr, "Unable to open plot data file\n");
133                         delete cdrom;
134                         exit (1);
135                 }
136
137                 cdrom->WritePlotData();
138                 cdrom->ClosePlotFile();
139         }
140
141         delete cdrom;
142         exit (0);
143 }
144
145 static
146 void print_help (char *program_name)
147 {
148         printf ("Usage: %s [-d /dev/devname] [-i] [-v] [-p] [-o plot-file.dat]\n", program_name);
149         printf ("   -d CD/DVD device name, default is /dev/cdrom\n");
150         printf ("   -i Print CD/DVD information and quit, perform no timings (default mode)\n");
151         printf ("   -t Perform timing test\n");
152         printf ("   -p Save data for gnuplot(1) program\n");
153         printf ("   -o specify plot file, ./cdck-plot.dat is default\n");
154         printf ("   -V Print version\n");
155         printf ("   -v Verbose operations\n");
156 }
157
158 static
159 void print_ver (void)
160 {
161         printf ("Simple CD/DVD check program, ver %s. ", VERSION);
162         printf ("Written by Alexey Semenoff (c) 2005-2008.\n");
163 }
164
165
166
167 /*
168  * __END__
169  */