Mercurial > libdvdnav.hg
comparison vm/vm.c @ 397:a70f79850e5f src
implement and export dvdnav_get_serial_string(); patch by Matthew Wire devel - mrwire - co - uk. Fixed by Erik
author | nicodvb |
---|---|
date | Mon, 02 Feb 2009 22:55:58 +0000 |
parents | 9c5aef10d165 |
children | 61edd6fa781b |
comparison
equal
deleted
inserted
replaced
396:6616c485ece0 | 397:a70f79850e5f |
---|---|
154 | 154 |
155 return ( int )hfile; | 155 return ( int )hfile; |
156 } | 156 } |
157 #endif | 157 #endif |
158 | 158 |
159 static void dvd_read_name(char *name, const char *device) { | 159 static void dvd_read_name(char *name, char *serial, const char *device) { |
160 /* Because we are compiling with _FILE_OFFSET_BITS=64 | 160 /* Because we are compiling with _FILE_OFFSET_BITS=64 |
161 * all off_t are 64bit. | 161 * all off_t are 64bit. |
162 */ | 162 */ |
163 off_t off; | 163 off_t off; |
164 int fd, i; | 164 int fd, i; |
190 fprintf(MSG_OUT, "%c", data[i]); | 190 fprintf(MSG_OUT, "%c", data[i]); |
191 } else { | 191 } else { |
192 fprintf(MSG_OUT, " "); | 192 fprintf(MSG_OUT, " "); |
193 } | 193 } |
194 } | 194 } |
195 strncpy(serial, (char*) &data[73], (i-73)); | |
196 serial[14] = 0; | |
195 fprintf(MSG_OUT, "\nlibdvdnav: DVD Title (Alternative): "); | 197 fprintf(MSG_OUT, "\nlibdvdnav: DVD Title (Alternative): "); |
196 for(i=89; i < 128; i++ ) { | 198 for(i=89; i < 128; i++ ) { |
197 if((data[i] == 0)) break; | 199 if((data[i] == 0)) break; |
198 if((data[i] > 32) && (data[i] < 127)) { | 200 if((data[i] > 32) && (data[i] < 127)) { |
199 fprintf(MSG_OUT, "%c", data[i]); | 201 fprintf(MSG_OUT, "%c", data[i]); |
350 vm->dvd = DVDOpen(dvdroot); | 352 vm->dvd = DVDOpen(dvdroot); |
351 if(!vm->dvd) { | 353 if(!vm->dvd) { |
352 fprintf(MSG_OUT, "libdvdnav: vm: failed to open/read the DVD\n"); | 354 fprintf(MSG_OUT, "libdvdnav: vm: failed to open/read the DVD\n"); |
353 return 0; | 355 return 0; |
354 } | 356 } |
355 dvd_read_name(vm->dvd_name, dvdroot); | 357 dvd_read_name(vm->dvd_name, vm->dvd_serial, dvdroot); |
356 vm->map = remap_loadmap(vm->dvd_name); | 358 vm->map = remap_loadmap(vm->dvd_name); |
357 vm->vmgi = ifoOpenVMGI(vm->dvd); | 359 vm->vmgi = ifoOpenVMGI(vm->dvd); |
358 if(!vm->vmgi) { | 360 if(!vm->vmgi) { |
359 fprintf(MSG_OUT, "libdvdnav: vm: failed to read VIDEO_TS.IFO\n"); | 361 fprintf(MSG_OUT, "libdvdnav: vm: failed to read VIDEO_TS.IFO\n"); |
360 return 0; | 362 return 0; |