mirror of
				https://github.com/pbatard/rufus.git
				synced 2024-08-14 23:57:05 +00: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 | EndProject | ||||||
| Project("{11411DA5-63FE-49DC-8D5C-CA379B95FF3C}") = "syslinux-libinstaller", "src\syslinux\libinstaller\.msvc\libinstaller.vcxproj", "{266502AC-CD74-4581-B707-938A7D05AD7A}" | Project("{11411DA5-63FE-49DC-8D5C-CA379B95FF3C}") = "syslinux-libinstaller", "src\syslinux\libinstaller\.msvc\libinstaller.vcxproj", "{266502AC-CD74-4581-B707-938A7D05AD7A}" | ||||||
| EndProject | 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 | Global | ||||||
| 	GlobalSection(SolutionConfigurationPlatforms) = preSolution | 	GlobalSection(SolutionConfigurationPlatforms) = preSolution | ||||||
| 		Debug|Win32 = Debug|Win32 | 		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|Win32.Build.0 = Release|Win32 | ||||||
| 		{266502AC-CD74-4581-B707-938A7D05AD7A}.Release|x64.ActiveCfg = Release|x64 | 		{266502AC-CD74-4581-B707-938A7D05AD7A}.Release|x64.ActiveCfg = Release|x64 | ||||||
| 		{266502AC-CD74-4581-B707-938A7D05AD7A}.Release|x64.Build.0 = 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 | 	EndGlobalSection | ||||||
| 	GlobalSection(SolutionProperties) = preSolution | 	GlobalSection(SolutionProperties) = preSolution | ||||||
| 		HideSolutionNode = FALSE | 		HideSolutionNode = FALSE | ||||||
|  |  | ||||||
|  | @ -61,6 +61,7 @@ extern "C" { | ||||||
| /* Drive(r)/Device-related functions. Perhaps we should break out 
 | /* Drive(r)/Device-related functions. Perhaps we should break out 
 | ||||||
|    Driver from device? |    Driver from device? | ||||||
| */ | */ | ||||||
|  | // TODO: die die die
 | ||||||
| #include <cdio/device.h> | #include <cdio/device.h> | ||||||
| 
 | 
 | ||||||
| /* Disc-related functions. */ | /* Disc-related functions. */ | ||||||
|  | @ -72,9 +73,11 @@ extern "C" { | ||||||
| #include <cdio/read.h> | #include <cdio/read.h> | ||||||
| 
 | 
 | ||||||
| /* CD-Text-related functions. */ | /* CD-Text-related functions. */ | ||||||
|  | // TODO: die die die
 | ||||||
| #include <cdio/cdtext.h> | #include <cdio/cdtext.h> | ||||||
| 
 | 
 | ||||||
| /* Track-related functions. */ | /* Track-related functions. */ | ||||||
|  | // TODO: die die die
 | ||||||
| #include <cdio/track.h> | #include <cdio/track.h> | ||||||
| 
 | 
 | ||||||
| #endif /* __CDIO_H__ */ | #endif /* __CDIO_H__ */ | ||||||
|  |  | ||||||
|  | @ -7,7 +7,12 @@ | ||||||
| #undef CYGWIN | #undef CYGWIN | ||||||
| 
 | 
 | ||||||
| /* what to put between the brackets for empty arrays */ | /* 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 */ | /* Define 1 if you have BSDI-type CD-ROM support */ | ||||||
| #undef HAVE_BSDI_CDROM | #undef HAVE_BSDI_CDROM | ||||||
|  | @ -143,7 +148,7 @@ | ||||||
| #undef HAVE_VSNPRINTF | #undef HAVE_VSNPRINTF | ||||||
| 
 | 
 | ||||||
| /* Define 1 if you have MinGW CD-ROM support */ | /* 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. */ | /* Define as const if the declaration of iconv() needs const. */ | ||||||
| #undef ICONV_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. */ |    S_ISSOCK() or S_ISLNK() macros, so we'll roll our own. */ | ||||||
| #if !defined(HAVE_S_ISSOCK) && !defined(S_ISSOCK) | #if !defined(HAVE_S_ISSOCK) && !defined(S_ISSOCK) | ||||||
| #define S_ISSOCK(st_mode) ((((st_mode)) & 0170000) == (0140000)) | #define S_ISSOCK(st_mode) ((((st_mode)) & 0170000) == (0140000)) | ||||||
|  | #define HAVE_S_ISSOCK | ||||||
| #endif | #endif | ||||||
| 
 | 
 | ||||||
| #if !defined(HAVE_S_ISLNK) && !defined(S_ISLNK) | #if !defined(HAVE_S_ISLNK) && !defined(S_ISLNK) | ||||||
| #define S_ISLNK(st_mode) ((((st_mode)) & 0170000) == (0010000)) | #define S_ISLNK(st_mode) ((((st_mode)) & 0170000) == (0010000)) | ||||||
|  | #define HAVE_S_ISLNK | ||||||
| #endif | #endif | ||||||
| 
 | 
 | ||||||
| /*! An enumeration for some of the ISO_ROCK_* \#defines below. This isn't
 | /*! An enumeration for some of the ISO_ROCK_* \#defines below. This isn't
 | ||||||
|  |  | ||||||
|  | @ -44,11 +44,6 @@ extern "C" { | ||||||
| #include <sys/types.h> | #include <sys/types.h> | ||||||
| #endif  | #endif  | ||||||
| 
 | 
 | ||||||
| #ifdef _MSC_VER |  | ||||||
| #include <windows.h> |  | ||||||
| typedef unsigned short mode_t; |  | ||||||
| #endif |  | ||||||
| 
 |  | ||||||
| #if defined(HAVE_STDINT_H) | #if defined(HAVE_STDINT_H) | ||||||
| # include <stdint.h> | # include <stdint.h> | ||||||
| #elif defined(HAVE_INTTYPES_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> |     </ProjectConfiguration> | ||||||
|   </ItemGroup> |   </ItemGroup> | ||||||
|   <ItemGroup> |   <ItemGroup> | ||||||
|  |     <ClInclude Include="..\..\cdio\cdio_config.h" /> | ||||||
|     <ClInclude Include="..\iso9660_private.h" /> |     <ClInclude Include="..\iso9660_private.h" /> | ||||||
|   </ItemGroup> |   </ItemGroup> | ||||||
|   <ItemGroup> |   <ItemGroup> | ||||||
|  |  | ||||||
|  | @ -17,6 +17,9 @@ | ||||||
|     <ClInclude Include="..\iso9660.c"> |     <ClInclude Include="..\iso9660.c"> | ||||||
|       <Filter>Source Files</Filter> |       <Filter>Source Files</Filter> | ||||||
|     </ClInclude> |     </ClInclude> | ||||||
|  |     <ClInclude Include="..\..\cdio\cdio_config.h"> | ||||||
|  |       <Filter>Header Files</Filter> | ||||||
|  |     </ClInclude> | ||||||
|   </ItemGroup> |   </ItemGroup> | ||||||
|   <ItemGroup> |   <ItemGroup> | ||||||
|     <ClCompile Include="..\iso9660_fs.c"> |     <ClCompile Include="..\iso9660_fs.c"> | ||||||
|  |  | ||||||
|  | @ -21,6 +21,11 @@ | ||||||
| #if defined(HAVE_CONFIG_H) && !defined(__CDIO_CONFIG_H__) | #if defined(HAVE_CONFIG_H) && !defined(__CDIO_CONFIG_H__) | ||||||
| # include "config.h" | # include "config.h" | ||||||
| # define __CDIO_CONFIG_H__ 1 | # define __CDIO_CONFIG_H__ 1 | ||||||
|  | #else | ||||||
|  | #ifndef EXTERNAL_LIBCDIO_CONFIG_H | ||||||
|  | #define EXTERNAL_LIBCDIO_CONFIG_H | ||||||
|  | #include <cdio/cdio_config.h> | ||||||
|  | #endif | ||||||
| #endif | #endif | ||||||
| 
 | 
 | ||||||
| #ifdef HAVE_STRING_H | #ifdef HAVE_STRING_H | ||||||
|  | @ -585,8 +590,8 @@ iso9660_ifs_fuzzy_read_superblock (iso9660_t *p_iso, | ||||||
| 	 | 	 | ||||||
| 	if (pvd) { | 	if (pvd) { | ||||||
| 	  /* Yay! Found something */ | 	  /* Yay! Found something */ | ||||||
| 	  p_iso->i_fuzzy_offset = (pvd - frame - 1) -  | 	  p_iso->i_fuzzy_offset = (int) ((pvd - frame - 1) -  | ||||||
| 	    ((ISO_PVD_SECTOR-lsn)*p_iso->i_framesize) ; | 	    ((ISO_PVD_SECTOR-lsn)*p_iso->i_framesize)) ; | ||||||
| 	  /* But is it *really* a PVD? */ | 	  /* But is it *really* a PVD? */ | ||||||
| 	  if ( iso9660_ifs_read_pvd_loglevel(p_iso, &(p_iso->pvd),  | 	  if ( iso9660_ifs_read_pvd_loglevel(p_iso, &(p_iso->pvd),  | ||||||
| 					     CDIO_LOG_DEBUG) ) { | 					     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  |   i_byte_offset = (start * p_iso->i_framesize) + p_iso->i_fuzzy_offset  | ||||||
|     + p_iso->i_datastart; |     + 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; |   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) */ |   /* (iso9660_dir->file_flags & ISO_DIRECTORY) */ | ||||||
|    |    | ||||||
|   if (iso9660_dir->filename[0] == '\0') |   if (iso9660_dir->filename[0] == '\0') | ||||||
|     return strdup("."); |     return _strdup("."); | ||||||
|   else if (iso9660_dir->filename[0] == '\1') |   else if (iso9660_dir->filename[0] == '\1') | ||||||
|     return strdup(".."); |     return _strdup(".."); | ||||||
|   else { |   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]) |   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); |       p_stat = calloc(1, len); | ||||||
|       memcpy(p_stat, _root, len); |       memcpy(p_stat, _root, len); | ||||||
|       p_stat->rr.psz_symlink = calloc(1, p_stat->rr.i_symlink_max); |       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  |       if ( 0 != cmp && 0 == p_env->i_joliet_level  | ||||||
| 	   && yep != p_stat->rr.b3_rock ) { | 	   && yep != p_stat->rr.b3_rock ) { | ||||||
| 	char *trans_fname = NULL; | 	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; | 	int trans_len; | ||||||
| 	 | 	 | ||||||
| 	if (i_trans_fname) { | 	if (i_trans_fname) { | ||||||
|  | @ -1071,7 +1076,7 @@ _fs_iso_stat_traverse (iso9660_t *p_iso, const iso9660_stat_t *_root, | ||||||
|   if (!splitpath[0]) |   if (!splitpath[0]) | ||||||
|     { |     { | ||||||
|       iso9660_stat_t *p_stat; |       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); |       p_stat = calloc(1, len); | ||||||
|       if (!p_stat) |       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  |       if ( 0 != cmp && 0 == p_iso->i_joliet_level  | ||||||
| 	   && yep != p_stat->rr.b3_rock ) { | 	   && yep != p_stat->rr.b3_rock ) { | ||||||
| 	char *trans_fname = NULL; | 	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; | 	int trans_len; | ||||||
| 	 | 	 | ||||||
| 	if (i_trans_fname) { | 	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); |       iso9660_stat_t *statbuf = _cdio_list_node_data (entnode); | ||||||
|       const char *psz_filename  = (char *) statbuf->filename; |       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); |       if (*ppsz_full_filename != NULL) free(*ppsz_full_filename); | ||||||
|       *ppsz_full_filename = calloc(1, len); |       *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 |       if (statbuf->type == _STAT_DIR | ||||||
|           && strcmp ((char *) statbuf->filename, ".")  |           && strcmp ((char *) statbuf->filename, ".")  | ||||||
|           && 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) { |       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); | 	iso9660_stat_t *ret_stat = calloc(1, len); | ||||||
| 	if (!ret_stat) | 	if (!ret_stat) | ||||||
| 	  { | 	  { | ||||||
|  |  | ||||||
|  | @ -18,8 +18,14 @@ | ||||||
| /* Rock Ridge Extensions to iso9660 */ | /* Rock Ridge Extensions to iso9660 */ | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
| #ifdef HAVE_CONFIG_H | #if HAVE_CONFIG_H | ||||||
| # include "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 | #endif | ||||||
| 
 | 
 | ||||||
| #ifdef HAVE_STRING_H | #ifdef HAVE_STRING_H | ||||||
|  | @ -34,6 +40,12 @@ | ||||||
| # include <sys/stat.h> | # include <sys/stat.h> | ||||||
| #endif | #endif | ||||||
| 
 | 
 | ||||||
|  | #include <cdio/iso9660.h> | ||||||
|  | #include <cdio/logging.h> | ||||||
|  | #include <cdio/bytesex.h> | ||||||
|  | #include <cdio/filemode.h> | ||||||
|  | #include <malloc.h> | ||||||
|  | 
 | ||||||
| #ifndef HAVE_S_ISLNK | #ifndef HAVE_S_ISLNK | ||||||
| # define S_ISLNK(s) ((void)s,0) | # define S_ISLNK(s) ((void)s,0) | ||||||
| #endif | #endif | ||||||
|  | @ -41,10 +53,6 @@ | ||||||
| # define S_ISSOCK(s) ((void)s,0) | # define S_ISSOCK(s) ((void)s,0) | ||||||
| #endif | #endif | ||||||
| 
 | 
 | ||||||
| #include <cdio/iso9660.h> |  | ||||||
| #include <cdio/logging.h> |  | ||||||
| #include <cdio/bytesex.h> |  | ||||||
| #include <malloc.h> |  | ||||||
| 
 | 
 | ||||||
| #define CDIO_MKDEV(ma,mi)	((ma)<<16 | (mi)) | #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(); |   char *result = _getbuf(); | ||||||
| 
 | 
 | ||||||
|   if (S_ISBLK(st_mode)) |   if (S_ISDIR(st_mode))  | ||||||
|     result[ 0] = 'b'; |  | ||||||
|   else if (S_ISDIR(st_mode))  |  | ||||||
|     result[ 0] = 'd'; |     result[ 0] = 'd'; | ||||||
|  | //  else if (S_ISBLK(st_mode))
 | ||||||
|  | //    result[ 0] = 'b';
 | ||||||
|   else if (S_ISCHR(st_mode)) |   else if (S_ISCHR(st_mode)) | ||||||
|     result[ 0] = 'c'; |     result[ 0] = 'c'; | ||||||
|   else if (S_ISLNK(st_mode)) |   else if (S_ISLNK(st_mode)) | ||||||
|     result[ 0] = 'l'; |     result[ 0] = 'l'; | ||||||
|   else if (S_ISFIFO(st_mode)) | //  else if (S_ISFIFO(st_mode))
 | ||||||
|     result[ 0] = 'p'; | //    result[ 0] = 'p';
 | ||||||
|   else if (S_ISSOCK(st_mode))  |   else if (S_ISSOCK(st_mode))  | ||||||
|     result[ 0] = 's'; |     result[ 0] = 's'; | ||||||
|   /* May eventually fill in others.. */ |   /* May eventually fill in others.. */ | ||||||
|  |  | ||||||
|  | @ -17,9 +17,14 @@ | ||||||
| */ | */ | ||||||
|  |  | ||||||
| 
 | 
 | ||||||
| #ifdef HAVE_CONFIG_H | #if HAVE_CONFIG_H | ||||||
| # include "config.h" | # include <config.h> | ||||||
| # define __CDIO_CONFIG_H__ 1 | # define __CDIO_CONFIG_H__ 1 | ||||||
|  | #else | ||||||
|  | #ifndef EXTERNAL_LIBCDIO_CONFIG_H | ||||||
|  | #define EXTERNAL_LIBCDIO_CONFIG_H | ||||||
|  | #include <cdio/cdio_config.h> | ||||||
|  | #endif | ||||||
| #endif | #endif | ||||||
| 
 | 
 | ||||||
| #ifdef HAVE_STRING_H | #ifdef HAVE_STRING_H | ||||||
|  | @ -30,14 +35,6 @@ | ||||||
| #include <sys/stat.h> | #include <sys/stat.h> | ||||||
| #endif | #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
 | /*! String inside frame which identifies XA attributes.  Note should
 | ||||||
|     come *before* public headers which does a #define of |     come *before* public headers which does a #define of | ||||||
|     this name. |     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/iso9660.h> | ||||||
| #include <cdio/util.h> | #include <cdio/util.h> | ||||||
| #include <cdio/bytesex.h> | #include <cdio/bytesex.h> | ||||||
|  | #include <cdio/filemode.h> | ||||||
| 
 | 
 | ||||||
| /* Private headers */ | /* Private headers */ | ||||||
| #include "cdio_assert.h" | #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 | #if HAVE_CONFIG_H | ||||||
| # include <config.h> | # include <config.h> | ||||||
| # define __CDIO_CONFIG_H__ 1 | # 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 | #endif | ||||||
| 
 | 
 | ||||||
| #include <cdio/udf.h> | #include <cdio/udf.h> | ||||||
| 
 | #include <cdio/filemode.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 |  | ||||||
| 
 |  | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| /* Set the 's' and 't' flags in file attributes string CHARS,
 | /* Set the 's' and 't' flags in file attributes string CHARS,
 | ||||||
|  |  | ||||||
|  | @ -20,15 +20,12 @@ | ||||||
|    say opensolaris. */ |    say opensolaris. */ | ||||||
| #include "udf_private.h" | #include "udf_private.h" | ||||||
| #include <cdio/bytesex.h> | #include <cdio/bytesex.h> | ||||||
|  | #include <cdio/filemode.h> | ||||||
| 
 | 
 | ||||||
| #ifdef HAVE_STRING_H | #ifdef HAVE_STRING_H | ||||||
| # include <string.h> | # include <string.h> | ||||||
| #endif | #endif | ||||||
| 
 | 
 | ||||||
| #ifdef HAVE_SYS_STAT_H |  | ||||||
| # include <sys/stat.h> |  | ||||||
| #endif |  | ||||||
| 
 |  | ||||||
| /** The below variables are trickery to force enum symbol values to be
 | /** 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 |     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 |     to the enumeration value names in the typedefs above in a debugger | ||||||
|  | @ -95,9 +92,11 @@ udf_get_posix_filemode(const udf_dirent_t *p_udf_dirent) | ||||||
|       mode |= S_IFSOCK; |       mode |= S_IFSOCK; | ||||||
|       break; |       break; | ||||||
| #endif | #endif | ||||||
|  | #ifdef S_IFBLK | ||||||
|     case ICBTAG_FILE_TYPE_BLOCK: |     case ICBTAG_FILE_TYPE_BLOCK: | ||||||
|       mode |= S_IFBLK; |       mode |= S_IFBLK; | ||||||
|       break; |       break; | ||||||
|  | #endif | ||||||
|     default: ; |     default: ; | ||||||
|     }; |     }; | ||||||
|    |    | ||||||
|  |  | ||||||
|  | @ -126,7 +126,8 @@ offset_to_lba(const udf_dirent_t *p_udf_dirent, off_t i_offset, | ||||||
|     { |     { | ||||||
|       uint32_t icblen = 0; |       uint32_t icblen = 0; | ||||||
|       lba_t lsector; |       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); |       uint16_t addr_ilk = uint16_from_le(p_icb_tag->flags&ICBTAG_FLAG_AD_MASK); | ||||||
|        |        | ||||||
|       switch (addr_ilk) { |       switch (addr_ilk) { | ||||||
|  | @ -150,7 +151,7 @@ offset_to_lba(const udf_dirent_t *p_udf_dirent, off_t i_offset, | ||||||
| 		      + ad_offset ); | 		      + ad_offset ); | ||||||
| 	    icblen = p_icb->len; | 	    icblen = p_icb->len; | ||||||
| 	    ad_num++; | 	    ad_num++; | ||||||
| 	  } while(i_offset >= icblen); | 	  } while(i_offset >= (off_t)icblen); | ||||||
| 	   | 	   | ||||||
| 	  lsector = (i_offset / UDF_BLOCKSIZE) + p_icb->pos; | 	  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 ); | 		      + ad_offset ); | ||||||
| 	    icblen = p_icb->len; | 	    icblen = p_icb->len; | ||||||
| 	    ad_num++; | 	    ad_num++; | ||||||
| 	  } while(i_offset >= icblen); | 	  } while(i_offset >= (off_t)icblen); | ||||||
| 	 | 	 | ||||||
| 	  lsector = (i_offset / UDF_BLOCKSIZE) + | 	  lsector = (i_offset / UDF_BLOCKSIZE) + | ||||||
| 	    uint32_from_le(((udf_long_ad_t *)(p_icb))->loc.lba); | 	    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; |     driver_return_code_t ret; | ||||||
|     uint32_t i_max_size=0; |     uint32_t i_max_size=0; | ||||||
|     udf_t *p_udf = p_udf_dirent->p_udf; |     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); | 				&i_max_size); | ||||||
|     if (i_lba != CDIO_INVALID_LBA) { |     if (i_lba != CDIO_INVALID_LBA) { | ||||||
|       uint32_t i_max_blocks = CEILING(i_max_size, UDF_BLOCKSIZE); |       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); | 	  fprintf(stderr, "Warning: read count truncated to %u\n", count); | ||||||
| 	  count = i_max_blocks; | 	  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) { |       if (DRIVER_OP_SUCCESS == ret) { | ||||||
| 	ssize_t i_read_len = MIN(i_max_size, count * UDF_BLOCKSIZE); | 	ssize_t i_read_len = MIN(i_max_size, count * UDF_BLOCKSIZE); | ||||||
| 	p_udf->i_position += i_read_len; | 	p_udf->i_position += i_read_len; | ||||||
|  |  | ||||||
|  | @ -44,6 +44,11 @@ | ||||||
| #ifdef HAVE_CONFIG_H | #ifdef HAVE_CONFIG_H | ||||||
| # include "config.h" | # include "config.h" | ||||||
| # define __CDIO_CONFIG_H__ 1 | # define __CDIO_CONFIG_H__ 1 | ||||||
|  | #else | ||||||
|  | #ifndef EXTERNAL_LIBCDIO_CONFIG_H | ||||||
|  | #define EXTERNAL_LIBCDIO_CONFIG_H | ||||||
|  | #include <cdio/cdio_config.h> | ||||||
|  | #endif | ||||||
| #endif | #endif | ||||||
| 
 | 
 | ||||||
| #ifdef HAVE_STRING_H | #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); |     calloc(1, sizeof(udf_dirent_t) + i_alloc_size); | ||||||
|   if (!p_udf_dirent) return NULL; |   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_dir        = b_dir; | ||||||
|   p_udf_dirent->b_parent     = b_parent; |   p_udf_dirent->b_parent     = b_parent; | ||||||
|   p_udf_dirent->p_udf        = p_udf; |   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)  | 		 long int i_blocks)  | ||||||
| { | { | ||||||
|   driver_return_code_t ret; |   driver_return_code_t ret; | ||||||
|   long int i_read; |   ssize_t i_read; | ||||||
|   long int i_byte_offset; |   long int i_byte_offset; | ||||||
|    |    | ||||||
|   if (!p_udf) return 0; |   if (!p_udf) return 0; | ||||||
|  |  | ||||||
|  | @ -41,6 +41,11 @@ | ||||||
| #ifdef HAVE_CONFIG_H | #ifdef HAVE_CONFIG_H | ||||||
| #include "config.h" | #include "config.h" | ||||||
| # define __CDIO_CONFIG_H__ 1 | # define __CDIO_CONFIG_H__ 1 | ||||||
|  | #else | ||||||
|  | #ifndef EXTERNAL_LIBCDIO_CONFIG_H | ||||||
|  | #define EXTERNAL_LIBCDIO_CONFIG_H | ||||||
|  | #include <cdio/cdio_config.h> | ||||||
|  | #endif | ||||||
| #endif | #endif | ||||||
| 
 | 
 | ||||||
| #ifdef NEED_TIMEZONEVAR | #ifdef NEED_TIMEZONEVAR | ||||||
|  |  | ||||||
|  | @ -2,6 +2,8 @@ | ||||||
| #error This header should only be used with Microsoft compilers | #error This header should only be used with Microsoft compilers | ||||||
| #endif | #endif | ||||||
| 
 | 
 | ||||||
|  | #include <windows.h> | ||||||
|  | 
 | ||||||
| /* Workaround unisdt.h for MS compilers */ | /* Workaround unisdt.h for MS compilers */ | ||||||
| 
 | 
 | ||||||
| #ifndef _UNISTD_H_ | #ifndef _UNISTD_H_ | ||||||
|  | @ -12,6 +14,8 @@ | ||||||
| #define inline __inline | #define inline __inline | ||||||
| #endif | #endif | ||||||
| 
 | 
 | ||||||
|  | typedef unsigned short mode_t; | ||||||
|  | 
 | ||||||
| /* ssize_t is also not available (copy/paste from MinGW) */ | /* ssize_t is also not available (copy/paste from MinGW) */ | ||||||
| #ifndef _SSIZE_T_DEFINED | #ifndef _SSIZE_T_DEFINED | ||||||
| #define _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 | IDD_DIALOG DIALOGEX 12, 12, 206, 278 | ||||||
| STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION | WS_SYSMENU | STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION | WS_SYSMENU | ||||||
| EXSTYLE WS_EX_APPWINDOW | EXSTYLE WS_EX_APPWINDOW | ||||||
| CAPTION "Rufus v1.0.7.119" | CAPTION "Rufus v1.0.7.120" | ||||||
| FONT 8, "MS Shell Dlg", 400, 0, 0x1 | FONT 8, "MS Shell Dlg", 400, 0, 0x1 | ||||||
| BEGIN | BEGIN | ||||||
|     DEFPUSHBUTTON   "Start",IDC_START,94,236,50,14 |     DEFPUSHBUTTON   "Start",IDC_START,94,236,50,14 | ||||||
|  | @ -69,7 +69,7 @@ BEGIN | ||||||
|     DEFPUSHBUTTON   "OK",IDOK,231,175,50,14,WS_GROUP |     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, |     CONTROL         "<a href=""http://rufus.akeo.ie"">http://rufus.akeo.ie</a>",IDC_ABOUT_RUFUS_URL, | ||||||
|                     "SysLink",WS_TABSTOP,46,47,114,9 |                     "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 |     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 |     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 |     LTEXT           "Report bugs or request enhancements at:",IDC_STATIC,46,66,187,8 | ||||||
|  | @ -207,8 +207,8 @@ END | ||||||
| // | // | ||||||
| 
 | 
 | ||||||
| VS_VERSION_INFO VERSIONINFO | VS_VERSION_INFO VERSIONINFO | ||||||
|  FILEVERSION 1,0,7,119 |  FILEVERSION 1,0,7,120 | ||||||
|  PRODUCTVERSION 1,0,7,119 |  PRODUCTVERSION 1,0,7,120 | ||||||
|  FILEFLAGSMASK 0x3fL |  FILEFLAGSMASK 0x3fL | ||||||
| #ifdef _DEBUG | #ifdef _DEBUG | ||||||
|  FILEFLAGS 0x1L |  FILEFLAGS 0x1L | ||||||
|  | @ -225,13 +225,13 @@ BEGIN | ||||||
|         BEGIN |         BEGIN | ||||||
|             VALUE "CompanyName", "akeo.ie" |             VALUE "CompanyName", "akeo.ie" | ||||||
|             VALUE "FileDescription", "Rufus" |             VALUE "FileDescription", "Rufus" | ||||||
|             VALUE "FileVersion", "1.0.7.119" |             VALUE "FileVersion", "1.0.7.120" | ||||||
|             VALUE "InternalName", "Rufus" |             VALUE "InternalName", "Rufus" | ||||||
|             VALUE "LegalCopyright", "© 2011 Pete Batard (GPL v3)" |             VALUE "LegalCopyright", "© 2011 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.0.7.119" |             VALUE "ProductVersion", "1.0.7.120" | ||||||
|         END |         END | ||||||
|     END |     END | ||||||
|     BLOCK "VarFileInfo" |     BLOCK "VarFileInfo" | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue