2006-08-15 20:37:04 +00:00
# include <string.h>
2006-10-08 10:30:57 +00:00
/* ts A61008 */
/* #include <a ssert.h> */
2006-08-15 20:37:04 +00:00
# include <stdlib.h>
2009-09-02 13:32:17 +00:00
# include <stdio.h>
2008-09-14 17:45:11 +00:00
/* ts A80914 : This is unneeded. Version info comes from libburn.h.
# include "v ersion.h"
*/
2006-08-15 20:37:04 +00:00
# include "util.h"
# include "libburn.h"
char * burn_strdup ( char * s )
{
char * ret ;
int l ;
2006-10-08 10:30:57 +00:00
/* ts A61008 */
/* a ssert(s); */
if ( s = = NULL )
return NULL ;
2006-08-15 20:37:04 +00:00
l = strlen ( s ) + 1 ;
ret = malloc ( l ) ;
memcpy ( ret , s , l ) ;
return ret ;
}
char * burn_strndup ( char * s , int n )
{
char * ret ;
int l ;
2006-10-08 10:30:57 +00:00
/* ts A61008 */
/* a ssert(s); */
/* a ssert(n > 0); */
if ( s = = NULL | | n < = 0 )
return NULL ;
2006-08-15 20:37:04 +00:00
l = strlen ( s ) ;
ret = malloc ( l < n ? l : n ) ;
memcpy ( ret , s , l < n - 1 ? l : n - 1 ) ;
ret [ n - 1 ] = ' \0 ' ;
return ret ;
}
void burn_version ( int * major , int * minor , int * micro )
{
2008-04-08 13:35:43 +00:00
/* ts A80408 : switched from configure.ac versioning to libburn.h versioning */
2008-09-14 17:45:11 +00:00
* major = burn_header_version_major ;
* minor = burn_header_version_minor ;
* micro = burn_header_version_micro ;
2006-08-15 20:37:04 +00:00
}
2009-09-02 13:32:17 +00:00
struct mid_record {
char * manufacturer ;
int m_li ;
int s_li ;
int f_li ;
int m_lo ;
int s_lo ;
int f_lo ;
char * other_brands ;
} ;
typedef struct mid_record mid_record_t ;
/* ts A90902 */
/** API
@ param flag Bitfield for control purposes ,
bit0 = append " (aka %s) " , other_brands to reply
*/
char * burn_guess_cd_manufacturer ( int m_li , int s_li , int f_li ,
int m_lo , int s_lo , int f_lo , int flag )
{
static mid_record_t mid_list [ ] = {
{ " SKC " , 96 , 40 , 0 , 0 , 0 , 0 , " " } ,
{ " Ritek Corp " , 96 , 43 , 30 , 0 , 0 , 0 , " " } ,
{ " TDK / Ritek " , 97 , 10 , 0 , 0 , 0 , 0 , " TRAXDATA " } ,
{ " TDK Corporation " , 97 , 15 , 0 , 0 , 0 , 0 , " " } ,
{ " Ritek Corp " , 97 , 15 , 10 , 0 , 0 , 0 , " 7-plus, Aopen, PONY, Power Source, TDK, TRAXDATA, HiCO, PHILIPS, Primdisc, Victor.JVC, OPTI STORAGE, Samsung " } ,
{ " Mitsubishi Chemical Corporation " , 97 , 15 , 20 , 0 , 0 , 0 , " " } ,
{ " Nan-Ya Plastics Corporation " , 97 , 15 , 30 , 0 , 0 , 0 , " Hatron, MMore, Acer, LITEON " } ,
{ " Delphi " , 97 , 15 , 50 , 0 , 0 , 0 , " " } ,
{ " Shenzhen SG&SAST " , 97 , 16 , 20 , 0 , 0 , 0 , " " } ,
{ " Moser Baer India Limited " , 97 , 17 , 0 , 0 , 0 , 0 , " EMTEC, Intenso, YAKUMO, PLATINUM, Silver Circle " } ,
{ " SKY media Manufacturing SA " , 97 , 17 , 10 , 0 , 0 , 0 , " " } ,
{ " Wing " , 97 , 18 , 10 , 0 , 0 , 0 , " " } ,
{ " DDT " , 97 , 18 , 20 , 0 , 0 , 0 , " " } ,
{ " Daxon Technology Inc. / Acer " , 97 , 22 , 60 , 0 , 0 , 0 , " Maxmax, Diamond Data, BenQ, gold, SONY " } ,
{ " Taiyo Yuden Company Limited " , 97 , 24 , 0 , 0 , 0 , 0 , " Maxell, FUJIFILM, SONY " } ,
{ " Sony Corporation " , 97 , 24 , 10 , 0 , 0 , 0 , " LeadData, Imation " } ,
{ " Computer Support Italcard s.r.l " , 97 , 24 , 20 , 0 , 0 , 0 , " " } ,
{ " Unitech Japan Inc. " , 97 , 24 , 30 , 0 , 0 , 0 , " " } ,
{ " MPO, France " , 97 , 25 , 0 , 0 , 0 , 0 , " " } ,
{ " Hitachi Maxell Ltd. " , 97 , 25 , 20 , 0 , 0 , 0 , " " } ,
{ " Infodisc Technology Co,Ltd. " , 97 , 25 , 30 , 0 , 0 , 0 , " MEMOREX, SPEEDA, Lead data " } ,
{ " Xcitec " , 97 , 25 , 60 , 0 , 0 , 0 , " " } ,
{ " Fornet International Pte Ltd " , 97 , 26 , 0 , 0 , 0 , 0 , " COMPUSA, Cdhouse " } ,
{ " Postech Corporation " , 97 , 26 , 10 , 0 , 0 , 0 , " Mr.Platinum " } ,
{ " SKC Co Ltd. " , 97 , 26 , 20 , 0 , 0 , 0 , " Infinite " } ,
{ " Fuji Photo Film Co,Ltd. " , 97 , 26 , 40 , 0 , 0 , 0 , " " } ,
{ " Lead Data Inc. " , 97 , 26 , 50 , 0 , 0 , 0 , " SONY, Gigastorage, MIRAGE " } ,
{ " CMC Magnetics Corporation " , 97 , 26 , 60 , 0 , 0 , 0 , " Daxon, Verbatim, Memorex, Bi-Winner, PLEXTOR, YAMAHA, Melody, Office DEPOT, Philips, eMARK, imation, HyperMedia, Samsung, Shintaro, Techworks " } ,
{ " Ricoh Company Limited " , 97 , 27 , 0 , 0 , 0 , 0 , " Sony, Digital Storage, Csita " } ,
{ " Plasmon Data Systems Ltd " , 97 , 27 , 10 , 0 , 0 , 0 , " Ritek, TDK, EMTEC, ALPHAPET, MANIA " } ,
{ " Princo Corporation " , 97 , 27 , 20 , 0 , 0 , 0 , " " } ,
{ " Pioneer " , 97 , 27 , 30 , 0 , 0 , 0 , " " } ,
{ " Eastman Kodak Company " , 97 , 27 , 40 , 0 , 0 , 0 , " " } ,
{ " Mitsui Chemicals Inc. " , 97 , 27 , 50 , 0 , 0 , 0 , " MAM-A, TDK " } ,
{ " Ricoh Company Limited " , 97 , 27 , 60 , 0 , 0 , 0 , " Ritek " } ,
{ " Gigastorage Corporation " , 97 , 28 , 10 , 0 , 0 , 0 , " MaxMax, Nan-Ya " } ,
{ " Multi Media Masters&Machinary SA " , 97 , 28 , 20 , 0 , 0 , 0 , " King, Mmirex " } ,
{ " Ritek Corp " , 97 , 31 , 0 , 0 , 0 , 0 , " TDK " } ,
{ " Grand Advance Technology Sdn. Bhd. " , 97 , 31 , 30 , 0 , 0 , 0 , " " } ,
{ " TDK Corporation " , 97 , 32 , 00 , 0 , 0 , 0 , " " } ,
{ " Prodisc Technology Inc. " , 97 , 32 , 10 , 0 , 0 , 0 , " Smartbuy, Mitsubishi, Digmaster, LG, Media Market " } ,
{ " Mitsubishi Chemical Corporation " , 97 , 34 , 20 , 0 , 0 , 0 , " YAMAHA, Verbatim " } ,
{ " " , 0 , 0 , 0 , 0 , 0 , 0 , " " }
} ;
int i , f_li_0 ;
char buf [ 1024 ] ;
char * result = NULL ;
f_li_0 = f_li - ( f_li % 10 ) ;
for ( i = 0 ; mid_list [ i ] . manufacturer [ 0 ] ; i + + ) {
if ( m_li = = mid_list [ i ] . m_li & &
s_li = = mid_list [ i ] . s_li & &
( f_li_0 = = mid_list [ i ] . f_li | | f_li = = mid_list [ i ] . f_li ) )
break ;
}
if ( mid_list [ i ] . manufacturer [ 0 ] = = 0 ) {
sprintf ( buf , " Unknown CD manufacturer. Please report code '%2.2dm%2.2ds%2.2df-%2.2dm%2.2ds%2.2df', human readable brand, size, and speed to scdbackup@gmx.net. " , m_li , s_li , f_li , m_lo , s_lo , f_lo ) ;
result = strdup ( buf ) ;
return result ;
}
/* Compose, allocate and copy result */
if ( ( flag & 1 ) & & mid_list [ i ] . other_brands [ 0 ] ) {
sprintf ( buf , " %s (aka %s) " ,
mid_list [ i ] . manufacturer , mid_list [ i ] . other_brands ) ;
result = strdup ( buf ) ;
} else
result = strdup ( mid_list [ i ] . manufacturer ) ;
return result ;
}