comparison vm.c @ 4:99bed5d6db2f src

Added reset patch from Kees Cook <kees@outflux.net>
author richwareham
date Tue, 02 Apr 2002 18:22:27 +0000
parents 328eadb3f37e
children 5f319e02e333
comparison
equal deleted inserted replaced
3:328eadb3f37e 4:99bed5d6db2f
113 if(!self) 113 if(!self)
114 return; 114 return;
115 115
116 if(self->vmgi) { 116 if(self->vmgi) {
117 ifoClose(self->vmgi); 117 ifoClose(self->vmgi);
118 self->vmgi=NULL;
118 } 119 }
119 120
120 if(self->vtsi) { 121 if(self->vtsi) {
121 ifoClose(self->vtsi); 122 ifoClose(self->vtsi);
123 self->vmgi=NULL;
122 } 124 }
123 125
124 if(self->dvd) { 126 if(self->dvd) {
125 DVDClose(self->dvd); 127 DVDClose(self->dvd);
128 self->dvd=NULL;
126 } 129 }
127 } 130 }
128 131
129 void vm_free_vm(vm_t *self) { 132 void vm_free_vm(vm_t *self) {
130 if(self) { 133 if(self) {
191 (self->state).rsm_cellN = 0; 194 (self->state).rsm_cellN = 0;
192 (self->state).rsm_blockN = 0; 195 (self->state).rsm_blockN = 0;
193 196
194 (self->state).vtsN = -1; 197 (self->state).vtsN = -1;
195 198
196 self->dvd = DVDOpen(dvdroot); 199 if (self->dvd && dvdroot) {
197 if(!self->dvd) { 200 // a new dvd device has been requested
198 fprintf(stderr, "vm: faild to open/read the DVD\n"); 201 vm_stop(self);
199 return -1; 202 }
200 } 203 if (!self->dvd) {
201 204 self->dvd = DVDOpen(dvdroot);
202 self->vmgi = ifoOpenVMGI(self->dvd); 205 if(!self->dvd) {
203 if(!self->vmgi) { 206 fprintf(stderr, "vm: faild to open/read the DVD\n");
204 fprintf(stderr, "vm: faild to read VIDEO_TS.IFO\n"); 207 return -1;
205 return -1; 208 }
206 } 209
207 if(!ifoRead_FP_PGC(self->vmgi)) { 210 self->vmgi = ifoOpenVMGI(self->dvd);
208 fprintf(stderr, "vm: ifoRead_FP_PGC failed\n"); 211 if(!self->vmgi) {
209 return -1; 212 fprintf(stderr, "vm: faild to read VIDEO_TS.IFO\n");
210 } 213 return -1;
211 if(!ifoRead_TT_SRPT(self->vmgi)) { 214 }
212 fprintf(stderr, "vm: ifoRead_TT_SRPT failed\n"); 215 if(!ifoRead_FP_PGC(self->vmgi)) {
213 return -1; 216 fprintf(stderr, "vm: ifoRead_FP_PGC failed\n");
214 } 217 return -1;
215 if(!ifoRead_PGCI_UT(self->vmgi)) { 218 }
216 fprintf(stderr, "vm: ifoRead_PGCI_UT failed\n"); 219 if(!ifoRead_TT_SRPT(self->vmgi)) {
217 return -1; 220 fprintf(stderr, "vm: ifoRead_TT_SRPT failed\n");
218 } 221 return -1;
219 if(!ifoRead_PTL_MAIT(self->vmgi)) { 222 }
220 fprintf(stderr, "vm: ifoRead_PTL_MAIT failed\n"); 223 if(!ifoRead_PGCI_UT(self->vmgi)) {
221 ; /* return -1; Not really used for now.. */ 224 fprintf(stderr, "vm: ifoRead_PGCI_UT failed\n");
222 } 225 return -1;
223 if(!ifoRead_VTS_ATRT(self->vmgi)) { 226 }
224 fprintf(stderr, "vm: ifoRead_VTS_ATRT failed\n"); 227 if(!ifoRead_PTL_MAIT(self->vmgi)) {
225 ; /* return -1; Not really used for now.. */ 228 fprintf(stderr, "vm: ifoRead_PTL_MAIT failed\n");
226 } 229 ; /* return -1; Not really used for now.. */
227 if(!ifoRead_VOBU_ADMAP(self->vmgi)) { 230 }
228 fprintf(stderr, "vm: ifoRead_VOBU_ADMAP vgmi failed\n"); 231 if(!ifoRead_VTS_ATRT(self->vmgi)) {
229 ; /* return -1; Not really used for now.. */ 232 fprintf(stderr, "vm: ifoRead_VTS_ATRT failed\n");
230 } 233 ; /* return -1; Not really used for now.. */
231 /* ifoRead_TXTDT_MGI(vmgi); Not implemented yet */ 234 }
235 if(!ifoRead_VOBU_ADMAP(self->vmgi)) {
236 fprintf(stderr, "vm: ifoRead_VOBU_ADMAP vgmi failed\n");
237 ; /* return -1; Not really used for now.. */
238 }
239 /* ifoRead_TXTDT_MGI(vmgi); Not implemented yet */
240 }
241 else fprintf(stderr, "vm: reset\n");
232 242
233 return 0; 243 return 0;
234 } 244 }
235 245
236 /* FIXME TODO XXX $$$ Handle error condition too... */ 246 /* FIXME TODO XXX $$$ Handle error condition too... */
1520 return pgcit; 1530 return pgcit;
1521 } 1531 }
1522 1532
1523 /* 1533 /*
1524 * $Log$ 1534 * $Log$
1535 * Revision 1.3 2002/04/02 18:22:27 richwareham
1536 * Added reset patch from Kees Cook <kees@outflux.net>
1537 *
1525 * Revision 1.2 2002/04/01 18:56:28 richwareham 1538 * Revision 1.2 2002/04/01 18:56:28 richwareham
1526 * Added initial example programs directory and make sure all debug/error output goes to stderr. 1539 * Added initial example programs directory and make sure all debug/error output goes to stderr.
1527 * 1540 *
1528 * Revision 1.1.1.1 2002/03/12 19:45:55 richwareham 1541 * Revision 1.1.1.1 2002/03/12 19:45:55 richwareham
1529 * Initial import 1542 * Initial import