| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160 | 
							- /*
 
- Copyright (c) 2012, Simon Howard
 
- Permission to use, copy, modify, and/or distribute this software
 
- for any purpose with or without fee is hereby granted, provided
 
- that the above copyright notice and this permission notice appear
 
- in all copies.
 
- THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
 
- WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
 
- WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE
 
- AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR
 
- CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
 
- LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
 
- NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
 
- CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
 
-  */
 
- #ifndef LHASA_LHA_ARCH_H
 
- #define LHASA_LHA_ARCH_H
 
- #include <stdio.h>
 
- #include <stdarg.h>
 
- #include <stdint.h>
 
- #define LHA_ARCH_UNIX     1
 
- #define LHA_ARCH_WINDOWS  2
 
- #ifdef _WIN32
 
- #define LHA_ARCH LHA_ARCH_WINDOWS
 
- #else
 
- #define LHA_ARCH LHA_ARCH_UNIX
 
- #endif
 
- typedef enum {
 
- 	LHA_FILE_NONE,
 
- 	LHA_FILE_FILE,
 
- 	LHA_FILE_DIRECTORY,
 
- 	LHA_FILE_ERROR,
 
- } LHAFileType;
 
- /**
 
-  * Cross-platform version of vasprintf().
 
-  *
 
-  * @param result      Pointer to a variable to store the resulting string.
 
-  * @param fmt         Format string.
 
-  * @param args        Additional arguments for printf().
 
-  * @return            Number of characters in resulting string, or -1 if
 
-  *                    an error occurred in generating the string.
 
-  */
 
- int lha_arch_vasprintf(char **result, char *fmt, va_list args);
 
- /**
 
-  * Change the mode of the specified FILE handle to be binary mode.
 
-  *
 
-  * @param handle      The FILE handle.
 
-  */
 
- void lha_arch_set_binary(FILE *handle);
 
- /**
 
-  * Create a directory.
 
-  *
 
-  * @param path        Path to the directory to create.
 
-  * @param unix_perms  Unix permissions for the directory to create.
 
-  * @return            Non-zero if the directory was created successfully.
 
-  */
 
- int lha_arch_mkdir(char *path, unsigned int unix_perms);
 
- /**
 
-  * Change the Unix ownership of the specified file or directory.
 
-  * If this is not a Unix system, do nothing.
 
-  *
 
-  * @param filename   Path to the file or directory.
 
-  * @param unix_uid   The UID to set.
 
-  * @param unix_gid   The GID to set.
 
-  * @return           Non-zero if set successfully.
 
-  */
 
- int lha_arch_chown(char *filename, int unix_uid, int unix_gid);
 
- /**
 
-  * Change the Unix permissions on the specified file or directory.
 
-  *
 
-  * @param filename    Path to the file or directory.
 
-  * @param unix_perms  The permissions to set.
 
-  * @return            Non-zero if set successfully.
 
-  */
 
- int lha_arch_chmod(char *filename, int unix_perms);
 
- /**
 
-  * Set the file creation / modification time on the specified file or
 
-  * directory.
 
-  *
 
-  * @param filename    Path to the file or directory.
 
-  * @param timestamp   The Unix timestamp to set.
 
-  * @return            Non-zero if set successfully.
 
-  */
 
- int lha_arch_utime(char *filename, unsigned int timestamp);
 
- /**
 
-  * Set the file creation, modification and access times for the
 
-  * specified file or directory, using 64-bit Windows timestamps.
 
-  *
 
-  * @param filename           Path to the file or directory.
 
-  * @param creation_time      64-bit Windows FILETIME value for the
 
-  *                           creation time of the file.
 
-  * @param modification_time  Modification time of the file.
 
-  * @param access_time        Last access time of the file.
 
-  * @return                   Non-zero if set successfully.
 
-  */
 
- int lha_arch_set_windows_timestamps(char *filename,
 
-                                     uint64_t creation_time,
 
-                                     uint64_t modification_time,
 
-                                     uint64_t access_time);
 
- /**
 
-  * Open a new file for writing.
 
-  *
 
-  * @param filename    Path to the file or directory.
 
-  * @param unix_uid    Unix UID to set for the new file, or -1 to not set.
 
-  * @param unix_gid    Unix GID to set for the new file, or -1 to not set.
 
-  * @param unix_perms  Unix permissions to set for the new file, or -1 to not
 
-  *                    set.
 
-  * @return            Standard C file handle.
 
-  */
 
- FILE *lha_arch_fopen(char *filename, int unix_uid,
 
-                      int unix_gid, int unix_perms);
 
- /**
 
-  * Query whether the specified file exists.
 
-  *
 
-  * @param filename    Path to the file.
 
-  * @return            The type of file.
 
-  */
 
- LHAFileType lha_arch_exists(char *filename);
 
- /**
 
-  * Create a symbolic link.
 
-  *
 
-  * If a file already exists at the location of the link to be created, it is
 
-  * overwritten.
 
-  *
 
-  * @param path        Path to the symbolic link to create.
 
-  * @param target      Target for the symbolic link.
 
-  * @return            Non-zero for success.
 
-  */
 
- int lha_arch_symlink(char *path, char *target);
 
- #endif /* ifndef LHASA_LHA_ARCH_H */
 
 
  |