mirror of
https://github.com/pbatard/rufus.git
synced 2025-05-30 14:35:21 -04:00
[iso] add ISO support part 2 (udf)
* also splits filemode into header + source * also better handling of cdio_config.h
This commit is contained in:
parent
ab109bf844
commit
a7eb3d50f2
24 changed files with 1852 additions and 157 deletions
|
@ -12,6 +12,10 @@ Project("{11411DA5-63FE-49DC-8D5C-CA379B95FF3C}") = "syslinux-libfat", "src\sysl
|
|||
EndProject
|
||||
Project("{11411DA5-63FE-49DC-8D5C-CA379B95FF3C}") = "syslinux-libinstaller", "src\syslinux\libinstaller\.msvc\libinstaller.vcxproj", "{266502AC-CD74-4581-B707-938A7D05AD7A}"
|
||||
EndProject
|
||||
Project("{11411DA5-63FE-49DC-8D5C-CA379B95FF3C}") = "libcdio-iso9660", "src\libcdio\iso9660\.msvc\iso9660.vcxproj", "{D4E80F35-2604-40AC-B436-97B052ECB572}"
|
||||
EndProject
|
||||
Project("{11411DA5-63FE-49DC-8D5C-CA379B95FF3C}") = "libcdio-udf", "src\libcdio\udf\.msvc\udf.vcxproj", "{0CEC40A6-A195-4BE5-A88B-0AB00EB142EC}"
|
||||
EndProject
|
||||
Global
|
||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||
Debug|Win32 = Debug|Win32
|
||||
|
@ -52,6 +56,22 @@ Global
|
|||
{266502AC-CD74-4581-B707-938A7D05AD7A}.Release|Win32.Build.0 = Release|Win32
|
||||
{266502AC-CD74-4581-B707-938A7D05AD7A}.Release|x64.ActiveCfg = Release|x64
|
||||
{266502AC-CD74-4581-B707-938A7D05AD7A}.Release|x64.Build.0 = Release|x64
|
||||
{D4E80F35-2604-40AC-B436-97B052ECB572}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{D4E80F35-2604-40AC-B436-97B052ECB572}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{D4E80F35-2604-40AC-B436-97B052ECB572}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{D4E80F35-2604-40AC-B436-97B052ECB572}.Debug|x64.Build.0 = Debug|x64
|
||||
{D4E80F35-2604-40AC-B436-97B052ECB572}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{D4E80F35-2604-40AC-B436-97B052ECB572}.Release|Win32.Build.0 = Release|Win32
|
||||
{D4E80F35-2604-40AC-B436-97B052ECB572}.Release|x64.ActiveCfg = Release|x64
|
||||
{D4E80F35-2604-40AC-B436-97B052ECB572}.Release|x64.Build.0 = Release|x64
|
||||
{0CEC40A6-A195-4BE5-A88B-0AB00EB142EC}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{0CEC40A6-A195-4BE5-A88B-0AB00EB142EC}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{0CEC40A6-A195-4BE5-A88B-0AB00EB142EC}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{0CEC40A6-A195-4BE5-A88B-0AB00EB142EC}.Debug|x64.Build.0 = Debug|x64
|
||||
{0CEC40A6-A195-4BE5-A88B-0AB00EB142EC}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{0CEC40A6-A195-4BE5-A88B-0AB00EB142EC}.Release|Win32.Build.0 = Release|Win32
|
||||
{0CEC40A6-A195-4BE5-A88B-0AB00EB142EC}.Release|x64.ActiveCfg = Release|x64
|
||||
{0CEC40A6-A195-4BE5-A88B-0AB00EB142EC}.Release|x64.Build.0 = Release|x64
|
||||
EndGlobalSection
|
||||
GlobalSection(SolutionProperties) = preSolution
|
||||
HideSolutionNode = FALSE
|
||||
|
|
|
@ -61,6 +61,7 @@ extern "C" {
|
|||
/* Drive(r)/Device-related functions. Perhaps we should break out
|
||||
Driver from device?
|
||||
*/
|
||||
// TODO: die die die
|
||||
#include <cdio/device.h>
|
||||
|
||||
/* Disc-related functions. */
|
||||
|
@ -72,9 +73,11 @@ extern "C" {
|
|||
#include <cdio/read.h>
|
||||
|
||||
/* CD-Text-related functions. */
|
||||
// TODO: die die die
|
||||
#include <cdio/cdtext.h>
|
||||
|
||||
/* Track-related functions. */
|
||||
// TODO: die die die
|
||||
#include <cdio/track.h>
|
||||
|
||||
#endif /* __CDIO_H__ */
|
||||
|
|
|
@ -7,7 +7,12 @@
|
|||
#undef CYGWIN
|
||||
|
||||
/* what to put between the brackets for empty arrays */
|
||||
#define EMPTY_ARRAY_SIZE MAX_PATH
|
||||
#ifdef _MSC_VER
|
||||
/* Very disputable hack! -- good thing we use MinGW for the release */
|
||||
#define EMPTY_ARRAY_SIZE 256
|
||||
#else
|
||||
#define EMPTY_ARRAY_SIZE
|
||||
#endif
|
||||
|
||||
/* Define 1 if you have BSDI-type CD-ROM support */
|
||||
#undef HAVE_BSDI_CDROM
|
||||
|
@ -143,7 +148,7 @@
|
|||
#undef HAVE_VSNPRINTF
|
||||
|
||||
/* Define 1 if you have MinGW CD-ROM support */
|
||||
#define HAVE_WIN32_CDROM 1
|
||||
#undef HAVE_WIN32_CDROM
|
||||
|
||||
/* Define as const if the declaration of iconv() needs const. */
|
||||
#undef ICONV_CONST
|
||||
|
|
1014
src/libcdio/cdio/ecma_167.h
Normal file
1014
src/libcdio/cdio/ecma_167.h
Normal file
File diff suppressed because it is too large
Load diff
119
src/libcdio/cdio/filemode.h
Normal file
119
src/libcdio/cdio/filemode.h
Normal file
|
@ -0,0 +1,119 @@
|
|||
/*
|
||||
filemode.h -- file modes common definitions
|
||||
|
||||
Copyright (C) 2005, 2008, 2011 Rocky Bernstein <rocky@gnu.org>
|
||||
Copyright (C) 1985, 1990, 1993, 1998-2000 Free Software Foundation, Inc.
|
||||
|
||||
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/>.
|
||||
*/
|
||||
|
||||
#ifndef __FILEMODE_H__
|
||||
#define __FILEMODE_H__
|
||||
|
||||
#ifdef HAVE_SYS_STAT_H
|
||||
#include <sys/stat.h>
|
||||
#endif
|
||||
|
||||
#if !S_IRUSR
|
||||
# if S_IREAD
|
||||
# define S_IRUSR S_IREAD
|
||||
# else
|
||||
# define S_IRUSR 00400
|
||||
# endif
|
||||
#endif
|
||||
|
||||
#if !S_IWUSR
|
||||
# if S_IWRITE
|
||||
# define S_IWUSR S_IWRITE
|
||||
# else
|
||||
# define S_IWUSR 00200
|
||||
# endif
|
||||
#endif
|
||||
|
||||
#if !S_IXUSR
|
||||
# if S_IEXEC
|
||||
# define S_IXUSR S_IEXEC
|
||||
# else
|
||||
# define S_IXUSR 00100
|
||||
# endif
|
||||
#endif
|
||||
|
||||
#if !S_IRGRP
|
||||
# define S_IRGRP (S_IRUSR >> 3)
|
||||
#endif
|
||||
#if !S_IWGRP
|
||||
# define S_IWGRP (S_IWUSR >> 3)
|
||||
#endif
|
||||
#if !S_IXGRP
|
||||
# define S_IXGRP (S_IXUSR >> 3)
|
||||
#endif
|
||||
#if !S_IROTH
|
||||
# define S_IROTH (S_IRUSR >> 6)
|
||||
#endif
|
||||
#if !S_IWOTH
|
||||
# define S_IWOTH (S_IWUSR >> 6)
|
||||
#endif
|
||||
#if !S_IXOTH
|
||||
# define S_IXOTH (S_IXUSR >> 6)
|
||||
#endif
|
||||
|
||||
#ifdef STAT_MACROS_BROKEN
|
||||
# undef S_ISBLK
|
||||
# undef S_ISCHR
|
||||
# undef S_ISDIR
|
||||
# undef S_ISFIFO
|
||||
# undef S_ISLNK
|
||||
# undef S_ISMPB
|
||||
# undef S_ISMPC
|
||||
# undef S_ISNWK
|
||||
# undef S_ISREG
|
||||
# undef S_ISSOCK
|
||||
#endif /* STAT_MACROS_BROKEN. */
|
||||
|
||||
#if !defined S_ISBLK && defined S_IFBLK
|
||||
# define S_ISBLK(m) (((m) & S_IFMT) == S_IFBLK)
|
||||
#endif
|
||||
#if !defined S_ISCHR && defined S_IFCHR
|
||||
# define S_ISCHR(m) (((m) & S_IFMT) == S_IFCHR)
|
||||
#endif
|
||||
#if !defined S_ISDIR && defined S_IFDIR
|
||||
# define S_ISDIR(m) (((m) & S_IFMT) == S_IFDIR)
|
||||
#endif
|
||||
#if !defined S_ISREG && defined S_IFREG
|
||||
# define S_ISREG(m) (((m) & S_IFMT) == S_IFREG)
|
||||
#endif
|
||||
#if !defined S_ISFIFO && defined S_IFIFO
|
||||
# define S_ISFIFO(m) (((m) & S_IFMT) == S_IFIFO)
|
||||
#endif
|
||||
#if !defined S_ISLNK && defined S_IFLNK
|
||||
# define S_ISLNK(m) (((m) & S_IFMT) == S_IFLNK)
|
||||
#endif
|
||||
#if !defined S_ISSOCK && defined S_IFSOCK
|
||||
# define S_ISSOCK(m) (((m) & S_IFMT) == S_IFSOCK)
|
||||
#endif
|
||||
#if !defined S_ISMPB && defined S_IFMPB /* V7 */
|
||||
# define S_ISMPB(m) (((m) & S_IFMT) == S_IFMPB)
|
||||
# define S_ISMPC(m) (((m) & S_IFMT) == S_IFMPC)
|
||||
#endif
|
||||
#if !defined S_ISNWK && defined S_IFNWK /* HP/UX */
|
||||
# define S_ISNWK(m) (((m) & S_IFMT) == S_IFNWK)
|
||||
#endif
|
||||
#if !defined S_ISDOOR && defined S_IFDOOR /* Solaris 2.5 and up */
|
||||
# define S_ISDOOR(m) (((m) & S_IFMT) == S_IFDOOR)
|
||||
#endif
|
||||
#if !defined S_ISCTG && defined S_IFCTG /* MassComp */
|
||||
# define S_ISCTG(m) (((m) & S_IFMT) == S_IFCTG)
|
||||
#endif
|
||||
|
||||
#endif /* __FILEMODE_H__ */
|
|
@ -39,10 +39,12 @@ extern "C" {
|
|||
S_ISSOCK() or S_ISLNK() macros, so we'll roll our own. */
|
||||
#if !defined(HAVE_S_ISSOCK) && !defined(S_ISSOCK)
|
||||
#define S_ISSOCK(st_mode) ((((st_mode)) & 0170000) == (0140000))
|
||||
#define HAVE_S_ISSOCK
|
||||
#endif
|
||||
|
||||
#if !defined(HAVE_S_ISLNK) && !defined(S_ISLNK)
|
||||
#define S_ISLNK(st_mode) ((((st_mode)) & 0170000) == (0010000))
|
||||
#define HAVE_S_ISLNK
|
||||
#endif
|
||||
|
||||
/*! An enumeration for some of the ISO_ROCK_* \#defines below. This isn't
|
||||
|
|
|
@ -44,11 +44,6 @@ extern "C" {
|
|||
#include <sys/types.h>
|
||||
#endif
|
||||
|
||||
#ifdef _MSC_VER
|
||||
#include <windows.h>
|
||||
typedef unsigned short mode_t;
|
||||
#endif
|
||||
|
||||
#if defined(HAVE_STDINT_H)
|
||||
# include <stdint.h>
|
||||
#elif defined(HAVE_INTTYPES_H)
|
||||
|
|
190
src/libcdio/cdio/udf.h
Normal file
190
src/libcdio/cdio/udf.h
Normal file
|
@ -0,0 +1,190 @@
|
|||
/*
|
||||
Copyright (C) 2005, 2006, 2008, 2010 Rocky Bernstein <rocky@gnu.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 udf.h
|
||||
*
|
||||
* \brief The top-level interface header for libudf: UDF filesystem
|
||||
* library; applications include this.
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef UDF_H
|
||||
#define UDF_H
|
||||
|
||||
#include <cdio/cdio.h>
|
||||
#include <cdio/ecma_167.h>
|
||||
#include <cdio/posix.h>
|
||||
|
||||
typedef uint16_t partition_num_t;
|
||||
|
||||
/** Opaque structures. */
|
||||
typedef struct udf_s udf_t;
|
||||
typedef struct udf_file_s udf_file_t;
|
||||
|
||||
typedef struct udf_dirent_s {
|
||||
char *psz_name;
|
||||
bool b_dir; /* true if this entry is a directory. */
|
||||
bool b_parent; /* True if has parent directory (e.g. not root
|
||||
directory). If not set b_dir will probably
|
||||
be true. */
|
||||
udf_t *p_udf;
|
||||
uint32_t i_part_start;
|
||||
uint32_t i_loc, i_loc_end;
|
||||
uint64_t dir_left;
|
||||
uint8_t *sector;
|
||||
udf_fileid_desc_t *fid;
|
||||
|
||||
/* This field has to come last because it is variable in length. */
|
||||
udf_file_entry_t fe;
|
||||
} udf_dirent_t;;
|
||||
|
||||
|
||||
|
||||
/**
|
||||
Imagine the below a \#define'd value rather than distinct values of
|
||||
an enum.
|
||||
*/
|
||||
typedef enum {
|
||||
UDF_BLOCKSIZE = 2048
|
||||
} udf_enum1_t;
|
||||
|
||||
/** This variable is trickery to force the above enum symbol value to
|
||||
be recorded in debug symbol tables. It is used to allow one refer
|
||||
to above enumeration values in a debugger and debugger
|
||||
expressions */
|
||||
extern udf_enum1_t debug_udf_enum1;
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif /* __cplusplus */
|
||||
|
||||
/*!
|
||||
Close UDF and free resources associated with p_udf.
|
||||
*/
|
||||
bool udf_close (udf_t *p_udf);
|
||||
|
||||
/*!
|
||||
Seek to a position i_start and then read i_blocks. Number of
|
||||
blocks read is returned. One normally expects the return to be
|
||||
equal to i_blocks.
|
||||
*/
|
||||
|
||||
driver_return_code_t udf_read_sectors (const udf_t *p_udf, void *ptr,
|
||||
lsn_t i_start, long int i_blocks);
|
||||
|
||||
/*!
|
||||
Open an UDF for reading. Maybe in the future we will have
|
||||
a mode. NULL is returned on error.
|
||||
|
||||
Caller must free result - use udf_close for that.
|
||||
*/
|
||||
udf_t *udf_open (const char *psz_path);
|
||||
|
||||
/*!
|
||||
Return the partition number of the the opened udf handle. -1
|
||||
Is returned if we have an error.
|
||||
*/
|
||||
int16_t udf_get_part_number(const udf_t *p_udf);
|
||||
|
||||
/*!
|
||||
Get the root in p_udf. If b_any_partition is false then
|
||||
the root must be in the given partition.
|
||||
NULL is returned if the partition is not found or a root is not found or
|
||||
there is on error.
|
||||
|
||||
Caller must free result - use udf_file_free for that.
|
||||
*/
|
||||
udf_dirent_t *udf_get_root (udf_t *p_udf, bool b_any_partition,
|
||||
partition_num_t i_partition);
|
||||
|
||||
/**
|
||||
* Gets the Volume Identifier string, in 8bit unicode (latin-1)
|
||||
* psz_volid, place to put the string
|
||||
* i_volid_size, size of the buffer volid points to
|
||||
* returns the size of buffer needed for all data
|
||||
*/
|
||||
int udf_get_volume_id(udf_t *p_udf, /*out*/ char *psz_volid,
|
||||
unsigned int i_volid);
|
||||
|
||||
/**
|
||||
* Gets the Volume Set Identifier, as a 128-byte dstring (not decoded)
|
||||
* WARNING This is not a null terminated string
|
||||
* volsetid, place to put the data
|
||||
* volsetid_size, size of the buffer volsetid points to
|
||||
* the buffer should be >=128 bytes to store the whole volumesetidentifier
|
||||
* returns the size of the available volsetid information (128)
|
||||
* or 0 on error
|
||||
*/
|
||||
int udf_get_volumeset_id(udf_t *p_udf, /*out*/ uint8_t *volsetid,
|
||||
unsigned int i_volsetid);
|
||||
|
||||
/*!
|
||||
Return a file pointer matching psz_name.
|
||||
*/
|
||||
udf_dirent_t *udf_fopen(udf_dirent_t *p_udf_root, const char *psz_name);
|
||||
|
||||
/*! udf_mode_string - fill in string PSZ_STR with an ls-style ASCII
|
||||
representation of the i_mode. PSZ_STR is returned.
|
||||
|
||||
10 characters are stored in PSZ_STR; a terminating null byte is added.
|
||||
The characters stored in PSZ_STR are:
|
||||
|
||||
0 File type. 'd' for directory, 'c' for character
|
||||
special, 'b' for block special, 'm' for multiplex,
|
||||
'l' for symbolic link, 's' for socket, 'p' for fifo,
|
||||
'-' for regular, '?' for any other file type
|
||||
|
||||
1 'r' if the owner may read, '-' otherwise.
|
||||
|
||||
2 'w' if the owner may write, '-' otherwise.
|
||||
|
||||
3 'x' if the owner may execute, 's' if the file is
|
||||
set-user-id, '-' otherwise.
|
||||
'S' if the file is set-user-id, but the execute
|
||||
bit isn't set.
|
||||
|
||||
4 'r' if group members may read, '-' otherwise.
|
||||
|
||||
5 'w' if group members may write, '-' otherwise.
|
||||
|
||||
6 'x' if group members may execute, 's' if the file is
|
||||
set-group-id, '-' otherwise.
|
||||
'S' if it is set-group-id but not executable.
|
||||
|
||||
7 'r' if any user may read, '-' otherwise.
|
||||
|
||||
8 'w' if any user may write, '-' otherwise.
|
||||
|
||||
9 'x' if any user may execute, 't' if the file is "sticky"
|
||||
(will be retained in swap space after execution), '-'
|
||||
otherwise.
|
||||
'T' if the file is sticky but not executable. */
|
||||
|
||||
char *udf_mode_string (mode_t i_mode, char *psz_str);
|
||||
|
||||
bool udf_get_lba(const udf_file_entry_t *p_udf_fe,
|
||||
/*out*/ uint32_t *start, /*out*/ uint32_t *end);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif /* __cplusplus */
|
||||
|
||||
#include <cdio/udf_time.h>
|
||||
#include <cdio/udf_file.h>
|
||||
|
||||
#endif /*UDF_H*/
|
115
src/libcdio/cdio/udf_file.h
Normal file
115
src/libcdio/cdio/udf_file.h
Normal file
|
@ -0,0 +1,115 @@
|
|||
/*
|
||||
Copyright (C) 2005, 2006, 2008 Rocky Bernstein <rocky@gnu.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 udf_file.h
|
||||
*
|
||||
* \brief Routines involving UDF file operations
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef UDF_FILE_H
|
||||
#define UDF_FILE_H
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif /* __cplusplus */
|
||||
|
||||
/**
|
||||
Return the file id descriptor of the given file.
|
||||
*/
|
||||
bool udf_get_fileid_descriptor(const udf_dirent_t *p_udf_dirent,
|
||||
/*out*/ udf_fileid_desc_t *p_udf_fid);
|
||||
|
||||
/**
|
||||
Return the name of the file
|
||||
*/
|
||||
const char *udf_get_filename(const udf_dirent_t *p_udf_dirent);
|
||||
|
||||
/**
|
||||
Return the name of the file
|
||||
*/
|
||||
bool udf_get_file_entry(const udf_dirent_t *p_udf_dirent,
|
||||
/*out*/ udf_file_entry_t *p_udf_fe);
|
||||
|
||||
/**
|
||||
Return the number of hard links of the file. Return 0 if error.
|
||||
*/
|
||||
uint16_t udf_get_link_count(const udf_dirent_t *p_udf_dirent);
|
||||
|
||||
/**
|
||||
Return the file length the file. Return 2147483647L if error.
|
||||
*/
|
||||
uint64_t udf_get_file_length(const udf_dirent_t *p_udf_dirent);
|
||||
|
||||
/**
|
||||
Returns a POSIX mode for a given p_udf_dirent.
|
||||
*/
|
||||
mode_t udf_get_posix_filemode(const udf_dirent_t *p_udf_dirent);
|
||||
|
||||
/**
|
||||
Return the next subdirectory.
|
||||
*/
|
||||
udf_dirent_t *udf_opendir(const udf_dirent_t *p_udf_dirent);
|
||||
|
||||
/**
|
||||
Attempts to read up to count bytes from UDF directory entry
|
||||
p_udf_dirent into the buffer starting at buf. buf should be a
|
||||
multiple of UDF_BLOCKSIZE bytes. Reading continues after the
|
||||
point at which we last read or from the beginning the first time.
|
||||
|
||||
If count is zero, read() returns zero and has no other results. If
|
||||
count is greater than SSIZE_MAX, the result is unspecified.
|
||||
|
||||
If there is an error, cast the result to driver_return_code_t for
|
||||
the specific error code.
|
||||
*/
|
||||
/**
|
||||
Attempts to read up to count bytes from file descriptor fd into
|
||||
the buffer starting at buf.
|
||||
|
||||
If count is zero, read() returns zero and has no other results. If
|
||||
count is greater than SSIZE_MAX, the result is unspecified.
|
||||
*/
|
||||
ssize_t udf_read_block(const udf_dirent_t *p_udf_dirent,
|
||||
void * buf, size_t count);
|
||||
|
||||
/**
|
||||
Advances p_udf_direct to the the next directory entry in the
|
||||
pointed to by p_udf_dir. It also returns this as the value. NULL
|
||||
is returned on reaching the end-of-file or if an error. Also
|
||||
p_udf_dirent is free'd. If the end of is not reached the caller
|
||||
must call udf_dirent_free() with p_udf_dirent when done with it to
|
||||
release resources.
|
||||
*/
|
||||
udf_dirent_t *udf_readdir(udf_dirent_t *p_udf_dirent);
|
||||
|
||||
/**
|
||||
free free resources associated with p_udf_dirent.
|
||||
*/
|
||||
bool udf_dirent_free(udf_dirent_t *p_udf_dirent);
|
||||
|
||||
/**
|
||||
Return true if the file is a directory.
|
||||
*/
|
||||
bool udf_is_dir(const udf_dirent_t *p_udf_dirent);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif /* __cplusplus */
|
||||
|
||||
#endif /*UDF_FILE_H*/
|
80
src/libcdio/cdio/udf_time.h
Normal file
80
src/libcdio/cdio/udf_time.h
Normal file
|
@ -0,0 +1,80 @@
|
|||
/*
|
||||
$Id: udf_time.h,v 1.5 2008/03/25 15:59:09 karl Exp $
|
||||
|
||||
Copyright (C) 2005, 2008 Rocky Bernstein <rocky@gnu.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 udf_time.h
|
||||
*
|
||||
* \brief UDF time conversion and access files.
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef UDF_TIME_H
|
||||
#define UDF_TIME_H
|
||||
|
||||
#include <time.h>
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif /* __cplusplus */
|
||||
|
||||
/*!
|
||||
Return the access time of the file.
|
||||
*/
|
||||
time_t udf_get_access_time(const udf_dirent_t *p_udf_dirent);
|
||||
|
||||
/*!
|
||||
Return the attribute (most recent create or access) time of the file
|
||||
*/
|
||||
time_t udf_get_attribute_time(const udf_dirent_t *p_udf_dirent);
|
||||
|
||||
/*!
|
||||
Return the modification time of the file.
|
||||
*/
|
||||
time_t udf_get_modification_time(const udf_dirent_t *p_udf_dirent);
|
||||
|
||||
/*!
|
||||
Return the access timestamp of the file
|
||||
*/
|
||||
udf_timestamp_t *udf_get_access_timestamp(const udf_dirent_t *p_udf_dirent);
|
||||
|
||||
/*!
|
||||
Return the modification timestamp of the file
|
||||
*/
|
||||
udf_timestamp_t *udf_get_modification_timestamp(const udf_dirent_t
|
||||
*p_udf_dirent);
|
||||
|
||||
/*!
|
||||
Return the attr timestamp of the file
|
||||
*/
|
||||
udf_timestamp_t *udf_get_attr_timestamp(const udf_dirent_t *p_udf_dirent);
|
||||
|
||||
/*!
|
||||
Convert a UDF timestamp to a time_t. If microseconds are desired,
|
||||
use dest_usec. The return value is the same as dest. */
|
||||
time_t *udf_stamp_to_time(time_t *dest, long int *dest_usec,
|
||||
const udf_timestamp_t src);
|
||||
|
||||
udf_timestamp_t *udf_timespec_to_stamp(const struct timespec ts,
|
||||
udf_timestamp_t *dest);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif /* __cplusplus */
|
||||
|
||||
#endif /*UDF_TIME_H*/
|
|
@ -19,6 +19,7 @@
|
|||
</ProjectConfiguration>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClInclude Include="..\..\cdio\cdio_config.h" />
|
||||
<ClInclude Include="..\iso9660_private.h" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
|
|
|
@ -17,6 +17,9 @@
|
|||
<ClInclude Include="..\iso9660.c">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\cdio\cdio_config.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="..\iso9660_fs.c">
|
||||
|
|
|
@ -21,6 +21,11 @@
|
|||
#if defined(HAVE_CONFIG_H) && !defined(__CDIO_CONFIG_H__)
|
||||
# include "config.h"
|
||||
# define __CDIO_CONFIG_H__ 1
|
||||
#else
|
||||
#ifndef EXTERNAL_LIBCDIO_CONFIG_H
|
||||
#define EXTERNAL_LIBCDIO_CONFIG_H
|
||||
#include <cdio/cdio_config.h>
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_STRING_H
|
||||
|
@ -585,8 +590,8 @@ iso9660_ifs_fuzzy_read_superblock (iso9660_t *p_iso,
|
|||
|
||||
if (pvd) {
|
||||
/* Yay! Found something */
|
||||
p_iso->i_fuzzy_offset = (pvd - frame - 1) -
|
||||
((ISO_PVD_SECTOR-lsn)*p_iso->i_framesize) ;
|
||||
p_iso->i_fuzzy_offset = (int) ((pvd - frame - 1) -
|
||||
((ISO_PVD_SECTOR-lsn)*p_iso->i_framesize)) ;
|
||||
/* But is it *really* a PVD? */
|
||||
if ( iso9660_ifs_read_pvd_loglevel(p_iso, &(p_iso->pvd),
|
||||
CDIO_LOG_DEBUG) ) {
|
||||
|
@ -711,9 +716,9 @@ iso9660_seek_read_framesize (const iso9660_t *p_iso, void *ptr,
|
|||
i_byte_offset = (start * p_iso->i_framesize) + p_iso->i_fuzzy_offset
|
||||
+ p_iso->i_datastart;
|
||||
|
||||
ret = cdio_stream_seek (p_iso->stream, i_byte_offset, SEEK_SET);
|
||||
ret = (long)cdio_stream_seek (p_iso->stream, i_byte_offset, SEEK_SET);
|
||||
if (ret!=0) return 0;
|
||||
return cdio_stream_read (p_iso->stream, ptr, i_framesize, size);
|
||||
return (long)cdio_stream_read (p_iso->stream, ptr, i_framesize, size);
|
||||
}
|
||||
|
||||
/*!
|
||||
|
@ -879,11 +884,11 @@ iso9660_dir_to_name (const iso9660_dir_t *iso9660_dir)
|
|||
/* (iso9660_dir->file_flags & ISO_DIRECTORY) */
|
||||
|
||||
if (iso9660_dir->filename[0] == '\0')
|
||||
return strdup(".");
|
||||
return _strdup(".");
|
||||
else if (iso9660_dir->filename[0] == '\1')
|
||||
return strdup("..");
|
||||
return _strdup("..");
|
||||
else {
|
||||
return strdup(iso9660_dir->filename);
|
||||
return _strdup(iso9660_dir->filename);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -968,7 +973,7 @@ _fs_stat_traverse (const CdIo_t *p_cdio, const iso9660_stat_t *_root,
|
|||
|
||||
if (!splitpath[0])
|
||||
{
|
||||
unsigned int len=sizeof(iso9660_stat_t) + strlen(_root->filename)+1;
|
||||
size_t len=sizeof(iso9660_stat_t) + strlen(_root->filename)+1;
|
||||
p_stat = calloc(1, len);
|
||||
memcpy(p_stat, _root, len);
|
||||
p_stat->rr.psz_symlink = calloc(1, p_stat->rr.i_symlink_max);
|
||||
|
@ -1020,7 +1025,7 @@ _fs_stat_traverse (const CdIo_t *p_cdio, const iso9660_stat_t *_root,
|
|||
if ( 0 != cmp && 0 == p_env->i_joliet_level
|
||||
&& yep != p_stat->rr.b3_rock ) {
|
||||
char *trans_fname = NULL;
|
||||
unsigned int i_trans_fname=strlen(p_stat->filename);
|
||||
size_t i_trans_fname=strlen(p_stat->filename);
|
||||
int trans_len;
|
||||
|
||||
if (i_trans_fname) {
|
||||
|
@ -1071,7 +1076,7 @@ _fs_iso_stat_traverse (iso9660_t *p_iso, const iso9660_stat_t *_root,
|
|||
if (!splitpath[0])
|
||||
{
|
||||
iso9660_stat_t *p_stat;
|
||||
unsigned int len=sizeof(iso9660_stat_t) + strlen(_root->filename)+1;
|
||||
size_t len=sizeof(iso9660_stat_t) + strlen(_root->filename)+1;
|
||||
p_stat = calloc(1, len);
|
||||
if (!p_stat)
|
||||
{
|
||||
|
@ -1127,7 +1132,7 @@ _fs_iso_stat_traverse (iso9660_t *p_iso, const iso9660_stat_t *_root,
|
|||
if ( 0 != cmp && 0 == p_iso->i_joliet_level
|
||||
&& yep != p_stat->rr.b3_rock ) {
|
||||
char *trans_fname = NULL;
|
||||
unsigned int i_trans_fname=strlen(p_stat->filename);
|
||||
size_t i_trans_fname=strlen(p_stat->filename);
|
||||
int trans_len;
|
||||
|
||||
if (i_trans_fname) {
|
||||
|
@ -1445,20 +1450,20 @@ find_lsn_recurse (void *p_image, iso9660_readdir_t iso9660_readdir,
|
|||
{
|
||||
iso9660_stat_t *statbuf = _cdio_list_node_data (entnode);
|
||||
const char *psz_filename = (char *) statbuf->filename;
|
||||
const unsigned int len = strlen(psz_path) + strlen(psz_filename)+2;
|
||||
const size_t len = strlen(psz_path) + strlen(psz_filename)+2;
|
||||
|
||||
if (*ppsz_full_filename != NULL) free(*ppsz_full_filename);
|
||||
*ppsz_full_filename = calloc(1, len);
|
||||
snprintf (*ppsz_full_filename, len, "%s%s/", psz_path, psz_filename);
|
||||
_snprintf (*ppsz_full_filename, len, "%s%s/", psz_path, psz_filename);
|
||||
|
||||
if (statbuf->type == _STAT_DIR
|
||||
&& strcmp ((char *) statbuf->filename, ".")
|
||||
&& strcmp ((char *) statbuf->filename, "..")) {
|
||||
_cdio_list_append (dirlist, strdup(*ppsz_full_filename));
|
||||
_cdio_list_append (dirlist, _strdup(*ppsz_full_filename));
|
||||
}
|
||||
|
||||
if (statbuf->lsn == lsn) {
|
||||
unsigned int len=sizeof(iso9660_stat_t)+strlen(statbuf->filename)+1;
|
||||
size_t len=sizeof(iso9660_stat_t)+strlen(statbuf->filename)+1;
|
||||
iso9660_stat_t *ret_stat = calloc(1, len);
|
||||
if (!ret_stat)
|
||||
{
|
||||
|
|
|
@ -18,8 +18,14 @@
|
|||
/* Rock Ridge Extensions to iso9660 */
|
||||
|
||||
|
||||
#ifdef HAVE_CONFIG_H
|
||||
# include "config.h"
|
||||
#if HAVE_CONFIG_H
|
||||
# include <config.h>
|
||||
# define __CDIO_CONFIG_H__ 1
|
||||
#else
|
||||
#ifndef EXTERNAL_LIBCDIO_CONFIG_H
|
||||
#define EXTERNAL_LIBCDIO_CONFIG_H
|
||||
#include <cdio/cdio_config.h>
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_STRING_H
|
||||
|
@ -34,6 +40,12 @@
|
|||
# include <sys/stat.h>
|
||||
#endif
|
||||
|
||||
#include <cdio/iso9660.h>
|
||||
#include <cdio/logging.h>
|
||||
#include <cdio/bytesex.h>
|
||||
#include <cdio/filemode.h>
|
||||
#include <malloc.h>
|
||||
|
||||
#ifndef HAVE_S_ISLNK
|
||||
# define S_ISLNK(s) ((void)s,0)
|
||||
#endif
|
||||
|
@ -41,10 +53,6 @@
|
|||
# define S_ISSOCK(s) ((void)s,0)
|
||||
#endif
|
||||
|
||||
#include <cdio/iso9660.h>
|
||||
#include <cdio/logging.h>
|
||||
#include <cdio/bytesex.h>
|
||||
#include <malloc.h>
|
||||
|
||||
#define CDIO_MKDEV(ma,mi) ((ma)<<16 | (mi))
|
||||
|
||||
|
@ -572,16 +580,16 @@ iso9660_get_rock_attr_str(posix_mode_t st_mode)
|
|||
{
|
||||
char *result = _getbuf();
|
||||
|
||||
if (S_ISBLK(st_mode))
|
||||
result[ 0] = 'b';
|
||||
else if (S_ISDIR(st_mode))
|
||||
if (S_ISDIR(st_mode))
|
||||
result[ 0] = 'd';
|
||||
// else if (S_ISBLK(st_mode))
|
||||
// result[ 0] = 'b';
|
||||
else if (S_ISCHR(st_mode))
|
||||
result[ 0] = 'c';
|
||||
else if (S_ISLNK(st_mode))
|
||||
result[ 0] = 'l';
|
||||
else if (S_ISFIFO(st_mode))
|
||||
result[ 0] = 'p';
|
||||
// else if (S_ISFIFO(st_mode))
|
||||
// result[ 0] = 'p';
|
||||
else if (S_ISSOCK(st_mode))
|
||||
result[ 0] = 's';
|
||||
/* May eventually fill in others.. */
|
||||
|
|
|
@ -17,9 +17,14 @@
|
|||
*/
|
||||
|
||||
|
||||
#ifdef HAVE_CONFIG_H
|
||||
# include "config.h"
|
||||
#if HAVE_CONFIG_H
|
||||
# include <config.h>
|
||||
# define __CDIO_CONFIG_H__ 1
|
||||
#else
|
||||
#ifndef EXTERNAL_LIBCDIO_CONFIG_H
|
||||
#define EXTERNAL_LIBCDIO_CONFIG_H
|
||||
#include <cdio/cdio_config.h>
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_STRING_H
|
||||
|
@ -30,14 +35,6 @@
|
|||
#include <sys/stat.h>
|
||||
#endif
|
||||
|
||||
// TODO: Why the frack can't we redef using sys/stat.h?!?
|
||||
#ifdef _MSC_VER
|
||||
#define S_IRUSR 0x0100
|
||||
#define S_IWUSR 0x0080
|
||||
#define S_IXUSR 0x0040
|
||||
#define S_IFDIR 0x4000
|
||||
#endif
|
||||
|
||||
/*! String inside frame which identifies XA attributes. Note should
|
||||
come *before* public headers which does a #define of
|
||||
this name.
|
||||
|
@ -48,6 +45,7 @@ const char ISO_XA_MARKER_STRING[] = {'C', 'D', '-', 'X', 'A', '0', '0', '1'};
|
|||
#include <cdio/iso9660.h>
|
||||
#include <cdio/util.h>
|
||||
#include <cdio/bytesex.h>
|
||||
#include <cdio/filemode.h>
|
||||
|
||||
/* Private headers */
|
||||
#include "cdio_assert.h"
|
||||
|
|
172
src/libcdio/udf/.msvc/udf.vcxproj
Normal file
172
src/libcdio/udf/.msvc/udf.vcxproj
Normal file
|
@ -0,0 +1,172 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<ItemGroup Label="ProjectConfigurations">
|
||||
<ProjectConfiguration Include="Debug|Win32">
|
||||
<Configuration>Debug</Configuration>
|
||||
<Platform>Win32</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Release|Win32">
|
||||
<Configuration>Release</Configuration>
|
||||
<Platform>Win32</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Debug|x64">
|
||||
<Configuration>Debug</Configuration>
|
||||
<Platform>x64</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Release|x64">
|
||||
<Configuration>Release</Configuration>
|
||||
<Platform>x64</Platform>
|
||||
</ProjectConfiguration>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="..\filemode.c" />
|
||||
<ClCompile Include="..\udf.c" />
|
||||
<ClCompile Include="..\udf_file.c" />
|
||||
<ClCompile Include="..\udf_fs.c" />
|
||||
<ClCompile Include="..\udf_time.c" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClInclude Include="..\..\cdio\cdio_config.h" />
|
||||
<ClInclude Include="..\udf_fs.h" />
|
||||
<ClInclude Include="..\udf_private.h" />
|
||||
</ItemGroup>
|
||||
<PropertyGroup Label="Globals">
|
||||
<ProjectGuid>{0CEC40A6-A195-4BE5-A88B-0AB00EB142EC}</ProjectGuid>
|
||||
<Keyword>Win32Proj</Keyword>
|
||||
<RootNamespace>udf</RootNamespace>
|
||||
<ProjectName>libcdio-udf</ProjectName>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
|
||||
<ConfigurationType>StaticLibrary</ConfigurationType>
|
||||
<UseDebugLibraries>true</UseDebugLibraries>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
|
||||
<ConfigurationType>StaticLibrary</ConfigurationType>
|
||||
<UseDebugLibraries>false</UseDebugLibraries>
|
||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
|
||||
<ConfigurationType>StaticLibrary</ConfigurationType>
|
||||
<UseDebugLibraries>true</UseDebugLibraries>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
|
||||
<ConfigurationType>StaticLibrary</ConfigurationType>
|
||||
<UseDebugLibraries>false</UseDebugLibraries>
|
||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
||||
<ImportGroup Label="ExtensionSettings">
|
||||
</ImportGroup>
|
||||
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
</ImportGroup>
|
||||
<PropertyGroup Label="UserMacros" />
|
||||
<PropertyGroup>
|
||||
<_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
|
||||
<OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)x86_32\$(Configuration)\</OutDir>
|
||||
<IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)x86_32\$(Configuration)\$(ProjectName)\</IntDir>
|
||||
<OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)x86_32\$(Configuration)\</OutDir>
|
||||
<IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)x86_32\$(Configuration)\$(ProjectName)\</IntDir>
|
||||
<OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)x86_64\$(Configuration)\</OutDir>
|
||||
<IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)x86_64\$(Configuration)\$(ProjectName)\</IntDir>
|
||||
<OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)x86_64\$(Configuration)\</OutDir>
|
||||
<IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)x86_64\$(Configuration)\$(ProjectName)\</IntDir>
|
||||
<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">false</LinkIncremental>
|
||||
<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
|
||||
<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</LinkIncremental>
|
||||
<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
|
||||
</PropertyGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
<ClCompile>
|
||||
<PrecompiledHeader>
|
||||
</PrecompiledHeader>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<Optimization>Disabled</Optimization>
|
||||
<PreprocessorDefinitions>_CRTDBG_MAP_ALLOC;_CRT_SECURE_NO_WARNINGS;ISOLATION_AWARE_ENABLED;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<AdditionalIncludeDirectories>..;..\..;..\..\driver;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
|
||||
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<SubSystem>Windows</SubSystem>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
</Link>
|
||||
<Lib>
|
||||
<TargetMachine>MachineX86</TargetMachine>
|
||||
</Lib>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||
<ClCompile>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<PrecompiledHeader>
|
||||
</PrecompiledHeader>
|
||||
<Optimization>MaxSpeed</Optimization>
|
||||
<IntrinsicFunctions>true</IntrinsicFunctions>
|
||||
<PreprocessorDefinitions>_CRTDBG_MAP_ALLOC;_CRT_SECURE_NO_WARNINGS;ISOLATION_AWARE_ENABLED;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<AdditionalIncludeDirectories>..;..\..;..\..\driver;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
|
||||
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
|
||||
</ClCompile>
|
||||
<Lib>
|
||||
<TargetMachine>MachineX86</TargetMachine>
|
||||
</Lib>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
||||
<ClCompile>
|
||||
<PrecompiledHeader>
|
||||
</PrecompiledHeader>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<Optimization>Disabled</Optimization>
|
||||
<PreprocessorDefinitions>_CRTDBG_MAP_ALLOC;_CRT_SECURE_NO_WARNINGS;ISOLATION_AWARE_ENABLED;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<AdditionalIncludeDirectories>..;..\..;..\..\driver;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
|
||||
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<SubSystem>Windows</SubSystem>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
</Link>
|
||||
<Lib>
|
||||
<TargetMachine>MachineX64</TargetMachine>
|
||||
</Lib>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
||||
<ClCompile>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<PrecompiledHeader>
|
||||
</PrecompiledHeader>
|
||||
<Optimization>MaxSpeed</Optimization>
|
||||
<IntrinsicFunctions>true</IntrinsicFunctions>
|
||||
<PreprocessorDefinitions>_CRTDBG_MAP_ALLOC;_CRT_SECURE_NO_WARNINGS;ISOLATION_AWARE_ENABLED;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<AdditionalIncludeDirectories>..;..\..;..\..\driver;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
|
||||
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<SubSystem>Windows</SubSystem>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
||||
<OptimizeReferences>true</OptimizeReferences>
|
||||
</Link>
|
||||
<Lib>
|
||||
<TargetMachine>MachineX64</TargetMachine>
|
||||
</Lib>
|
||||
</ItemDefinitionGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
||||
<ImportGroup Label="ExtensionTargets">
|
||||
</ImportGroup>
|
||||
</Project>
|
41
src/libcdio/udf/.msvc/udf.vcxproj.filters
Normal file
41
src/libcdio/udf/.msvc/udf.vcxproj.filters
Normal file
|
@ -0,0 +1,41 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<ItemGroup>
|
||||
<Filter Include="Source Files">
|
||||
<UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
|
||||
<Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
|
||||
</Filter>
|
||||
<Filter Include="Header Files">
|
||||
<UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
|
||||
<Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
|
||||
</Filter>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="..\filemode.c">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\udf.c">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\udf_file.c">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\udf_fs.c">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\udf_time.c">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClInclude Include="..\udf_fs.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\udf_private.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\cdio\cdio_config.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
</ItemGroup>
|
||||
</Project>
|
|
@ -21,105 +21,15 @@
|
|||
#if HAVE_CONFIG_H
|
||||
# include <config.h>
|
||||
# define __CDIO_CONFIG_H__ 1
|
||||
#else
|
||||
#ifndef EXTERNAL_LIBCDIO_CONFIG_H
|
||||
#define EXTERNAL_LIBCDIO_CONFIG_H
|
||||
#include <cdio/cdio_config.h>
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_SYS_STAT_H
|
||||
#include <sys/stat.h>
|
||||
#endif
|
||||
|
||||
#include <cdio/udf.h>
|
||||
|
||||
#if !S_IRUSR
|
||||
# if S_IREAD
|
||||
# define S_IRUSR S_IREAD
|
||||
# else
|
||||
# define S_IRUSR 00400
|
||||
# endif
|
||||
#endif
|
||||
|
||||
#if !S_IWUSR
|
||||
# if S_IWRITE
|
||||
# define S_IWUSR S_IWRITE
|
||||
# else
|
||||
# define S_IWUSR 00200
|
||||
# endif
|
||||
#endif
|
||||
|
||||
#if !S_IXUSR
|
||||
# if S_IEXEC
|
||||
# define S_IXUSR S_IEXEC
|
||||
# else
|
||||
# define S_IXUSR 00100
|
||||
# endif
|
||||
#endif
|
||||
|
||||
#if !S_IRGRP
|
||||
# define S_IRGRP (S_IRUSR >> 3)
|
||||
#endif
|
||||
#if !S_IWGRP
|
||||
# define S_IWGRP (S_IWUSR >> 3)
|
||||
#endif
|
||||
#if !S_IXGRP
|
||||
# define S_IXGRP (S_IXUSR >> 3)
|
||||
#endif
|
||||
#if !S_IROTH
|
||||
# define S_IROTH (S_IRUSR >> 6)
|
||||
#endif
|
||||
#if !S_IWOTH
|
||||
# define S_IWOTH (S_IWUSR >> 6)
|
||||
#endif
|
||||
#if !S_IXOTH
|
||||
# define S_IXOTH (S_IXUSR >> 6)
|
||||
#endif
|
||||
|
||||
#ifdef STAT_MACROS_BROKEN
|
||||
# undef S_ISBLK
|
||||
# undef S_ISCHR
|
||||
# undef S_ISDIR
|
||||
# undef S_ISFIFO
|
||||
# undef S_ISLNK
|
||||
# undef S_ISMPB
|
||||
# undef S_ISMPC
|
||||
# undef S_ISNWK
|
||||
# undef S_ISREG
|
||||
# undef S_ISSOCK
|
||||
#endif /* STAT_MACROS_BROKEN. */
|
||||
|
||||
#if !defined S_ISBLK && defined S_IFBLK
|
||||
# define S_ISBLK(m) (((m) & S_IFMT) == S_IFBLK)
|
||||
#endif
|
||||
#if !defined S_ISCHR && defined S_IFCHR
|
||||
# define S_ISCHR(m) (((m) & S_IFMT) == S_IFCHR)
|
||||
#endif
|
||||
#if !defined S_ISDIR && defined S_IFDIR
|
||||
# define S_ISDIR(m) (((m) & S_IFMT) == S_IFDIR)
|
||||
#endif
|
||||
#if !defined S_ISREG && defined S_IFREG
|
||||
# define S_ISREG(m) (((m) & S_IFMT) == S_IFREG)
|
||||
#endif
|
||||
#if !defined S_ISFIFO && defined S_IFIFO
|
||||
# define S_ISFIFO(m) (((m) & S_IFMT) == S_IFIFO)
|
||||
#endif
|
||||
#if !defined S_ISLNK && defined S_IFLNK
|
||||
# define S_ISLNK(m) (((m) & S_IFMT) == S_IFLNK)
|
||||
#endif
|
||||
#if !defined S_ISSOCK && defined S_IFSOCK
|
||||
# define S_ISSOCK(m) (((m) & S_IFMT) == S_IFSOCK)
|
||||
#endif
|
||||
#if !defined S_ISMPB && defined S_IFMPB /* V7 */
|
||||
# define S_ISMPB(m) (((m) & S_IFMT) == S_IFMPB)
|
||||
# define S_ISMPC(m) (((m) & S_IFMT) == S_IFMPC)
|
||||
#endif
|
||||
#if !defined S_ISNWK && defined S_IFNWK /* HP/UX */
|
||||
# define S_ISNWK(m) (((m) & S_IFMT) == S_IFNWK)
|
||||
#endif
|
||||
#if !defined S_ISDOOR && defined S_IFDOOR /* Solaris 2.5 and up */
|
||||
# define S_ISDOOR(m) (((m) & S_IFMT) == S_IFDOOR)
|
||||
#endif
|
||||
#if !defined S_ISCTG && defined S_IFCTG /* MassComp */
|
||||
# define S_ISCTG(m) (((m) & S_IFMT) == S_IFCTG)
|
||||
#endif
|
||||
|
||||
#include <cdio/filemode.h>
|
||||
|
||||
|
||||
/* Set the 's' and 't' flags in file attributes string CHARS,
|
||||
|
|
|
@ -20,15 +20,12 @@
|
|||
say opensolaris. */
|
||||
#include "udf_private.h"
|
||||
#include <cdio/bytesex.h>
|
||||
#include <cdio/filemode.h>
|
||||
|
||||
#ifdef HAVE_STRING_H
|
||||
# include <string.h>
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_SYS_STAT_H
|
||||
# include <sys/stat.h>
|
||||
#endif
|
||||
|
||||
/** The below variables are trickery to force enum symbol values to be
|
||||
recorded in debug symbol tables. They are used to allow one to refer
|
||||
to the enumeration value names in the typedefs above in a debugger
|
||||
|
@ -62,7 +59,7 @@ udf_get_posix_filemode(const udf_dirent_t *p_udf_dirent)
|
|||
if (i_perms & FE_PERM_U_READ) mode |= S_IRUSR;
|
||||
if (i_perms & FE_PERM_U_WRITE) mode |= S_IWUSR;
|
||||
if (i_perms & FE_PERM_U_EXEC) mode |= S_IXUSR;
|
||||
|
||||
|
||||
#ifdef S_IRGRP
|
||||
if (i_perms & FE_PERM_G_READ) mode |= S_IRGRP;
|
||||
if (i_perms & FE_PERM_G_WRITE) mode |= S_IWGRP;
|
||||
|
@ -95,9 +92,11 @@ udf_get_posix_filemode(const udf_dirent_t *p_udf_dirent)
|
|||
mode |= S_IFSOCK;
|
||||
break;
|
||||
#endif
|
||||
#ifdef S_IFBLK
|
||||
case ICBTAG_FILE_TYPE_BLOCK:
|
||||
mode |= S_IFBLK;
|
||||
break;
|
||||
#endif
|
||||
default: ;
|
||||
};
|
||||
|
||||
|
|
|
@ -126,7 +126,8 @@ offset_to_lba(const udf_dirent_t *p_udf_dirent, off_t i_offset,
|
|||
{
|
||||
uint32_t icblen = 0;
|
||||
lba_t lsector;
|
||||
int ad_offset, ad_num = 0;
|
||||
uint32_t ad_offset;
|
||||
int ad_num = 0;
|
||||
uint16_t addr_ilk = uint16_from_le(p_icb_tag->flags&ICBTAG_FLAG_AD_MASK);
|
||||
|
||||
switch (addr_ilk) {
|
||||
|
@ -150,7 +151,7 @@ offset_to_lba(const udf_dirent_t *p_udf_dirent, off_t i_offset,
|
|||
+ ad_offset );
|
||||
icblen = p_icb->len;
|
||||
ad_num++;
|
||||
} while(i_offset >= icblen);
|
||||
} while(i_offset >= (off_t)icblen);
|
||||
|
||||
lsector = (i_offset / UDF_BLOCKSIZE) + p_icb->pos;
|
||||
|
||||
|
@ -177,7 +178,7 @@ offset_to_lba(const udf_dirent_t *p_udf_dirent, off_t i_offset,
|
|||
+ ad_offset );
|
||||
icblen = p_icb->len;
|
||||
ad_num++;
|
||||
} while(i_offset >= icblen);
|
||||
} while(i_offset >= (off_t)icblen);
|
||||
|
||||
lsector = (i_offset / UDF_BLOCKSIZE) +
|
||||
uint32_from_le(((udf_long_ad_t *)(p_icb))->loc.lba);
|
||||
|
@ -233,7 +234,7 @@ udf_read_block(const udf_dirent_t *p_udf_dirent, void * buf, size_t count)
|
|||
driver_return_code_t ret;
|
||||
uint32_t i_max_size=0;
|
||||
udf_t *p_udf = p_udf_dirent->p_udf;
|
||||
lba_t i_lba = offset_to_lba(p_udf_dirent, p_udf->i_position, &i_lba,
|
||||
lba_t i_lba = offset_to_lba(p_udf_dirent, (off_t)p_udf->i_position, &i_lba,
|
||||
&i_max_size);
|
||||
if (i_lba != CDIO_INVALID_LBA) {
|
||||
uint32_t i_max_blocks = CEILING(i_max_size, UDF_BLOCKSIZE);
|
||||
|
@ -243,7 +244,7 @@ udf_read_block(const udf_dirent_t *p_udf_dirent, void * buf, size_t count)
|
|||
fprintf(stderr, "Warning: read count truncated to %u\n", count);
|
||||
count = i_max_blocks;
|
||||
}
|
||||
ret = udf_read_sectors(p_udf, buf, i_lba, count);
|
||||
ret = udf_read_sectors(p_udf, buf, i_lba, (long)count);
|
||||
if (DRIVER_OP_SUCCESS == ret) {
|
||||
ssize_t i_read_len = MIN(i_max_size, count * UDF_BLOCKSIZE);
|
||||
p_udf->i_position += i_read_len;
|
||||
|
|
|
@ -44,6 +44,11 @@
|
|||
#ifdef HAVE_CONFIG_H
|
||||
# include "config.h"
|
||||
# define __CDIO_CONFIG_H__ 1
|
||||
#else
|
||||
#ifndef EXTERNAL_LIBCDIO_CONFIG_H
|
||||
#define EXTERNAL_LIBCDIO_CONFIG_H
|
||||
#include <cdio/cdio_config.h>
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_STRING_H
|
||||
|
@ -291,7 +296,7 @@ udf_new_dirent(udf_file_entry_t *p_udf_fe, udf_t *p_udf,
|
|||
calloc(1, sizeof(udf_dirent_t) + i_alloc_size);
|
||||
if (!p_udf_dirent) return NULL;
|
||||
|
||||
p_udf_dirent->psz_name = strdup(psz_name);
|
||||
p_udf_dirent->psz_name = _strdup(psz_name);
|
||||
p_udf_dirent->b_dir = b_dir;
|
||||
p_udf_dirent->b_parent = b_parent;
|
||||
p_udf_dirent->p_udf = p_udf;
|
||||
|
@ -314,7 +319,7 @@ udf_read_sectors (const udf_t *p_udf, void *ptr, lsn_t i_start,
|
|||
long int i_blocks)
|
||||
{
|
||||
driver_return_code_t ret;
|
||||
long int i_read;
|
||||
ssize_t i_read;
|
||||
long int i_byte_offset;
|
||||
|
||||
if (!p_udf) return 0;
|
||||
|
|
|
@ -41,6 +41,11 @@
|
|||
#ifdef HAVE_CONFIG_H
|
||||
#include "config.h"
|
||||
# define __CDIO_CONFIG_H__ 1
|
||||
#else
|
||||
#ifndef EXTERNAL_LIBCDIO_CONFIG_H
|
||||
#define EXTERNAL_LIBCDIO_CONFIG_H
|
||||
#include <cdio/cdio_config.h>
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#ifdef NEED_TIMEZONEVAR
|
||||
|
|
|
@ -2,6 +2,8 @@
|
|||
#error This header should only be used with Microsoft compilers
|
||||
#endif
|
||||
|
||||
#include <windows.h>
|
||||
|
||||
/* Workaround unisdt.h for MS compilers */
|
||||
|
||||
#ifndef _UNISTD_H_
|
||||
|
@ -12,6 +14,8 @@
|
|||
#define inline __inline
|
||||
#endif
|
||||
|
||||
typedef unsigned short mode_t;
|
||||
|
||||
/* ssize_t is also not available (copy/paste from MinGW) */
|
||||
#ifndef _SSIZE_T_DEFINED
|
||||
#define _SSIZE_T_DEFINED
|
||||
|
|
12
src/rufus.rc
12
src/rufus.rc
|
@ -33,7 +33,7 @@ LANGUAGE LANG_ENGLISH, SUBLANG_NEUTRAL
|
|||
IDD_DIALOG DIALOGEX 12, 12, 206, 278
|
||||
STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION | WS_SYSMENU
|
||||
EXSTYLE WS_EX_APPWINDOW
|
||||
CAPTION "Rufus v1.0.7.119"
|
||||
CAPTION "Rufus v1.0.7.120"
|
||||
FONT 8, "MS Shell Dlg", 400, 0, 0x1
|
||||
BEGIN
|
||||
DEFPUSHBUTTON "Start",IDC_START,94,236,50,14
|
||||
|
@ -69,7 +69,7 @@ BEGIN
|
|||
DEFPUSHBUTTON "OK",IDOK,231,175,50,14,WS_GROUP
|
||||
CONTROL "<a href=""http://rufus.akeo.ie"">http://rufus.akeo.ie</a>",IDC_ABOUT_RUFUS_URL,
|
||||
"SysLink",WS_TABSTOP,46,47,114,9
|
||||
LTEXT "Version 1.0.7 (Build 119)",IDC_STATIC,46,19,78,8
|
||||
LTEXT "Version 1.0.7 (Build 120)",IDC_STATIC,46,19,78,8
|
||||
PUSHBUTTON "License...",IDC_ABOUT_LICENSE,46,175,50,14,WS_GROUP
|
||||
EDITTEXT IDC_ABOUT_COPYRIGHTS,46,107,235,63,ES_MULTILINE | ES_READONLY | WS_VSCROLL
|
||||
LTEXT "Report bugs or request enhancements at:",IDC_STATIC,46,66,187,8
|
||||
|
@ -207,8 +207,8 @@ END
|
|||
//
|
||||
|
||||
VS_VERSION_INFO VERSIONINFO
|
||||
FILEVERSION 1,0,7,119
|
||||
PRODUCTVERSION 1,0,7,119
|
||||
FILEVERSION 1,0,7,120
|
||||
PRODUCTVERSION 1,0,7,120
|
||||
FILEFLAGSMASK 0x3fL
|
||||
#ifdef _DEBUG
|
||||
FILEFLAGS 0x1L
|
||||
|
@ -225,13 +225,13 @@ BEGIN
|
|||
BEGIN
|
||||
VALUE "CompanyName", "akeo.ie"
|
||||
VALUE "FileDescription", "Rufus"
|
||||
VALUE "FileVersion", "1.0.7.119"
|
||||
VALUE "FileVersion", "1.0.7.120"
|
||||
VALUE "InternalName", "Rufus"
|
||||
VALUE "LegalCopyright", "© 2011 Pete Batard (GPL v3)"
|
||||
VALUE "LegalTrademarks", "http://www.gnu.org/copyleft/gpl.html"
|
||||
VALUE "OriginalFilename", "rufus.exe"
|
||||
VALUE "ProductName", "Rufus"
|
||||
VALUE "ProductVersion", "1.0.7.119"
|
||||
VALUE "ProductVersion", "1.0.7.120"
|
||||
END
|
||||
END
|
||||
BLOCK "VarFileInfo"
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue