mirror of
https://github.com/pbatard/rufus.git
synced 2024-08-14 23:57:05 +00:00
[iso] update libcdio to v0.93
* Also fix a memory leak introduced vy v0.93 in cdio_free()
This commit is contained in:
parent
7090a0371a
commit
ea817cbc2c
29 changed files with 305 additions and 164 deletions
|
@ -1,5 +1,6 @@
|
||||||
/* -*- c -*-
|
/* -*- c -*-
|
||||||
Copyright (C) 2003, 2004, 2005, 2008, 2009 Rocky Bernstein <rocky@gnu.org>
|
Copyright (C) 2003, 2004, 2005, 2008, 2009, 2014
|
||||||
|
Rocky Bernstein <rocky@gnu.org>
|
||||||
Copyright (C) 2001 Herbert Valerio Riedel <hvr@gnu.org>
|
Copyright (C) 2001 Herbert Valerio Riedel <hvr@gnu.org>
|
||||||
|
|
||||||
This program is free software: you can redistribute it and/or modify
|
This program is free software: you can redistribute it and/or modify
|
||||||
|
@ -45,8 +46,6 @@ extern "C" {
|
||||||
/** This is an opaque structure for the CD object. */
|
/** This is an opaque structure for the CD object. */
|
||||||
typedef struct _CdIo CdIo_t;
|
typedef struct _CdIo CdIo_t;
|
||||||
|
|
||||||
typedef struct cdtext_s cdtext_t;
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
}
|
}
|
||||||
#endif /* __cplusplus */
|
#endif /* __cplusplus */
|
||||||
|
@ -70,4 +69,7 @@ extern "C" {
|
||||||
/* Track-related functions. */
|
/* Track-related functions. */
|
||||||
#include <cdio/track.h>
|
#include <cdio/track.h>
|
||||||
|
|
||||||
|
/* Memory management functions. */
|
||||||
|
#include <cdio/memory.h>
|
||||||
|
|
||||||
#endif /* __CDIO_H__ */
|
#endif /* __CDIO_H__ */
|
||||||
|
|
|
@ -1 +1,2 @@
|
||||||
/* Empty placeholder */
|
/* Placeholder */
|
||||||
|
typedef struct cdtext_s cdtext_t;
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
/* -*- c -*-
|
/* -*- c -*-
|
||||||
|
|
||||||
Copyright (C) 2004, 2005, 2006, 2008, 2010, 2012 Rocky Bernstein
|
Copyright (C) 2004, 2005, 2006, 2008, 2010, 2012, 2014
|
||||||
<rocky@gnu.org>
|
Rocky Bernstein <rocky@gnu.org>
|
||||||
|
|
||||||
This program is free software: you can redistribute it and/or modify
|
This program is free software: you can redistribute it and/or modify
|
||||||
it under the terms of the GNU General Public License as published by
|
it under the terms of the GNU General Public License as published by
|
||||||
|
@ -61,9 +61,9 @@ extern "C" {
|
||||||
Get binary CD-Text information for a CdIo_t object.
|
Get binary CD-Text information for a CdIo_t object.
|
||||||
|
|
||||||
@param p_cdio the CD object that may contain CD-Text information.
|
@param p_cdio the CD object that may contain CD-Text information.
|
||||||
@return malloc'd pointer to raw CD-Text data as stored on the disc
|
@return malloc'd pointer to raw CD-Text data as stored on the disc or
|
||||||
or NULL if p_cdio is NULL or CD-Text information does not exist.
|
NULL if p_cdio is NULL or CD-Text information does not exist. Return
|
||||||
Return value should be freed when done with it and not NULL.
|
value must be freed with cdio_free() when done with it and not NULL.
|
||||||
*/
|
*/
|
||||||
uint8_t * cdio_get_cdtext_raw (CdIo_t *p_cdio);
|
uint8_t * cdio_get_cdtext_raw (CdIo_t *p_cdio);
|
||||||
|
|
||||||
|
@ -101,8 +101,8 @@ extern "C" {
|
||||||
@return the media catalog number or NULL if there is none or we
|
@return the media catalog number or NULL if there is none or we
|
||||||
don't have the ability to get it.
|
don't have the ability to get it.
|
||||||
|
|
||||||
Note: string is malloc'd so caller has to free() the returned
|
Note: The caller must free the returned string with cdio_free()
|
||||||
string when done with it.
|
when done with it.
|
||||||
|
|
||||||
*/
|
*/
|
||||||
char * cdio_get_mcn (const CdIo_t *p_cdio);
|
char * cdio_get_mcn (const CdIo_t *p_cdio);
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2012
|
Copyright (C) 2003-2008, 2012-2013
|
||||||
Rocky Bernstein <rocky@gnu.org>
|
Rocky Bernstein <rocky@gnu.org>
|
||||||
Copyright (C) 2000 Herbert Valerio Riedel <hvr@gnu.org>
|
Copyright (C) 2000 Herbert Valerio Riedel <hvr@gnu.org>
|
||||||
|
|
||||||
|
@ -859,7 +859,7 @@ iso9660_dir_calc_record_size (unsigned int namelen, unsigned int su_len);
|
||||||
lsn and return information about it.
|
lsn and return information about it.
|
||||||
|
|
||||||
@return stat_t of entry if we found lsn, or NULL otherwise.
|
@return stat_t of entry if we found lsn, or NULL otherwise.
|
||||||
Caller must free return value.
|
Caller must free return value using iso9660_stat_free().
|
||||||
*/
|
*/
|
||||||
#define iso9660_fs_find_lsn iso9660_find_fs_lsn
|
#define iso9660_fs_find_lsn iso9660_find_fs_lsn
|
||||||
iso9660_stat_t *iso9660_fs_find_lsn(CdIo_t *p_cdio, lsn_t i_lsn);
|
iso9660_stat_t *iso9660_fs_find_lsn(CdIo_t *p_cdio, lsn_t i_lsn);
|
||||||
|
@ -870,7 +870,7 @@ iso9660_stat_t *iso9660_fs_find_lsn(CdIo_t *p_cdio, lsn_t i_lsn);
|
||||||
lsn and return information about it.
|
lsn and return information about it.
|
||||||
|
|
||||||
@return stat_t of entry if we found lsn, or NULL otherwise.
|
@return stat_t of entry if we found lsn, or NULL otherwise.
|
||||||
Caller must free return value.
|
Caller must free return value using iso9660_stat_free().
|
||||||
*/
|
*/
|
||||||
iso9660_stat_t *iso9660_fs_find_lsn_with_path(CdIo_t *p_cdio, lsn_t i_lsn,
|
iso9660_stat_t *iso9660_fs_find_lsn_with_path(CdIo_t *p_cdio, lsn_t i_lsn,
|
||||||
/*out*/ char **ppsz_path);
|
/*out*/ char **ppsz_path);
|
||||||
|
@ -880,7 +880,7 @@ iso9660_stat_t *iso9660_fs_find_lsn_with_path(CdIo_t *p_cdio, lsn_t i_lsn,
|
||||||
lsn and return information about it.
|
lsn and return information about it.
|
||||||
|
|
||||||
@return stat_t of entry if we found lsn, or NULL otherwise.
|
@return stat_t of entry if we found lsn, or NULL otherwise.
|
||||||
Caller must free return value.
|
Caller must free return value using iso9660_stat_free().
|
||||||
*/
|
*/
|
||||||
iso9660_stat_t *iso9660_ifs_find_lsn(iso9660_t *p_iso, lsn_t i_lsn);
|
iso9660_stat_t *iso9660_ifs_find_lsn(iso9660_t *p_iso, lsn_t i_lsn);
|
||||||
|
|
||||||
|
@ -897,12 +897,16 @@ iso9660_stat_t *iso9660_ifs_find_lsn(iso9660_t *p_iso, lsn_t i_lsn);
|
||||||
*ppsz_path when you are done using it.
|
*ppsz_path when you are done using it.
|
||||||
|
|
||||||
@return stat_t of entry if we found lsn, or NULL otherwise.
|
@return stat_t of entry if we found lsn, or NULL otherwise.
|
||||||
Caller must free return value.
|
Caller must free return value using iso9660_stat_free().
|
||||||
*/
|
*/
|
||||||
iso9660_stat_t *iso9660_ifs_find_lsn_with_path(iso9660_t *p_iso,
|
iso9660_stat_t *iso9660_ifs_find_lsn_with_path(iso9660_t *p_iso,
|
||||||
lsn_t i_lsn,
|
lsn_t i_lsn,
|
||||||
/*out*/ char **ppsz_path);
|
/*out*/ char **ppsz_path);
|
||||||
|
|
||||||
|
/*!
|
||||||
|
Free the passed iso9660_stat_t structure.
|
||||||
|
*/
|
||||||
|
void iso9660_stat_free(iso9660_stat_t *p_stat);
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
Return file status for psz_path. NULL is returned on error.
|
Return file status for psz_path. NULL is returned on error.
|
||||||
|
@ -951,7 +955,7 @@ iso9660_stat_t *iso9660_ifs_stat_translate (iso9660_t *p_iso,
|
||||||
|
|
||||||
/*! Read psz_path (a directory) and return a list of iso9660_stat_t
|
/*! Read psz_path (a directory) and return a list of iso9660_stat_t
|
||||||
pointers for the files inside that directory. The caller must free the
|
pointers for the files inside that directory. The caller must free the
|
||||||
returned result.
|
returned result using _cdio_list_free().
|
||||||
|
|
||||||
b_mode2 is historical. It is not used.
|
b_mode2 is historical. It is not used.
|
||||||
*/
|
*/
|
||||||
|
@ -960,7 +964,7 @@ CdioList_t * iso9660_fs_readdir (CdIo_t *p_cdio, const char psz_path[],
|
||||||
|
|
||||||
/*! Read psz_path (a directory) and return a list of iso9660_stat_t
|
/*! Read psz_path (a directory) and return a list of iso9660_stat_t
|
||||||
pointers for the files inside that directory. The caller must free
|
pointers for the files inside that directory. The caller must free
|
||||||
the returned result.
|
the returned result using _cdio_list_free().
|
||||||
*/
|
*/
|
||||||
CdioList_t * iso9660_ifs_readdir (iso9660_t *p_iso, const char psz_path[]);
|
CdioList_t * iso9660_ifs_readdir (iso9660_t *p_iso, const char psz_path[]);
|
||||||
|
|
||||||
|
|
|
@ -97,11 +97,7 @@ cdio_log_handler_t cdio_log_set_handler (cdio_log_handler_t new_handler);
|
||||||
*/
|
*/
|
||||||
void cdio_log (cdio_log_level_t level,
|
void cdio_log (cdio_log_level_t level,
|
||||||
const char format[], ...) GNUC_PRINTF(2, 3);
|
const char format[], ...) GNUC_PRINTF(2, 3);
|
||||||
#if defined(__GNUC__)
|
|
||||||
/* See http://clang-analyzer.llvm.org/annotations.html#custom_assertions */
|
|
||||||
void cdio_assert_log (const char format[], ...)
|
|
||||||
GNUC_PRINTF(1, 2) __attribute__((__noreturn__));
|
|
||||||
#endif
|
|
||||||
/**
|
/**
|
||||||
* Handle a debugging message.
|
* Handle a debugging message.
|
||||||
*
|
*
|
||||||
|
|
41
src/libcdio/cdio/memory.h
Normal file
41
src/libcdio/cdio/memory.h
Normal file
|
@ -0,0 +1,41 @@
|
||||||
|
/*
|
||||||
|
Copyright (C) 2014 Robert Kausch <robert.kausch@freac.org>
|
||||||
|
|
||||||
|
This program is free software: you can redistribute it and/or modify
|
||||||
|
it under the terms of the GNU General Public License as published by
|
||||||
|
the Free Software Foundation, either version 3 of the License, or
|
||||||
|
(at your option) any later version.
|
||||||
|
|
||||||
|
This program is distributed in the hope that it will be useful,
|
||||||
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
GNU General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*!
|
||||||
|
* \file memory.h
|
||||||
|
*
|
||||||
|
* \brief memory management utility functions.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef CDIO_MEMORY_H_
|
||||||
|
#define CDIO_MEMORY_H_
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
#endif /* __cplusplus */
|
||||||
|
|
||||||
|
/*!
|
||||||
|
Free the passed pointer.
|
||||||
|
*/
|
||||||
|
void cdio_free(void *p_memory);
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
}
|
||||||
|
#endif /* __cplusplus */
|
||||||
|
|
||||||
|
#endif /* CDIO_MEMORY_H_ */
|
|
@ -211,8 +211,8 @@ extern "C" {
|
||||||
@return the International Standard Recording Code (ISRC) or NULL
|
@return the International Standard Recording Code (ISRC) or NULL
|
||||||
if there is none or we don't have the ability to get it.
|
if there is none or we don't have the ability to get it.
|
||||||
|
|
||||||
Note: string is malloc'd so caller has to free() the returned
|
Note: The caller must free the returned string with cdio_free()
|
||||||
string when done with it.
|
when done with it.
|
||||||
|
|
||||||
*/
|
*/
|
||||||
char * cdio_get_track_isrc (const CdIo_t *p_cdio, track_t i_track);
|
char * cdio_get_track_isrc (const CdIo_t *p_cdio, track_t i_track);
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
Copyright (C) 2008, 2012 Rocky Bernstein <rocky@gnu.org>
|
Copyright (C) 2008, 2012, 2014 Rocky Bernstein <rocky@gnu.org>
|
||||||
Copyright (C) 2006 Burkhard Plaum <plaum@ipf.uni-stuttgart.de>
|
Copyright (C) 2006 Burkhard Plaum <plaum@ipf.uni-stuttgart.de>
|
||||||
|
|
||||||
This program is free software: you can redistribute it and/or modify
|
This program is free software: you can redistribute it and/or modify
|
||||||
|
@ -52,7 +52,7 @@ void cdio_charset_converter_destroy(cdio_charset_coverter_t*cnv);
|
||||||
* \param dst_len If non NULL, returns the length of the destination string
|
* \param dst_len If non NULL, returns the length of the destination string
|
||||||
* \returns true if conversion was sucessful, false else.
|
* \returns true if conversion was sucessful, false else.
|
||||||
*
|
*
|
||||||
* The destination string must be freed by the caller with free().
|
* The destination string must be freed by the caller with cdio_free().
|
||||||
* If you pass -1 for src_len, strlen() will be used.
|
* If you pass -1 for src_len, strlen() will be used.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
@ -69,6 +69,8 @@ bool cdio_charset_convert(cdio_charset_coverter_t*cnv,
|
||||||
*
|
*
|
||||||
* This is a convenience function, which creates a charset converter,
|
* This is a convenience function, which creates a charset converter,
|
||||||
* converts one string and destroys the charset converter.
|
* converts one string and destroys the charset converter.
|
||||||
|
*
|
||||||
|
* The destination string must be freed by the caller with cdio_free().
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
@ -83,8 +85,10 @@ bool cdio_charset_from_utf8(cdio_utf8_t * src, char ** dst,
|
||||||
* \returns true if conversion was sucessful, false else.
|
* \returns true if conversion was sucessful, false else.
|
||||||
*
|
*
|
||||||
* This is a convenience function, which creates a charset converter,
|
* This is a convenience function, which creates a charset converter,
|
||||||
* converts one string and destroys the charset converter. If you pass -1
|
* converts one string and destroys the charset converter.
|
||||||
* for src_len, strlen() will be used.
|
*
|
||||||
|
* The destination string must be freed by the caller with cdio_free().
|
||||||
|
* If you pass -1 for src_len, strlen() will be used.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
@ -95,7 +99,7 @@ bool cdio_charset_to_utf8(const char *src, size_t src_len, cdio_utf8_t **dst,
|
||||||
/** \brief Convert an UTF8 string to UTF-16 (allocate returned string)
|
/** \brief Convert an UTF8 string to UTF-16 (allocate returned string)
|
||||||
* \param str Source string
|
* \param str Source string
|
||||||
* \returns NULL if the conversion was unsuccesful. Caller must free the
|
* \returns NULL if the conversion was unsuccesful. Caller must free the
|
||||||
* returned string.
|
* returned string with cdio_free().
|
||||||
* This is a convenience function available on Windows platforms only.
|
* This is a convenience function available on Windows platforms only.
|
||||||
*/
|
*/
|
||||||
wchar_t* cdio_utf8_to_wchar(const char* str);
|
wchar_t* cdio_utf8_to_wchar(const char* str);
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
Copyright (C) 2004, 2005, 2006, 2008, 2010, 2012
|
Copyright (C) 2004, 2005, 2006, 2008, 2010, 2012, 2014
|
||||||
Rocky Bernstein <rocky@gnu.org>
|
Rocky Bernstein <rocky@gnu.org>
|
||||||
Copyright (C) 2000 Herbert Valerio Riedel <hvr@gnu.org>
|
Copyright (C) 2000 Herbert Valerio Riedel <hvr@gnu.org>
|
||||||
|
|
||||||
|
@ -101,7 +101,8 @@ _cdio_strdup_upper (const char str[]);
|
||||||
|
|
||||||
/* Duplicate path and make it platform compliant. Typically needed for
|
/* Duplicate path and make it platform compliant. Typically needed for
|
||||||
MinGW/MSYS where a "/c/..." path must be translated to "c:/..." for
|
MinGW/MSYS where a "/c/..." path must be translated to "c:/..." for
|
||||||
use with fopen(), etc. Returned string must be freed by the caller. */
|
use with fopen(), etc. Returned string must be freed by the caller
|
||||||
|
using cdio_free(). */
|
||||||
char *
|
char *
|
||||||
_cdio_strdup_fixpath (const char path[]);
|
_cdio_strdup_fixpath (const char path[]);
|
||||||
|
|
||||||
|
|
|
@ -8,13 +8,13 @@
|
||||||
/*! CDIO_VERSION is a C-Preprocessor macro of a string that shows what
|
/*! CDIO_VERSION is a C-Preprocessor macro of a string that shows what
|
||||||
version is used. cdio_version_string has the same value, but it is a
|
version is used. cdio_version_string has the same value, but it is a
|
||||||
constant variable that can be accessed at run time. */
|
constant variable that can be accessed at run time. */
|
||||||
#define CDIO_VERSION "0.90 i686-pc-mingw32"
|
#define CDIO_VERSION "0.93 i686-pc-mingw32"
|
||||||
extern const char *cdio_version_string; /**< = CDIO_VERSION */
|
extern const char *cdio_version_string; /**< = CDIO_VERSION */
|
||||||
|
|
||||||
/*! LIBCDIO_VERSION_NUM is a C-Preprocessor macro that can be used for
|
/*! LIBCDIO_VERSION_NUM is a C-Preprocessor macro that can be used for
|
||||||
testing in the C preprocessor. libcdio_version_num has the same
|
testing in the C preprocessor. libcdio_version_num has the same
|
||||||
value, but it is a constant variable that can be accessed at run
|
value, but it is a constant variable that can be accessed at run
|
||||||
time. */
|
time. */
|
||||||
#define LIBCDIO_VERSION_NUM 90
|
#define LIBCDIO_VERSION_NUM 93
|
||||||
|
|
||||||
extern const unsigned int libcdio_version_num; /**< = LIBCDIO_VERSION_NUM */
|
extern const unsigned int libcdio_version_num; /**< = LIBCDIO_VERSION_NUM */
|
||||||
|
|
|
@ -146,7 +146,7 @@ iso9660_get_xa_attr_str (uint16_t xa_attr);
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
Allocates and initalizes a new iso9600_xa_t variable and returns
|
Allocates and initalizes a new iso9600_xa_t variable and returns
|
||||||
it. The caller should free the returned result.
|
it. The caller must free the returned result using iso9660_xa_free().
|
||||||
|
|
||||||
@see iso9660_xa
|
@see iso9660_xa
|
||||||
*/
|
*/
|
||||||
|
@ -154,6 +154,14 @@ iso9660_xa_t *
|
||||||
iso9660_xa_init (iso9660_xa_t *_xa, uint16_t uid, uint16_t gid, uint16_t attr,
|
iso9660_xa_init (iso9660_xa_t *_xa, uint16_t uid, uint16_t gid, uint16_t attr,
|
||||||
uint8_t filenum);
|
uint8_t filenum);
|
||||||
|
|
||||||
|
/*!
|
||||||
|
Frees the passed iso9600_xa_t structure.
|
||||||
|
|
||||||
|
@see iso9660_xa
|
||||||
|
*/
|
||||||
|
void
|
||||||
|
iso9660_xa_free (iso9660_xa_t *_xa);
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -22,6 +22,7 @@
|
||||||
<ClCompile Include="..\disc.c" />
|
<ClCompile Include="..\disc.c" />
|
||||||
<ClCompile Include="..\ds.c" />
|
<ClCompile Include="..\ds.c" />
|
||||||
<ClCompile Include="..\logging.c" />
|
<ClCompile Include="..\logging.c" />
|
||||||
|
<ClCompile Include="..\memory.c" />
|
||||||
<ClCompile Include="..\read.c" />
|
<ClCompile Include="..\read.c" />
|
||||||
<ClCompile Include="..\sector.c" />
|
<ClCompile Include="..\sector.c" />
|
||||||
<ClCompile Include="..\track.c" />
|
<ClCompile Include="..\track.c" />
|
||||||
|
@ -34,6 +35,7 @@
|
||||||
<ClInclude Include="..\..\cdio\cdio.h" />
|
<ClInclude Include="..\..\cdio\cdio.h" />
|
||||||
<ClInclude Include="..\..\cdio\ds.h" />
|
<ClInclude Include="..\..\cdio\ds.h" />
|
||||||
<ClInclude Include="..\..\cdio\logging.h" />
|
<ClInclude Include="..\..\cdio\logging.h" />
|
||||||
|
<ClInclude Include="..\..\cdio\memory.h" />
|
||||||
<ClInclude Include="..\..\cdio\sector.h" />
|
<ClInclude Include="..\..\cdio\sector.h" />
|
||||||
<ClInclude Include="..\..\cdio\types.h" />
|
<ClInclude Include="..\..\cdio\types.h" />
|
||||||
<ClInclude Include="..\..\cdio\util.h" />
|
<ClInclude Include="..\..\cdio\util.h" />
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<Filter Include="Source Files">
|
<Filter Include="Source Files">
|
||||||
|
@ -41,6 +41,9 @@
|
||||||
<ClCompile Include="..\utf8.c">
|
<ClCompile Include="..\utf8.c">
|
||||||
<Filter>Source Files</Filter>
|
<Filter>Source Files</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\memory.c">
|
||||||
|
<Filter>Source Files</Filter>
|
||||||
|
</ClCompile>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<ClInclude Include="..\_cdio_stdio.h">
|
<ClInclude Include="..\_cdio_stdio.h">
|
||||||
|
@ -85,5 +88,8 @@
|
||||||
<ClInclude Include="..\..\cdio\version.h">
|
<ClInclude Include="..\..\cdio\version.h">
|
||||||
<Filter>Header Files</Filter>
|
<Filter>Header Files</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
|
<ClInclude Include="..\..\cdio\memory.h">
|
||||||
|
<Filter>Header Files</Filter>
|
||||||
|
</ClInclude>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
</Project>
|
</Project>
|
|
@ -73,7 +73,7 @@ static inline int _stati64_utf8(const char *path, struct _stati64 *buffer) {
|
||||||
int ret;
|
int ret;
|
||||||
wchar_t* wpath = cdio_utf8_to_wchar(path);
|
wchar_t* wpath = cdio_utf8_to_wchar(path);
|
||||||
ret = _wstati64(wpath, buffer);
|
ret = _wstati64(wpath, buffer);
|
||||||
free(wpath);
|
cdio_free(wpath);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
#define CDIO_STAT_CALL _stati64_utf8
|
#define CDIO_STAT_CALL _stati64_utf8
|
||||||
|
@ -262,7 +262,7 @@ cdio_stdio_new(const char pathname[])
|
||||||
{
|
{
|
||||||
cdio_warn ("could not retrieve file info for `%s': %s",
|
cdio_warn ("could not retrieve file info for `%s': %s",
|
||||||
pathdup, strerror (errno));
|
pathdup, strerror (errno));
|
||||||
free(pathdup);
|
cdio_free(pathdup);
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -35,8 +35,19 @@
|
||||||
extern "C" {
|
extern "C" {
|
||||||
#endif /* __cplusplus */
|
#endif /* __cplusplus */
|
||||||
|
|
||||||
extern const char * cdio_dirname(const char *fname);
|
/*!
|
||||||
extern const char *cdio_abspath(const char *cwd, const char *fname);
|
Get directory name from file name.
|
||||||
|
|
||||||
|
Callers must free return value after use.
|
||||||
|
*/
|
||||||
|
extern char *cdio_dirname(const char *fname);
|
||||||
|
|
||||||
|
/*!
|
||||||
|
Construct an absolute file name from path and file name.
|
||||||
|
|
||||||
|
Callers must free return value after use.
|
||||||
|
*/
|
||||||
|
extern char *cdio_abspath(const char *cwd, const char *fname);
|
||||||
|
|
||||||
/* Opaque type */
|
/* Opaque type */
|
||||||
typedef struct _CdioDataSource CdioDataSource_t;
|
typedef struct _CdioDataSource CdioDataSource_t;
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
Copyright (C) 2003, 2004, 2005, 2008, 2011, 2012
|
Copyright (C) 2003, 2004, 2005, 2008, 2011, 2012, 2014
|
||||||
Rocky Bernstein <rocky@gnu.org>
|
Rocky Bernstein <rocky@gnu.org>
|
||||||
Copyright (C) 2001 Herbert Valerio Riedel <hvr@gnu.org>
|
Copyright (C) 2001 Herbert Valerio Riedel <hvr@gnu.org>
|
||||||
|
|
||||||
|
@ -77,8 +77,8 @@ cdio_get_cdtext (CdIo *obj)
|
||||||
|
|
||||||
@param obj the CD object that may contain CD-TEXT information.
|
@param obj the CD object that may contain CD-TEXT information.
|
||||||
@return pointer to allocated memory area holding the raw CD-TEXT
|
@return pointer to allocated memory area holding the raw CD-TEXT
|
||||||
or NULL if obj is NULL or CD-TEXT does not exist.
|
or NULL if obj is NULL or CD-TEXT does not exist. Return value
|
||||||
free() when done.
|
must be freed with cdio_free() when done with it and not NULL.
|
||||||
*/
|
*/
|
||||||
uint8_t *
|
uint8_t *
|
||||||
cdio_get_cdtext_raw (CdIo *obj)
|
cdio_get_cdtext_raw (CdIo *obj)
|
||||||
|
|
42
src/libcdio/driver/memory.c
Normal file
42
src/libcdio/driver/memory.c
Normal file
|
@ -0,0 +1,42 @@
|
||||||
|
/*
|
||||||
|
Copyright (C) 2014 Robert Kausch <robert.kausch@freac.org>
|
||||||
|
|
||||||
|
This program is free software: you can redistribute it and/or modify
|
||||||
|
it under the terms of the GNU General Public License as published by
|
||||||
|
the Free Software Foundation, either version 3 of the License, or
|
||||||
|
(at your option) any later version.
|
||||||
|
|
||||||
|
This program is distributed in the hope that it will be useful,
|
||||||
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
GNU General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
#ifdef HAVE_CONFIG_H
|
||||||
|
# include "config.h"
|
||||||
|
# define __CDIO_CONFIG_H__ 1
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef HAVE_STDLIB_H
|
||||||
|
#include <stdlib.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#include <cdio/memory.h>
|
||||||
|
#include <cdio/types.h>
|
||||||
|
|
||||||
|
/*!
|
||||||
|
Free the passed pointer.
|
||||||
|
|
||||||
|
@param p_memory a pointer to memory allocated by a libcdio funtion.
|
||||||
|
*/
|
||||||
|
void
|
||||||
|
cdio_free (void *p_memory)
|
||||||
|
{
|
||||||
|
if (p_memory == NULL) return;
|
||||||
|
|
||||||
|
free(p_memory);
|
||||||
|
}
|
|
@ -1,20 +1,19 @@
|
||||||
/*
|
/*
|
||||||
Copyright (C) 2004, 2005, 2011, 2012 Rocky Bernstein <rocky@gnu.org>
|
Copyright (C) 2004, 2005, 2011, 2012, 2014 Rocky Bernstein <rocky@gnu.org>
|
||||||
Copyright (C) 2000 Herbert Valerio Riedel <hvr@gnu.org>
|
Copyright (C) 2000 Herbert Valerio Riedel <hvr@gnu.org>
|
||||||
|
|
||||||
This program is free software; you can redistribute it and/or modify
|
This program is free software: you can redistribute it and/or modify
|
||||||
it under the terms of the GNU General Public License as published by
|
it under the terms of the GNU General Public License as published by
|
||||||
the Free Software Foundation; either version 2 of the License, or
|
the Free Software Foundation, either version 3 of the License, or
|
||||||
(at your option) any later version.
|
(at your option) any later version.
|
||||||
|
|
||||||
This program is distributed in the hope that it will be useful,
|
This program is distributed in the hope that it will be useful,
|
||||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
GNU General Public License for more details.
|
GNU General Public License for more details.
|
||||||
|
|
||||||
You should have received a copy of the GNU General Public License
|
You should have received a copy of the GNU General Public License
|
||||||
along with this program; if not, write to the Free Software
|
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifdef HAVE_CONFIG_H
|
#ifdef HAVE_CONFIG_H
|
||||||
|
@ -81,9 +80,9 @@ cdio_lsn_to_msf (lsn_t lsn, msf_t *msf)
|
||||||
f = lsn + CDIO_CD_MAX_LSN;
|
f = lsn + CDIO_CD_MAX_LSN;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (m > 6) {
|
if (m > 99) {
|
||||||
cdio_warn ("number of minutes (%d) truncated to 99.", m);
|
cdio_warn ("number of minutes (%d) truncated to 99.", m);
|
||||||
m = 6;
|
m = 99;
|
||||||
}
|
}
|
||||||
|
|
||||||
msf->m = cdio_to_bcd8 (m);
|
msf->m = cdio_to_bcd8 (m);
|
||||||
|
|
|
@ -294,8 +294,8 @@ cdio_get_track_lsn(const CdIo_t *p_cdio, track_t u_track)
|
||||||
Return the International Standard Recording Code (ISRC) for track number
|
Return the International Standard Recording Code (ISRC) for track number
|
||||||
u_track in p_cdio. Track numbers start at 1.
|
u_track in p_cdio. Track numbers start at 1.
|
||||||
|
|
||||||
Note: string is malloc'd so caller has to free() the returned
|
Note: The caller must free the returned string with cdio_free()
|
||||||
string when done with it.
|
when done with it.
|
||||||
*/
|
*/
|
||||||
char *
|
char *
|
||||||
cdio_get_track_isrc (const CdIo_t *p_cdio, track_t u_track)
|
cdio_get_track_isrc (const CdIo_t *p_cdio, track_t u_track)
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
/*
|
/*
|
||||||
Copyright (C) 2006, 2008 Burkhard Plaum <plaum@ipf.uni-stuttgart.de>
|
Copyright (C) 2006, 2008 Burkhard Plaum <plaum@ipf.uni-stuttgart.de>
|
||||||
Copyright (C) 2011 Rocky Bernstein <rocky@gnu.org>
|
Copyright (C) 2011, 2014 Rocky Bernstein <rocky@gnu.org>
|
||||||
Copyright (C) 2012 Pete Batard <pete@akeo.ie>
|
Copyright (C) 2012 Pete Batard <pete@akeo.ie>
|
||||||
|
|
||||||
This program is free software: you can redistribute it and/or modify
|
This program is free software: you can redistribute it and/or modify
|
||||||
|
@ -41,6 +41,7 @@
|
||||||
|
|
||||||
#include <cdio/utf8.h>
|
#include <cdio/utf8.h>
|
||||||
#include <cdio/logging.h>
|
#include <cdio/logging.h>
|
||||||
|
#include <cdio/memory.h>
|
||||||
|
|
||||||
/* Windows requires some basic UTF-8 support outside of Joliet */
|
/* Windows requires some basic UTF-8 support outside of Joliet */
|
||||||
#if defined(_WIN32)
|
#if defined(_WIN32)
|
||||||
|
@ -107,8 +108,8 @@ FILE* fopen_utf8(const char* filename, const char* mode)
|
||||||
wchar_t* wfilename = cdio_utf8_to_wchar(filename);
|
wchar_t* wfilename = cdio_utf8_to_wchar(filename);
|
||||||
wchar_t* wmode = cdio_utf8_to_wchar(mode);
|
wchar_t* wmode = cdio_utf8_to_wchar(mode);
|
||||||
ret = _wfopen(wfilename, wmode);
|
ret = _wfopen(wfilename, wmode);
|
||||||
free(wfilename);
|
cdio_free(wfilename);
|
||||||
free(wmode);
|
cdio_free(wmode);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
@ -292,7 +293,7 @@ bool cdio_charset_from_utf8(cdio_utf8_t * src, char ** dst,
|
||||||
/* Eliminate empty strings */
|
/* Eliminate empty strings */
|
||||||
le_dst = cdio_utf8_to_wchar(src);
|
le_dst = cdio_utf8_to_wchar(src);
|
||||||
if ((le_dst == NULL) || (le_dst[0] == 0)) {
|
if ((le_dst == NULL) || (le_dst[0] == 0)) {
|
||||||
free(le_dst);
|
cdio_free(le_dst);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -139,7 +139,8 @@ _cdio_strdup_upper (const char str[])
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Convert MinGW/MSYS paths that start in "/c/..." to "c:/..."
|
/* Convert MinGW/MSYS paths that start in "/c/..." to "c:/..."
|
||||||
so that they can be used with fopen(), stat(), etc. */
|
so that they can be used with fopen(), stat(), etc.
|
||||||
|
Returned string must be freed by the caller using cdio_free().*/
|
||||||
char *
|
char *
|
||||||
_cdio_strdup_fixpath (const char path[])
|
_cdio_strdup_fixpath (const char path[])
|
||||||
{
|
{
|
||||||
|
|
|
@ -21,6 +21,7 @@
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<ClInclude Include="..\..\cdio\bytesex.h" />
|
<ClInclude Include="..\..\cdio\bytesex.h" />
|
||||||
<ClInclude Include="..\..\cdio\cdio.h" />
|
<ClInclude Include="..\..\cdio\cdio.h" />
|
||||||
|
<ClInclude Include="..\..\cdio\cdtext.h" />
|
||||||
<ClInclude Include="..\..\cdio\iso9660.h" />
|
<ClInclude Include="..\..\cdio\iso9660.h" />
|
||||||
<ClInclude Include="..\..\cdio\logging.h" />
|
<ClInclude Include="..\..\cdio\logging.h" />
|
||||||
<ClInclude Include="..\..\cdio\utf8.h" />
|
<ClInclude Include="..\..\cdio\utf8.h" />
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<Filter Include="Source Files">
|
<Filter Include="Source Files">
|
||||||
|
@ -47,6 +47,9 @@
|
||||||
<ClInclude Include="..\..\driver\filemode.h">
|
<ClInclude Include="..\..\driver\filemode.h">
|
||||||
<Filter>Header Files</Filter>
|
<Filter>Header Files</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
|
<ClInclude Include="..\..\cdio\cdtext.h">
|
||||||
|
<Filter>Header Files</Filter>
|
||||||
|
</ClInclude>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<ClCompile Include="..\iso9660_fs.c">
|
<ClCompile Include="..\iso9660_fs.c">
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
Copyright (C) 2003-2009, 2013 Rocky Bernstein <rocky@gnu.org>
|
Copyright (C) 2003-2009, 2013-2014 Rocky Bernstein <rocky@gnu.org>
|
||||||
Copyright (C) 2000 Herbert Valerio Riedel <hvr@gnu.org>
|
Copyright (C) 2000 Herbert Valerio Riedel <hvr@gnu.org>
|
||||||
|
|
||||||
This program is free software: you can redistribute it and/or modify
|
This program is free software: you can redistribute it and/or modify
|
||||||
|
@ -360,7 +360,7 @@ iso9660_set_ltime_with_timezone(const struct tm *p_tm,
|
||||||
{
|
{
|
||||||
char *_pvd_date = (char *) pvd_date;
|
char *_pvd_date = (char *) pvd_date;
|
||||||
|
|
||||||
memset (_pvd_date, '0', 16);
|
memset (_pvd_date, (int) '0', 16);
|
||||||
pvd_date->lt_gmtoff = (iso712_t) 0; /* Start out with time zone GMT. */
|
pvd_date->lt_gmtoff = (iso712_t) 0; /* Start out with time zone GMT. */
|
||||||
|
|
||||||
if (!p_tm) return;
|
if (!p_tm) return;
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
Copyright (C) 2003-2008, 2011-2013 Rocky Bernstein <rocky@gnu.org>
|
Copyright (C) 2003-2008, 2011-2014 Rocky Bernstein <rocky@gnu.org>
|
||||||
Copyright (C) 2001 Herbert Valerio Riedel <hvr@gnu.org>
|
Copyright (C) 2001 Herbert Valerio Riedel <hvr@gnu.org>
|
||||||
|
|
||||||
This program is free software: you can redistribute it and/or modify
|
This program is free software: you can redistribute it and/or modify
|
||||||
|
@ -754,6 +754,7 @@ _iso9660_dir_to_statbuf (iso9660_dir_t *p_iso9660_dir, bool_3way_t b_xa,
|
||||||
if (!p_stat_new)
|
if (!p_stat_new)
|
||||||
{
|
{
|
||||||
cdio_warn("Couldn't calloc(1, %d)", (int)(sizeof(iso9660_stat_t)+i_rr_fname+2));
|
cdio_warn("Couldn't calloc(1, %d)", (int)(sizeof(iso9660_stat_t)+i_rr_fname+2));
|
||||||
|
free(p_stat);
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
memcpy(p_stat_new, p_stat, stat_len);
|
memcpy(p_stat_new, p_stat, stat_len);
|
||||||
|
@ -1270,12 +1271,15 @@ iso9660_fs_readdir (CdIo_t *p_cdio, const char psz_path[], bool b_mode2)
|
||||||
if (!_dirbuf)
|
if (!_dirbuf)
|
||||||
{
|
{
|
||||||
cdio_warn("Couldn't calloc(1, %d)", p_stat->secsize * ISO_BLOCKSIZE);
|
cdio_warn("Couldn't calloc(1, %d)", p_stat->secsize * ISO_BLOCKSIZE);
|
||||||
|
_cdio_list_free (retval, true);
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (cdio_read_data_sectors (p_cdio, _dirbuf, p_stat->lsn,
|
if (cdio_read_data_sectors (p_cdio, _dirbuf, p_stat->lsn,
|
||||||
ISO_BLOCKSIZE, p_stat->secsize))
|
ISO_BLOCKSIZE, p_stat->secsize)) {
|
||||||
return NULL;
|
_cdio_list_free (retval, true);
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
while (offset < (p_stat->secsize * ISO_BLOCKSIZE))
|
while (offset < (p_stat->secsize * ISO_BLOCKSIZE))
|
||||||
{
|
{
|
||||||
|
@ -1334,12 +1338,14 @@ iso9660_ifs_readdir (iso9660_t *p_iso, const char psz_path[])
|
||||||
if (!_dirbuf)
|
if (!_dirbuf)
|
||||||
{
|
{
|
||||||
cdio_warn("Couldn't calloc(1, %d)", p_stat->secsize * ISO_BLOCKSIZE);
|
cdio_warn("Couldn't calloc(1, %d)", p_stat->secsize * ISO_BLOCKSIZE);
|
||||||
|
_cdio_list_free (retval, true);
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
ret = iso9660_iso_seek_read (p_iso, _dirbuf, p_stat->lsn, p_stat->secsize);
|
ret = iso9660_iso_seek_read (p_iso, _dirbuf, p_stat->lsn, p_stat->secsize);
|
||||||
if (ret != ISO_BLOCKSIZE*p_stat->secsize)
|
if (ret != ISO_BLOCKSIZE*p_stat->secsize)
|
||||||
{
|
{
|
||||||
|
_cdio_list_free (retval, true);
|
||||||
free (_dirbuf);
|
free (_dirbuf);
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
@ -1415,8 +1421,9 @@ find_lsn_recurse (void *p_image, iso9660_readdir_t iso9660_readdir,
|
||||||
iso9660_stat_t *ret_stat = calloc(1, len2);
|
iso9660_stat_t *ret_stat = calloc(1, len2);
|
||||||
if (!ret_stat)
|
if (!ret_stat)
|
||||||
{
|
{
|
||||||
cdio_warn("Couldn't calloc(1, %d)", len2);
|
_cdio_list_free (dirlist, true);
|
||||||
return NULL;
|
cdio_warn("Couldn't calloc(1, %d)", len2);
|
||||||
|
return NULL;
|
||||||
}
|
}
|
||||||
memcpy(ret_stat, statbuf, len2);
|
memcpy(ret_stat, statbuf, len2);
|
||||||
_cdio_list_free (entlist, true);
|
_cdio_list_free (entlist, true);
|
||||||
|
@ -1510,6 +1517,16 @@ iso9660_ifs_find_lsn_with_path(iso9660_t *p_iso, lsn_t i_lsn,
|
||||||
"/", i_lsn, ppsz_full_filename);
|
"/", i_lsn, ppsz_full_filename);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*!
|
||||||
|
Free the passed iso9660_stat_t structure.
|
||||||
|
*/
|
||||||
|
void
|
||||||
|
iso9660_stat_free(iso9660_stat_t *p_stat)
|
||||||
|
{
|
||||||
|
if (p_stat != NULL)
|
||||||
|
free(p_stat);
|
||||||
|
}
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
Return true if ISO 9660 image has extended attrributes (XA).
|
Return true if ISO 9660 image has extended attrributes (XA).
|
||||||
*/
|
*/
|
||||||
|
@ -1563,11 +1580,11 @@ iso_have_rr_traverse (iso9660_t *p_iso, const iso9660_stat_t *_root,
|
||||||
if ( have_rr != yep) {
|
if ( have_rr != yep) {
|
||||||
have_rr = iso_have_rr_traverse (p_iso, p_stat, &splitpath[1], pu_file_limit);
|
have_rr = iso_have_rr_traverse (p_iso, p_stat, &splitpath[1], pu_file_limit);
|
||||||
}
|
}
|
||||||
|
free(p_stat);
|
||||||
if (have_rr != nope) {
|
if (have_rr != nope) {
|
||||||
free (_dirbuf);
|
free (_dirbuf);
|
||||||
return have_rr;
|
return have_rr;
|
||||||
}
|
}
|
||||||
free(p_stat);
|
|
||||||
|
|
||||||
offset += iso9660_get_dir_len(p_iso9660_dir);
|
offset += iso9660_get_dir_len(p_iso9660_dir);
|
||||||
*pu_file_limit = (*pu_file_limit)-1;
|
*pu_file_limit = (*pu_file_limit)-1;
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
Copyright (C) 2005, 2008, 2010, 2011 Rocky Bernstein <rocky@gnu.org>
|
Copyright (C) 2005, 2008, 2010-2011, 2014 Rocky Bernstein <rocky@gnu.org>
|
||||||
Adapted from GNU/Linux fs/isofs/rock.c (C) 1992, 1993 Eric Youngdale
|
Adapted from GNU/Linux fs/isofs/rock.c (C) 1992, 1993 Eric Youngdale
|
||||||
|
|
||||||
This program is free software: you can redistribute it and/or modify
|
This program is free software: you can redistribute it and/or modify
|
||||||
|
@ -616,5 +616,3 @@ iso9660_get_posix_filemode_from_rock(const iso_rock_statbuf_t *rr)
|
||||||
{
|
{
|
||||||
return (mode_t) rr->st_mode;
|
return (mode_t) rr->st_mode;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -151,6 +151,13 @@ iso9660_xa_init (iso9660_xa_t *_xa, uint16_t uid, uint16_t gid, uint16_t attr,
|
||||||
return _xa;
|
return _xa;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
iso9660_xa_free (iso9660_xa_t *_xa)
|
||||||
|
{
|
||||||
|
if (_xa != NULL)
|
||||||
|
free(_xa);
|
||||||
|
}
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
Returns POSIX mode bitstring for a given file.
|
Returns POSIX mode bitstring for a given file.
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
/*
|
/*
|
||||||
Copyright (C) 2005-2006, 2008, 2011, 2013 Rocky Bernstein <rocky@gnu.org>
|
Copyright (C) 2005-2006, 2008, 2011, 2013-2014
|
||||||
|
Rocky Bernstein <rocky@gnu.org>
|
||||||
|
|
||||||
This program is free software: you can redistribute it and/or modify
|
This program is free software: you can redistribute it and/or modify
|
||||||
it under the terms of the GNU General Public License as published by
|
it under the terms of the GNU General Public License as published by
|
||||||
|
@ -205,10 +206,9 @@ udf_get_lba(const udf_file_entry_t *p_udf_fe,
|
||||||
|
|
||||||
#define udf_PATH_DELIMITERS "/\\"
|
#define udf_PATH_DELIMITERS "/\\"
|
||||||
|
|
||||||
/* Searches p_udf_dirent a directory entry called psz_token.
|
/* Searches p_udf_dirent for a directory entry called psz_token.
|
||||||
Note p_udf_dirent is continuously updated. If the entry is
|
Note that p_udf_dirent may be replaced or freed during this call
|
||||||
not found p_udf_dirent is useless and thus the caller should
|
and only the returned udf_dirent_t must be used afterwards.
|
||||||
not use it afterwards.
|
|
||||||
*/
|
*/
|
||||||
static
|
static
|
||||||
udf_dirent_t *
|
udf_dirent_t *
|
||||||
|
@ -221,20 +221,21 @@ udf_ff_traverse(udf_dirent_t *p_udf_dirent, char *psz_token)
|
||||||
if (!next_tok)
|
if (!next_tok)
|
||||||
return p_udf_dirent; /* found */
|
return p_udf_dirent; /* found */
|
||||||
else if (p_udf_dirent->b_dir) {
|
else if (p_udf_dirent->b_dir) {
|
||||||
udf_dirent_t * p_udf_dirent2 = udf_opendir(p_udf_dirent);
|
udf_dirent_t * p_udf_dirent_next = udf_opendir(p_udf_dirent);
|
||||||
|
|
||||||
if (p_udf_dirent2) {
|
if (p_udf_dirent_next) {
|
||||||
udf_dirent_t * p_udf_dirent3 =
|
/* free p_udf_dirent to avoid leaking memory. */
|
||||||
udf_ff_traverse(p_udf_dirent2, next_tok);
|
udf_dirent_free(p_udf_dirent);
|
||||||
|
|
||||||
/* if p_udf_dirent3 is null p_udf_dirent2 is free'd. */
|
/* previous p_udf_dirent_next is freed by udf_ff_traverse. */
|
||||||
return p_udf_dirent3;
|
p_udf_dirent_next = udf_ff_traverse(p_udf_dirent_next, next_tok);
|
||||||
|
|
||||||
|
return p_udf_dirent_next;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (p_udf_dirent)
|
|
||||||
free(p_udf_dirent->psz_name);
|
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -253,20 +254,15 @@ udf_fopen(udf_dirent_t *p_udf_root, const char *psz_name)
|
||||||
/* file position must be reset when accessing a new file */
|
/* file position must be reset when accessing a new file */
|
||||||
p_udf_root->p_udf->i_position = 0;
|
p_udf_root->p_udf->i_position = 0;
|
||||||
|
|
||||||
strncpy(tokenline, psz_name, udf_MAX_PATHLEN);
|
tokenline[udf_MAX_PATHLEN-1] = '\0';
|
||||||
|
strncpy(tokenline, psz_name, udf_MAX_PATHLEN-1);
|
||||||
psz_token = strtok(tokenline, udf_PATH_DELIMITERS);
|
psz_token = strtok(tokenline, udf_PATH_DELIMITERS);
|
||||||
if (psz_token) {
|
if (psz_token) {
|
||||||
/*** FIXME??? udf_dirent can be variable size due to the
|
|
||||||
extended attributes and descriptors. Given that, is this
|
|
||||||
correct?
|
|
||||||
*/
|
|
||||||
udf_dirent_t *p_udf_dirent =
|
udf_dirent_t *p_udf_dirent =
|
||||||
udf_new_dirent(&p_udf_root->fe, p_udf_root->p_udf,
|
udf_new_dirent(&p_udf_root->fe, p_udf_root->p_udf,
|
||||||
p_udf_root->psz_name, p_udf_root->b_dir,
|
p_udf_root->psz_name, p_udf_root->b_dir,
|
||||||
p_udf_root->b_parent);
|
p_udf_root->b_parent);
|
||||||
p_udf_file = udf_ff_traverse(p_udf_dirent, psz_token);
|
p_udf_file = udf_ff_traverse(p_udf_dirent, psz_token);
|
||||||
if (p_udf_file != p_udf_dirent)
|
|
||||||
udf_dirent_free(p_udf_dirent);
|
|
||||||
}
|
}
|
||||||
else if ( 0 == strncmp("/", psz_name, sizeof("/")) ) {
|
else if ( 0 == strncmp("/", psz_name, sizeof("/")) ) {
|
||||||
return udf_new_dirent(&p_udf_root->fe, p_udf_root->p_udf,
|
return udf_new_dirent(&p_udf_root->fe, p_udf_root->p_udf,
|
||||||
|
@ -299,7 +295,7 @@ unicode16_decode(const uint8_t *data, int i_len)
|
||||||
cdio_charset_to_utf8((char*)&data[1], i_len-1, &r, "UCS-2BE");
|
cdio_charset_to_utf8((char*)&data[1], i_len-1, &r, "UCS-2BE");
|
||||||
return r;
|
return r;
|
||||||
default:
|
default:
|
||||||
/* Empty string, for calls that can't take a NULL pointer */
|
/* Empty string, as some existing sections can't take a NULL pointer */
|
||||||
r = (char*)calloc(1, 1);
|
r = (char*)calloc(1, 1);
|
||||||
return r;
|
return r;
|
||||||
}
|
}
|
||||||
|
@ -475,10 +471,10 @@ udf_get_volume_id(udf_t *p_udf, /*out*/ char *psz_volid, unsigned int i_volid)
|
||||||
if (r == NULL)
|
if (r == NULL)
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
volid_len = strlen(r)+1; /* +1 for NUL terminator */
|
volid_len = strlen(r)+1; /* +1 for NUL terminator */
|
||||||
if (psz_volid != NULL) {
|
if (psz_volid != NULL) {
|
||||||
strncpy(psz_volid, r, MIN(volid_len, i_volid));
|
strncpy(psz_volid, r, MIN(volid_len, i_volid));
|
||||||
psz_volid[i_volid-1] = 0; /* strncpy does not always terminate the dest */
|
psz_volid[i_volid-1] = 0; /* strncpy does not always terminate the dest */
|
||||||
}
|
}
|
||||||
free(r);
|
free(r);
|
||||||
|
|
||||||
|
@ -541,10 +537,10 @@ udf_get_logical_volume_id(udf_t *p_udf, /*out*/ char *psz_logvolid, unsigned int
|
||||||
if (r == NULL)
|
if (r == NULL)
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
logvolid_len = strlen(r)+1; /* +1 for NUL terminator */
|
logvolid_len = strlen(r)+1; /* +1 for NUL terminator */
|
||||||
if (psz_logvolid != NULL) {
|
if (psz_logvolid != NULL) {
|
||||||
strncpy(psz_logvolid, r, MIN(logvolid_len, i_logvolid));
|
strncpy(psz_logvolid, r, MIN(logvolid_len, i_logvolid));
|
||||||
psz_logvolid[i_logvolid-1] = 0; /* strncpy does not always terminate the dest */
|
psz_logvolid[i_logvolid-1] = 0; /* strncpy does not always terminate the dest */
|
||||||
}
|
}
|
||||||
free(r);
|
free(r);
|
||||||
|
|
||||||
|
@ -748,9 +744,9 @@ udf_readdir(udf_dirent_t *p_udf_dirent)
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
free_and_null(p_udf_dirent->psz_name);
|
free_and_null(p_udf_dirent->psz_name);
|
||||||
p = (uint8_t*)p_udf_dirent->fid->u.imp_use.data + p_udf_dirent->fid->u.i_imp_use;
|
p = (uint8_t*)p_udf_dirent->fid->u.imp_use.data + p_udf_dirent->fid->u.i_imp_use;
|
||||||
p_udf_dirent->psz_name = unicode16_decode(p, i_len);
|
p_udf_dirent->psz_name = unicode16_decode(p, i_len);
|
||||||
}
|
}
|
||||||
return p_udf_dirent;
|
return p_udf_dirent;
|
||||||
}
|
}
|
||||||
|
|
12
src/rufus.rc
12
src/rufus.rc
|
@ -32,7 +32,7 @@ LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL
|
||||||
|
|
||||||
IDD_DIALOG DIALOGEX 12, 12, 206, 329
|
IDD_DIALOG DIALOGEX 12, 12, 206, 329
|
||||||
STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | DS_CENTER | WS_MINIMIZEBOX | WS_POPUP | WS_CAPTION | WS_SYSMENU
|
STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | DS_CENTER | WS_MINIMIZEBOX | WS_POPUP | WS_CAPTION | WS_SYSMENU
|
||||||
CAPTION "Rufus 1.4.11.521"
|
CAPTION "Rufus 1.4.11.522"
|
||||||
FONT 8, "MS Shell Dlg", 400, 0, 0x1
|
FONT 8, "MS Shell Dlg", 400, 0, 0x1
|
||||||
BEGIN
|
BEGIN
|
||||||
DEFPUSHBUTTON "Start",IDC_START,94,291,50,14
|
DEFPUSHBUTTON "Start",IDC_START,94,291,50,14
|
||||||
|
@ -165,7 +165,7 @@ END
|
||||||
RTL_IDD_DIALOG DIALOGEX 12, 12, 206, 329
|
RTL_IDD_DIALOG DIALOGEX 12, 12, 206, 329
|
||||||
STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | DS_CENTER | WS_MINIMIZEBOX | WS_POPUP | WS_CAPTION | WS_SYSMENU
|
STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | DS_CENTER | WS_MINIMIZEBOX | WS_POPUP | WS_CAPTION | WS_SYSMENU
|
||||||
EXSTYLE WS_EX_RTLREADING | WS_EX_APPWINDOW | WS_EX_LAYOUTRTL
|
EXSTYLE WS_EX_RTLREADING | WS_EX_APPWINDOW | WS_EX_LAYOUTRTL
|
||||||
CAPTION "Rufus 1.4.11.521"
|
CAPTION "Rufus 1.4.11.522"
|
||||||
FONT 8, "MS Shell Dlg", 400, 0, 0x1
|
FONT 8, "MS Shell Dlg", 400, 0, 0x1
|
||||||
BEGIN
|
BEGIN
|
||||||
DEFPUSHBUTTON "Start",IDC_START,94,291,50,14
|
DEFPUSHBUTTON "Start",IDC_START,94,291,50,14
|
||||||
|
@ -428,8 +428,8 @@ END
|
||||||
//
|
//
|
||||||
|
|
||||||
VS_VERSION_INFO VERSIONINFO
|
VS_VERSION_INFO VERSIONINFO
|
||||||
FILEVERSION 1,4,11,521
|
FILEVERSION 1,4,11,522
|
||||||
PRODUCTVERSION 1,4,11,521
|
PRODUCTVERSION 1,4,11,522
|
||||||
FILEFLAGSMASK 0x3fL
|
FILEFLAGSMASK 0x3fL
|
||||||
#ifdef _DEBUG
|
#ifdef _DEBUG
|
||||||
FILEFLAGS 0x1L
|
FILEFLAGS 0x1L
|
||||||
|
@ -446,13 +446,13 @@ BEGIN
|
||||||
BEGIN
|
BEGIN
|
||||||
VALUE "CompanyName", "Akeo Consulting (http://akeo.ie)"
|
VALUE "CompanyName", "Akeo Consulting (http://akeo.ie)"
|
||||||
VALUE "FileDescription", "Rufus"
|
VALUE "FileDescription", "Rufus"
|
||||||
VALUE "FileVersion", "1.4.11.521"
|
VALUE "FileVersion", "1.4.11.522"
|
||||||
VALUE "InternalName", "Rufus"
|
VALUE "InternalName", "Rufus"
|
||||||
VALUE "LegalCopyright", "© 2011-2014 Pete Batard (GPL v3)"
|
VALUE "LegalCopyright", "© 2011-2014 Pete Batard (GPL v3)"
|
||||||
VALUE "LegalTrademarks", "http://www.gnu.org/copyleft/gpl.html"
|
VALUE "LegalTrademarks", "http://www.gnu.org/copyleft/gpl.html"
|
||||||
VALUE "OriginalFilename", "rufus.exe"
|
VALUE "OriginalFilename", "rufus.exe"
|
||||||
VALUE "ProductName", "Rufus"
|
VALUE "ProductName", "Rufus"
|
||||||
VALUE "ProductVersion", "1.4.11.521"
|
VALUE "ProductVersion", "1.4.11.522"
|
||||||
END
|
END
|
||||||
END
|
END
|
||||||
BLOCK "VarFileInfo"
|
BLOCK "VarFileInfo"
|
||||||
|
|
Loading…
Reference in a new issue