1 /*
2 	xcdrdata.h
3 */
4 
5 #include <time.h>
6 #include <unistd.h>
7 #include <sys/types.h>
8 
9 
10 typedef struct geometry {
11 	gint x;
12 	gint y;
13 	gint width;
14 	gint height;
15 } geometry_t;
16 
17 typedef struct setup_data {
18 	gint writer_devnr;
19 	gint reader_devnr;
20 
21 	GList *image_dirs;
22 
23 	gchar *dsp_device;
24 	gchar *mix_device;
25 	gint notify_via;
26 	gint notify_at;
27 
28 	gchar *cddb_host;
29 	gint cddb_port;
30 	gchar *cddb_proxy_host;
31 	gint cddb_proxy_port;
32 	gint cddb_use_http;
33 	gint cddb_use_proxy;
34 
35 	gchar *logfile;
36 	gint loglevel;
37 
38 	gchar *language;
39 
40 	gboolean option_tooltips;
41 	gboolean option_autoraise;
42 	gboolean option_savepos;
43 	gboolean option_personimage;
44 	gboolean option_overwritewarn;
45 	gboolean option_autodelete;
46 	gboolean option_titleprogress;
47 	gboolean option_displaycdtext;
48 	gboolean option_selectionmode;
49 
50 	gint root_users_access;
51 	GList *root_users_lists;
52 
53 	gint root_hosts_access;
54 	GList *root_hosts_lists;
55 
56 	gboolean root_option_change_writer;
57 	gboolean root_option_change_writeparam;
58 	gboolean root_option_change_reader;
59 	gboolean root_option_change_readparam;
60 	gboolean root_option_change_imagedirs;
61 	gboolean root_option_change_logoptions;
62 
63 	gchar *ProDVDkey;
64 	geometry_t mainwindow;
65 	geometry_t burnwindow;
66 
67 } setup_data_t;
68 
69 typedef struct scsi_devices {
70 	gint devnr;
71 	gint transport;
72 	gint bus;
73 	gint id;
74 	gchar vendor[9];
75 	gchar model[17];
76 	gchar rev[5];
77 	gint removable;
78 	gint type;
79 	gint alt_dev;
80 	gint sector_size;
81 } scsi_devices_t;
82 
83 typedef struct writerreader_devices {
84 	gint devnr;
85 	gchar *devicestr;
86 	gchar vendor[9];
87 	gchar model[17];
88 	gchar rev[5];
89 	gint writer_readmaxspeed;
90 	gint writer_cdrmaxspeed;
91 	gint writer_dvdmaxspeed;
92 	gchar *writer_flags;
93 	gchar *writer_modes;
94 	gint is_cdrwriter;
95 	gint is_dvdreader;
96 	gint is_dvdwriter;
97 	gint sector_size;
98 	/* --- user editable values below */
99 	gint writer_drvmode;
100 	gint writer_mode;
101 	gint writer_speed;
102 	gint writer_fifo;
103 	gint audioread_interface;
104 	gint audioread_speed;
105 	gint audioread_overlap;
106 	gint audioread_sectorburst;
107 	gint audioread_useparanoia;
108 	gint audioread_paranoiaretries;
109 } writerreader_devices_t;
110 
111 /* 10 user editable values to backup in setup */
112 typedef struct writerreader_bak {
113 	gint devnr;
114 	gint values[10];
115 } writerreader_bak_t;
116 
117 typedef struct writer_driver {
118 	gchar *driver;
119 	gchar *desc;
120 } writer_driver_t;
121 
122 typedef struct current_set {
123 	gint isProDVD;
124 	gint support_ontheflyaudio;
125 	gint writer_devnr;
126 	gint reader_devnr;
127 	gint image_index;  /* index in image_dir-glist, -1 = automatic */
128 	gint proc_view;
129 	gchar *file_prefix;
130 	gchar *tocfile;
131 	gint cdrtype;	   /* in minutes */
132 	gboolean writesimul;
133 	gboolean writeeject;
134 	gboolean writepad;
135 	gboolean writeswap;
136 	gboolean nofixate;
137 	gboolean multisession;
138 	gboolean writecdtext;
139 	gboolean writeoverburn;
140 	gboolean writeburnfree;
141 	gboolean writeaudiomaster;
142 	gboolean writeforcespeed;
143 	gint writevarirec;
144 	gboolean writeignsize;
145 	gboolean writeimmed;
146 	gint blankmode;
147 	gboolean blank_force;
148 	gboolean blank_eject;
149 	gboolean noaudioverify;
150 	gboolean verifyfailabort;
151 	gboolean indexscan;
152 	gboolean sync_cdtext_artist;
153 	gboolean mstr_auto_calc;
154 	gchar *sudo_passwd;
155 } current_set_t;
156 
157 typedef struct cd_info {
158 	gint nr_tracks;  /* -1 = no cd loaded */
159 	gint total_size; /* all sizes in frames */
160 	gchar cddb_discid[9];
161 	gint have_cdtext;
162 	gint have_cdextra;
163 	gchar *title;
164 	gchar *artist;
165 	gchar *cddb_dtitle;
166 	gint leadout;
167 } cd_info_t;
168 
169 typedef struct track_info {
170 	gint track_nr;
171 	gint start_sec;
172 	gint size;     /* in frames */
173 	gint type;     /* 0: data,        1: audio */
174 	gint rec_type; /* 0: incremental, 1: uninterrupted */
175 	gint preemp;   /* 0: linear,      1: preemp */
176 	gint copyperm; /* 0: denied,      1: allowed */
177 	gint stereo;   /* 0: quadro,      1: stereo */
178 	gchar *volname;
179 	gchar *title;
180 	gchar *artist;
181 	gchar *cddb_ttitle;
182 	gint isosize;  /* only for datatracks, else set to -1 */
183 } track_info_t;
184 
185 typedef struct cddb_match {
186 	gint exact;  /* 0: not exact match, 1: exact */
187 	gchar *categ;
188 	gchar *discid;
189 	gchar *dtitle;
190 } cddb_match_t;
191 
192 typedef struct image_files {
193 	gchar *path;
194 	off_t size;    /* in bytes */
195 	time_t mtime;  /* modification time */
196 	gint type;     /* 0: iso9660 data, 1: valid audio, 2: invalid audio,
197 			  3: unknown data, 4: toc-file */
198 	gint readable; /* 0: no, 1: yes */
199 	gint from_track;
200 	gchar *volname;
201 	gchar *title;
202 	gchar *artist;
203 	gchar *cddb_ttitle;
204 	gchar *cd_discid;
205 	gint isosize;  /* in sectors */
206 	gint last_session_start;
207 	gint next_session_start;
208 } image_files_t;
209 
210 typedef struct track_read_param {
211 	gint trackinfo_index;
212 	gint starttrack;
213 	gint endtrack;      /* set to 0 when not used */
214 	gint tracktype;     /* 0: data,        1: audio */
215 	gint start_sec;	    /* for audio tracks */
216 	gint startoffset;   /* for data tracks: startsector */
217 	gint endoffset;     /* for data tracks: endsector */
218 	gfloat percent;	    /* how many percent does this track take on cd */
219 	gint kbyte;
220 	gint frames;
221 	gchar *trackfile;
222 } track_read_param_t;
223 
224 typedef struct track_read_set {
225 	gint nrtracks;
226 	gint cdsize;	/* in frames */
227 	gchar *tocfile;
228 	gchar *cdtitle;
229 	gchar *cd_discid;
230 	GList *trackparams;
231 } track_read_set_t;
232 
233 typedef struct image_dir_free {
234 	gchar *path;
235 	gint free;
236 } image_dir_free_t;
237 
238 typedef struct write_track_param {
239 	gint nrtracks;
240 	gint simulation;
241 	gint *tracktype;
242 	gint *frames;
243 	gfloat *pct_so_far_arr;
244 	gfloat *pct_this_track_arr;
245 } write_track_param_t;
246 
247 typedef struct mstr_redirect {
248 	gchar *mstr_path;
249 	gchar *redir_path;
250 } mstr_redirect_t;
251 
252 typedef struct master_param {
253 	GList *mstr_redir;
254 	GList *exclude_paths;
255 	gint image_type;
256 	gboolean show_only_dirs;
257 	gboolean show_hidden_files;
258 	gboolean opt[24];
259 	gint bootable;
260 	gchar *boot_image;
261 	gchar *boot_catalog;
262 	gint boot_type;
263 	gint boot_load_size;
264 	gint boot_info_table;
265 	gchar *sparc_boot;
266 	gchar *volid;
267 	gchar *publisher;
268 	gchar *preparer;
269 	gchar *application;
270 	gchar *abstract;
271 	gchar *biblio;
272 	gchar *copyright;
273 	gchar *image_filename;
274 	gint old_session_size;	/* in 2048 byte blocks */
275 	gint session_size;	/* in 2048 byte blocks */
276 	gint charset;
277 	gint outcharset;
278 	gint redirtype;
279 	gchar *lastredirpath;
280 	gint redirtype2;
281 	gchar *lastredirpath2;
282 	gint last_session_start;
283 	gint next_session_start;
284 } master_param_t;
285 
286 typedef struct nonroot_flags {
287 	gchar *path;
288 	uid_t uid;
289 	gid_t gid;
290 	mode_t mode;
291 } nonroot_flags_t;
292 
293 typedef struct version_id {
294 	gint major;
295 	gint minor;
296 	gint branch;
297 	char devel;
298 	gint patch;
299 } version_id_t;
300 
301 typedef struct cddb_connect {
302 	gchar *hostname;
303 	gchar *username;
304   gchar *server;
305   gint port;
306   gchar *proxy;
307 	gchar *authstring;
308   gint proxyport;
309   gint useproxy;
310   gint usehttp;
311 	gint useauth;
312 } cddb_connect_t;
313 
314