Log

Author Commit Date CI Message
Ramsay Jones 4386ee2a 2010-06-05T21:09:03 Add a 'git__' prefix to the block-sha1 functions This reduces the global namespace pollution. These functions were the only remaining external symbols (with the exception of an PPC_SHA1 build) which did not start with 'git', and since these are private library symbols the 'git__' prefix is appropriate. Signed-off-by: Ramsay Jones <ramsay@ramsay1.demon.co.uk>
Ramsay Jones d03f5675 2010-06-04T18:20:31 Remove the sha1.h header file and inline the content into hash.c Given that the sha1.h header file should never be included into any other file, since it represents an implementation detail of hash.c, we remove the header and inline it's content. Signed-off-by: Ramsay Jones <ramsay@ramsay1.demon.co.uk>
Ramsay Jones bc874e11 2010-05-13T20:53:58 msvc: Select the "fast" definition of the {get,put}_be32() macros On Intel machines, the msvc compiler defines the CPU architecture macros _M_IX86 and _M_X64 (equivalent to __i386__ and __x86_64__ respectively). Use these macros in the pre-processor expression to select the "fast" definition of the {get,put}_be32() macros. Signed-off-by: Ramsay Jones <ramsay@ramsay1.demon.co.uk>
Ramsay Jones e0452999 2010-05-13T20:51:49 Makefile: Add a target to generate C preprocessor output files Signed-off-by: Ramsay Jones <ramsay@ramsay1.demon.co.uk>
Ramsay Jones 552e23ba 2010-06-02T19:16:28 Fix a bug in the git_oid_to_string() function When git_oid_to_string() was passed a buffer size larger than GIT_OID_HEXSZ+1, the function placed the c-string NUL char at the wrong position. Fix the code to place the NUL at the end of the (possibly truncated) oid string. Signed-off-by: Ramsay Jones <ramsay@ramsay1.demon.co.uk>
Ramsay Jones 702bd705 2010-06-01T19:39:24 Fix a memory leak shown by valgrind Signed-off-by: Ramsay Jones <ramsay@ramsay1.demon.co.uk> Signed-off-by: Andreas Ericsson <ae@op5.se>
Ramsay Jones 28f98329 2010-06-01T19:37:10 Fix inconsistent definition of off_t on Linux In order to avoid inconsistent definitions of type off_t, all compilation units should include the "common.h" header file before certain system headers (those which directly or indirectly lead to the definition of off_t). The "common.h" header contains the definition of _FILE_OFFSET_BITS to select 64-bit file offsets. The symptom of this inconsistency, while compiling with -Wextra, is the following warning: In file included from src/common.h:50, from src/commit.c:28: src/util.h: In function git__is_sizet: src/util.h:41: warning: comparison between signed and unsigned In order to fix the problem, we simply remove the #include <time.h> statement at the head of src/commit.c. Note that src/commit.h also includes <time.h>. Signed-off-by: Ramsay Jones <ramsay@ramsay1.demon.co.uk> Signed-off-by: Andreas Ericsson <ae@op5.se>
Ramsay Jones c1b62b2e 2010-06-01T19:35:49 Fix a "dereference of type-punned pointer" compiler warning gcc (4.4.0) issues the following warning: src/revobject.c:33: warning: dereferencing type-punned pointer \ will break strict-aliasing rules We suppress the warning by copying the first 4 bytes from the oid structure into an 'unsigned int' using memcpy(). This will also fix any potential alignment issues on certain platforms. Signed-off-by: Ramsay Jones <ramsay@ramsay1.demon.co.uk> Signed-off-by: Andreas Ericsson <ae@op5.se>
Ramsay Jones 6e0fa05b 2010-06-01T19:34:48 Fix a doxygen warning In particular, doxygen issues the following warning: .../src/git/revwalk.h:86: Warning: The following parameters of \ gitrp_sorting(git_revpool *pool, unsigned int sort_mode) are \ not documented: parameter 'pool' Signed-off-by: Ramsay Jones <ramsay@ramsay1.demon.co.uk> Signed-off-by: Andreas Ericsson <ae@op5.se>
Ramsay Jones f2924934 2010-06-01T19:41:55 Style: Do not use (C99) // comments Signed-off-by: Ramsay Jones <ramsay@ramsay1.demon.co.uk> Signed-off-by: Andreas Ericsson <ae@op5.se>
Ramsay Jones b2bc567f 2010-06-01T19:40:58 Style: Fix brace placement and spacing Signed-off-by: Ramsay Jones <ramsay@ramsay1.demon.co.uk> Signed-off-by: Andreas Ericsson <ae@op5.se>
Ramsay Jones 5440906f 2010-06-01T19:29:15 msvc: Fix some compiler warnings In particular, the compiler issues the following warnings: src/revobject.c(29) : warning C4305: 'initializing' : truncation \ from 'double' to 'const float' src/revobject.c(56) : warning C4244: '=' : conversion from \ 'const float' to 'unsigned int', possible loss of data src/revobject.c(149) : warning C4244: '=' : conversion from \ 'const float' to 'unsigned int', possible loss of data In order to suppress the warnings we change the type of max_load_factor to double, rather than change the initialiser to 0.65f, and cast the result type of the expressions to 'unsigned int' as expected by the assignment operators. Note that double should be able to represent all unsigned int values without loss. Signed-off-by: Ramsay Jones <ramsay@ramsay1.demon.co.uk> Signed-off-by: Andreas Ericsson <ae@op5.se>
Ramsay Jones 8a7d625f 2010-06-01T19:28:04 Fix some "signed/unsigned comparison" compilation warnings These warnings are issued by both gcc (-Wextra) and msvc (-W3). Signed-off-by: Ramsay Jones <ramsay@ramsay1.demon.co.uk> Signed-off-by: Andreas Ericsson <ae@op5.se>
Ramsay Jones 5b7487be 2010-06-01T19:26:42 Fix a memory corruption runtime error On the msvc build, the tests t0401-parse and t0501-walk both crash with a runtime error (ACCESS_VIOLATION). This is caused by writing to un-allocated memory due to an under-allocation of a git_revpool_table data structure. Signed-off-by: Ramsay Jones <ramsay@ramsay1.demon.co.uk> Signed-off-by: Andreas Ericsson <ae@op5.se>
Ramsay Jones 331578fb 2010-06-01T19:25:28 msvc: Fix a "declaration after statement" compilation error Signed-off-by: Ramsay Jones <ramsay@ramsay1.demon.co.uk> Signed-off-by: Andreas Ericsson <ae@op5.se>
Ramsay Jones 84b9cec7 2010-06-01T19:33:57 Fix sparse warnings: "symbol not declared. Should it be static?" In particular, sparse issues the following warnings: src/revobject.c:29:14: warning: symbol 'max_load_factor' was \ not declared. Should it be static? src/revobject.c:31:14: warning: symbol 'git_revpool_table__hash' was \ not declared. Should it be static? In order to suppress these warnings, we simply declare them as static, since they are not (currently) referenced outside of this file. In the case of max_load_factor, this is probably correct. However, this may not be appropriate for git_revpool_table__hash(), given how it is named. So, this should either be re-named to reflect it's non-external status, or a declaration needs to be added to the revobject.h header file. Signed-off-by: Ramsay Jones <ramsay@ramsay1.demon.co.uk> Signed-off-by: Andreas Ericsson <ae@op5.se>
Ramsay Jones ee1765e5 2010-06-01T19:32:41 Fix sparse warnings: "Using plain integer as NULL pointer" In order to suppress this warning, we could simply replace the constant 0 with NULL. However, in this case, replacing the comparison with 0 by !buffer is more idiomatic. Signed-off-by: Ramsay Jones <ramsay@ramsay1.demon.co.uk> Signed-off-by: Andreas Ericsson <ae@op5.se>
Ramsay Jones 468b12ad 2010-06-01T19:31:26 msvc: tests/t0403-lists.c: Fix a compiler warning For more recent versions of msvc, the time_t type, as returned by the time() function, is a 64-bit type. The srand() function, however, expects an 'unsigned int' input parameter, leading to the warning. Signed-off-by: Ramsay Jones <ramsay@ramsay1.demon.co.uk> Signed-off-by: Andreas Ericsson <ae@op5.se>
Ramsay Jones 4e0d6d86 2010-06-01T19:30:29 msvc: Fix an "conversion, loss of data" compiler warning In particular, the compiler issues the following warning: src/revwalk.c(61) : warning C4244: '=' : conversion from \ 'unsigned int' to 'unsigned char', possible loss of data In order to suppress the warning, we change the type of the sorting "enum" field of the git_revpool structure to be consistent with the sort_mode parameter of the gitrp_sorting() function. Note that if the size of the git_revpool structure is an issue, then we could change the type of the sort_mode parameter instead. Signed-off-by: Ramsay Jones <ramsay@ramsay1.demon.co.uk> Signed-off-by: Andreas Ericsson <ae@op5.se>
Vicent Marti 655d381a 2010-05-23T16:51:31 Add topological sorting and new insertion methods for commit lists. 'git_commit_list_toposort()' and 'git_commit_list_timesort()' now sort a commit list by topological and time order respectively. Both sorts are stable and in place. 'git_commit_list_append' has been replaced by 'git_commit_list_push_back' and 'git_commit_list_push_front'. Signed-off-by: Vicent Marti <tanoku@gmail.com> Signed-off-by: Andreas Ericsson <ae@op5.se>
Vicent Marti 47c31f58 2010-05-23T16:28:32 Fixed linked list tail being lost when sorting. Signed-off-by: Vicent Marti <tanoku@gmail.com> Signed-off-by: Andreas Ericsson <ae@op5.se>
Vicent Marti a7c182c5 2010-05-23T04:41:31 Add object cache to the revision pool. Fixed issue when generating pending commits list during iteration. The 'git_commit_lookup' function will now check the pool's cache for commits which have been previously loaded/parsed; there can only be a single 'git_commit' structure for each commit on the same pool. Signed-off-by: Vicent Marti <tanoku@gmail.com> Signed-off-by: Andreas Ericsson <ae@op5.se>
Vicent Marti d047b47a 2010-05-23T04:41:07 Updated t0401 (commit parsing) to reflect the new API changes. Signed-off-by: Vicent Marti <tanoku@gmail.com> Signed-off-by: Andreas Ericsson <ae@op5.se>
Vicent Marti 089c2d93 2010-05-23T04:39:33 Add unit tests for list sorting. Signed-off-by: Vicent Marti <tanoku@gmail.com> Signed-off-by: Andreas Ericsson <ae@op5.se>
Vicent Marti de141d4b 2010-05-28T02:02:02 Improved error handling on auxilirary functions. Signed-off-by: Vicent Marti <tanoku@gmail.com> Signed-off-by: Andreas Ericsson <ae@op5.se>
Vicent Marti c2550609 2010-05-28T01:50:59 Use the first 4 bytes of an OID as hash, instead of full hashing. Signed-off-by: Vicent Marti <tanoku@gmail.com> Signed-off-by: Andreas Ericsson <ae@op5.se>
Vicent Marti 6bb7aa13 2010-05-28T01:48:59 Added new error codes. Improved error handling. Signed-off-by: Vicent Marti <tanoku@gmail.com> Signed-off-by: Andreas Ericsson <ae@op5.se>
Vicent Marti 0daa6cdc 2010-05-28T00:50:03 Removed trailing whitespace. Signed-off-by: Vicent Marti <tanoku@gmail.com> Signed-off-by: Andreas Ericsson <ae@op5.se>
Vicent Marti 9b3577ed 2010-05-28T00:23:43 Fixed brace placement and converted spaces to tabs. Signed-off-by: Vicent Marti <tanoku@gmail.com> Signed-off-by: Andreas Ericsson <ae@op5.se>
Vicent Marti 0cf02ff9 2010-05-26T21:23:01 Added t0501-walk (simple test for all revision pool walking modes) Signed-off-by: Vicent Marti <tanoku@gmail.com> Signed-off-by: Andreas Ericsson <ae@op5.se>
Vicent Marti 1d1be8ee 2010-05-26T01:42:18 Fixed topological commit sorting (no longerd reversed) and commit time sorting ('prev' pointers in the linked list are no longer lost). Signed-off-by: Vicent Marti <tanoku@gmail.com> Signed-off-by: Andreas Ericsson <ae@op5.se>
Vicent Marti 1f798df2 2010-05-25T22:59:50 Fixed topological sorting stuck in infinite loop. Signed-off-by: Vicent Marti <tanoku@gmail.com> Signed-off-by: Andreas Ericsson <ae@op5.se>
Vicent Marti 69dca959 2010-05-25T22:30:09 Fixed parsing commit times (they weren't being stored at all!) Signed-off-by: Vicent Marti <tanoku@gmail.com> Signed-off-by: Andreas Ericsson <ae@op5.se>
Vicent Marti 82b1db3b 2010-05-25T22:00:55 Changed commit time sorting to be descending (from newest to oldest). Signed-off-by: Vicent Marti <tanoku@gmail.com> Signed-off-by: Andreas Ericsson <ae@op5.se>
Vicent Marti e5d1faef 2010-05-25T19:48:13 Add external API for revision sorting. The GIT_RPSORT_XXX flags have been moved to the external API, and a new method 'gitrp_sorting(...)' has been added to safely change the sorting method of a revision pool. Signed-off-by: Vicent Marti <tanoku@gmail.com> Signed-off-by: Andreas Ericsson <ae@op5.se>
Vicent Marti 9bdb7594 2010-05-23T17:12:28 Properly reset all commit properties when doing a gitrp_reset(). Add git_revpool_table_free() method. Signed-off-by: Vicent Marti <tanoku@gmail.com> Signed-off-by: Andreas Ericsson <ae@op5.se>
Vicent Marti b60488e1 2010-05-23T04:37:39 Added sort method for commit lists. Fixed bug when parsing time headers from commits. Signed-off-by: Vicent Marti <tanoku@gmail.com> Signed-off-by: Andreas Ericsson <ae@op5.se>
Vicent Marti 5e15176d 2010-05-23T02:39:57 Add commit caching on the commit table. Properly initialize the pending commits list. Signed-off-by: Vicent Marti <tanoku@gmail.com> Signed-off-by: Andreas Ericsson <ae@op5.se>
Vicent Marti c5696427 2010-05-22T23:21:10 Add 'git_revpool_object' and 'git_revpool_table' structures. All the objects which will will be eventually transversable from a revision pool (commits, trees, etc) now inherit from the 'git_revpool_object' structure which identifies them with their own OID. Furthermore, the 'git_revpool_table' and related functions have been added, which allow for constant time lookup (hash table) of the loaded revpool objects based on their OID. Signed-off-by: Vicent Marti <tanoku@gmail.com> Signed-off-by: Andreas Ericsson <ae@op5.se>
Vicent Marti 36b7cdb6 2010-05-22T18:15:42 Changed 'git_commit_list' from a linked list to a doubly-linked list. Changed 'git_commit' to use bit fields instead of flags. Signed-off-by: Vicent Marti <tanoku@gmail.com> Signed-off-by: Andreas Ericsson <ae@op5.se>
Vicent Marti 89039682 2010-05-22T14:36:36 Removed 'git_commit_uninteresting' from the public API. Signed-off-by: Vicent Marti <tanoku@gmail.com> Signed-off-by: Andreas Ericsson <ae@op5.se>
Vicent Marti 1a895dd7 2010-05-22T14:32:59 Add arbritrary ordering revision walking. The 'gitrp_next()' method now correctly does a revision walking of all the pushed revisions in arbritary ordering. Signed-off-by: Vicent Marti <tanoku@gmail.com> Signed-off-by: Andreas Ericsson <ae@op5.se>
Vicent Marti 8add0153 2010-05-21T02:35:40 Split git_commit_lookup into separate functions. git_commit_lookup() now creates commit references without loading them from the ODB. git_commit_parse() creates a commit reference, loads it and parses it from the ODB. Signed-off-by: Vicent Marti <tanoku@gmail.com> Signed-off-by: Andreas Ericsson <ae@op5.se>
Vicent Marti 08d5d000 2010-05-18T20:55:19 Add commit parents to parsed commits and commit lists to the revpool. Basic support for iterating the revpool. The following functions of the revwalk API have been partially implemented: void gitrp_reset(git_revpool *pool); void gitrp_push(git_revpool *pool, git_commit *commit); void gitrp_prepare_walk(git_revpool *pool); git_commit *gitrp_next(git_revpool *pool); Parsed commits' parents are now also parsed and stored in a "git_commit_list" structure (linked list). Signed-off-by: Vicent Marti <tanoku@gmail.com> Signed-off-by: Andreas Ericsson <ae@op5.se>
Vicent Marti 42281e00 2010-05-16T01:52:31 Add unit tests for Commit parsing A few initial tests for commit parsing: "parse_buffer_test" tests git_commit__parse_buffer() with several malformed commit messages and a few corner cases which should pass. "parse_oid_test" tests git_commit__parse_oid() with several malformed commit lines containing broken SHA1 OIDs. Signed-off-by: Vicent Marti <tanoku@gmail.com> Signed-off-by: Andreas Ericsson <ae@op5.se>
Vicent Marti 4caa8962 2010-05-14T18:57:50 Fixed indentation issues in commit.c Signed-off-by: Vicent Marti <tanoku@gmail.com> Signed-off-by: Andreas Ericsson <ae@op5.se>
Vicent Marti 417f0abc 2010-05-14T18:44:49 Add basic functionality for commit lookup/parsing The external API function "git_commit_parse" has been renamed to "git_commit_lookup" and has been partially implemented with support for loading commits straight from the ODB. It still lacks the functionality to lookup cached commits in the revpool and to resolve tags to commits. The following internal functions have been partially implemented: int git_commit__parse_buffer(...); int git_commit__parse_time(...); int git_commit__parse_oid(...); Commits are now fully parsed but the generated parent and tree references are not handled yet. Signed-off-by: Vicent Marti <tanoku@gmail.com> Signed-off-by: Andreas Ericsson <ae@op5.se>
Vicent Marti 1bb11859 2010-05-06T21:35:18 Fixed typos in the revwalk API documentation Signed-off-by: Vicent Marti <tanoku@gmail.com> Signed-off-by: Andreas Ericsson <ae@op5.se>
Ramsay Jones 38c513b9 2010-04-28T19:07:14 Add support to enable the library to use OpenSSL SHA1 functions Signed-off-by: Ramsay Jones <ramsay@ramsay1.demon.co.uk>
Ramsay Jones 89217d8f 2010-04-28T20:20:00 Add functions to open a '*.pack' file and perform some basic validation Signed-off-by: Ramsay Jones <ramsay@ramsay1.demon.co.uk>
Ramsay Jones 3cc60635 2010-03-05T19:06:28 Add some more (macro) file operation wrappers Signed-off-by: Ramsay Jones <ramsay@ramsay1.demon.co.uk>
Ramsay Jones 54b9460f 2010-04-07T20:13:56 Fix the memory leak caused by failing to free the 'offset index' Signed-off-by: Ramsay Jones <ramsay@ramsay1.demon.co.uk>
Ramsay Jones 19d13c65 2010-04-27T17:00:30 Makefile(s): Don't include the OpenSSL crypto library in the link Also, fully purge the NO_OPENSSL build variable. Signed-off-by: Ramsay Jones <ramsay@ramsay1.demon.co.uk>
Ramsay Jones f019bd17 2010-04-27T16:36:52 Makefile: 'make clean' wipe all editor backup files in src/*/ In a similar way to commit 9b17380 ("Make 'make clean' wipe all object files in src/*/", 2010-04-14), we use a shell glob when removing editor backup files. Signed-off-by: Ramsay Jones <ramsay@ramsay1.demon.co.uk>
Ramsay Jones 44debd80 2010-04-27T16:13:57 Makefile: Add source for the built-in SHA1 routines to $(SRC_C) This results in the 'sparse' and 'coverage' targets including the C source files for the built-in SHA1 routines. In addition to the sparse check, this results in the generation of the '.gcov' file and inclusion in the test coverage report. Signed-off-by: Ramsay Jones <ramsay@ramsay1.demon.co.uk>
Ramsay Jones 70aab459 2010-04-26T22:04:10 win32: Remove wsock32 from the list of libraries to link Commit 5dddf7c (Add block-sha1 in favour of the mozilla routines 2010-04-14) introduced the "bswap.h" header file which, for x86 or x86-64 machines, provides a "sane" implementation of ntohl() and htonl(). The wsock32 library, on the msvc and MinGW build, is only included in the link to supply the ntohl()/htonl() routines. Since we now have a built-in implementation, we can remove the wsock32 library from the link. [This will break a Windows build on a non-intel machine] Signed-off-by: Ramsay Jones <ramsay@ramsay1.demon.co.uk>
Ramsay Jones e272b103 2010-04-26T20:10:44 MSVC: Fix some compiler warnings In particular, using the normal (or production) compiler warning level (-W3), msvc complains as follows: .../sha1.c(244) : warning C4018: '<' : signed/unsigned mismatch .../sha1.c(270) : warning C4244: 'function' : conversion from \ 'unsigned __int64' to 'unsigned long', possible loss of data .../sha1.c(271) : warning C4244: 'function' : conversion from \ 'unsigned __int64' to 'unsigned long', possible loss of data Note that gcc issues a similar complaint about line 244 when compiling with -Wextra. Signed-off-by: Ramsay Jones <ramsay@ramsay1.demon.co.uk>
Ramsay Jones e2337f39 2010-04-25T21:55:41 MSVC: Fix a syntax error caused by an inline function definition Commit 5dddf7c (Add block-sha1 in favour of the mozilla routines 2010-04-14) introduced the "bswap.h" header file which contains an inline function (default_swab32()). The msvc compiler does not support the inline keyword which causes the build to fail with a syntax error. However, msvc does support inline functions using the __inline keyword language extension. We already have the GIT_INLINE() macro that allows us to hide this syntatic difference. In order to fix the build, we simply use GIT_INLINE() in the definition of the default_swab32() function. Signed-off-by: Ramsay Jones <ramsay@ramsay1.demon.co.uk>
Andreas Ericsson fb799dfe 2010-04-23T09:59:22 Merge remote branch 'ramsay/dev' * ramsay/dev: Add a pack index 'virtual function' to fetch an index entry Add a pack index 'virtual function' to search by file offset Change the interface of the pack index search function Add an 64-bit offset table index bounds check for v2 pack index Add a minimum size check when opening an v2 pack index file win32: Add separate MinGW and MSVC compatability header files Makefile: Add support for custom build options in config.mak file Fix some coding style issues
Andreas Ericsson 10074651 2009-04-08T09:56:07 Correct Adam Simpkins' name Signed-off-by: Andreas Ericsson <ae@op5.se>
Andreas Ericsson 5dddf7c8 2010-04-14T20:41:57 Add block-sha1 in favour of the mozilla routines Since block-sha1 from git.git has such excellent performance, we can also get rid of the openssl dependency. It's rather simple to add it back later as an optional extra, but we really needn't bother to pull in the entire ssl library and have to deal with linking issues now that we have the portable and, performance-wise, truly excellent block-sha1 code to fall back on. Since this requires a slight revamp of the build rules anyway, we take the opportunity to fix including EXTRA_OBJS in the final build as well. The block-sha1 code was originally implemented for git.git by Linus Torvalds <torvalds@linux-foundation.org> and was later polished by Nicolas Pitre <nico@cam.org>. Signed-off-by: Andreas Ericsson <ae@op5.se>
Andreas Ericsson d15e94c0 2010-04-14T20:23:36 Add assembly sha1 implementation for ppc We don't use it yet, but now we have it there at least. All the non-trivial parts of it appears to have been written and contributed to git.git by some anonymous genius. The original implementation was done by Paul Mackerras <paulus@samba.org>. Signed-off-by: Andreas Ericsson <ae@op5.se>
Andreas Ericsson a7335c51 2010-04-14T19:40:10 Add generic buildrule for assembly files Signed-off-by: Andreas Ericsson <ae@op5.se>
Andreas Ericsson 9b173803 2010-04-14T19:38:38 Make 'make clean' wipe all object files in src/*/ Instead of naming the subdirectories explicitly (which will result in us forgetting about one sooner or later), we change the shell glob pattern to wipe all object files from all subdirectories under src/. Signed-off-by: Andreas Ericsson <ae@op5.se>
Ramsay Jones 2cdc4544 2010-02-26T22:53:10 Add a pack index 'virtual function' to fetch an index entry Given an index entry number, the idx_get() function returns an (version agnostic) index_entry structure containing all of the information required to unpack the corresponding object from the '.pack' file. Since the v1 and v2 file formats differ in the layout of the object records, we provide two implementations of the get function and initialise the function pointer appropriately. Signed-off-by: Ramsay Jones <ramsay@ramsay1.demon.co.uk>
Ramsay Jones 608d33fa 2010-02-26T19:59:06 Add a pack index 'virtual function' to search by file offset In addition to searching the index by oid, we need to search by '.pack' file offset, particularly when processing OBJ_OFS_DELTA objects. Since the v1 and v2 file formats differ in the layout of the object records, we provide two implementations of the search function and initialise the (virtual) function pointer appropriately. Note that, as part of the creation of the 'offset index', we also add a check that the offset data in the index is within the bounds of the '.pack' file. Having sorted the file offsets, while creating the index, we only need to check the smallest and largest values. The offset index consists of the im_off_idx array, which contains the index entry numbers sorted into file offset order, and the im_off_next mapping array. The im_off_next array maps an index entry number to the 'next' index entry in file offset order. Signed-off-by: Ramsay Jones <ramsay@ramsay1.demon.co.uk>
Ramsay Jones abf5681c 2010-02-26T19:29:54 Change the interface of the pack index search function In particular, on a successful search, we now return the index entry number of the object rather than the '.pack' file offset. Signed-off-by: Ramsay Jones <ramsay@ramsay1.demon.co.uk>
Ramsay Jones 238e54bc 2010-02-21T15:34:53 Add an 64-bit offset table index bounds check for v2 pack index Signed-off-by: Ramsay Jones <ramsay@ramsay1.demon.co.uk>
Ramsay Jones 255a0dab 2010-02-19T22:36:31 Add a minimum size check when opening an v2 pack index file Signed-off-by: Ramsay Jones <ramsay@ramsay1.demon.co.uk>
Ramsay Jones e8cc449f 2010-02-19T21:49:22 win32: Add separate MinGW and MSVC compatability header files Signed-off-by: Ramsay Jones <ramsay@ramsay1.demon.co.uk>
Ramsay Jones 56931d1a 2010-02-19T20:07:03 Makefile: Add support for custom build options in config.mak file Signed-off-by: Ramsay Jones <ramsay@ramsay1.demon.co.uk>
Ramsay Jones 1e5dd572 2010-02-12T16:50:33 Fix some coding style issues Signed-off-by: Ramsay Jones <ramsay@ramsay1.demon.co.uk>
Ramsay Jones 74eff33f 2010-02-01T10:39:10 Makefile: Add support for building with MSVC Signed-off-by: Ramsay Jones <ramsay@ramsay1.demon.co.uk>
Ramsay Jones 73dcf287 2010-01-12T16:39:25 msvc: Fix some "unreferenced formal parameter" warnings Signed-off-by: Ramsay Jones <ramsay@ramsay1.demon.co.uk>
Ramsay Jones e8a95256 2010-01-04T18:57:13 msvc: Fix some -W4 warnings Signed-off-by: Ramsay Jones <ramsay@ramsay1.demon.co.uk>
Ramsay Jones 1a7bae4d 2010-01-11T22:51:42 Fix some "unused parameter" warnings with -Wextra Signed-off-by: Ramsay Jones <ramsay@ramsay1.demon.co.uk>
Ramsay Jones e3fe32b6 2010-01-11T21:11:55 Fix "'__thread' not at start of declaration" warnings (-Wextra) Signed-off-by: Ramsay Jones <ramsay@ramsay1.demon.co.uk>
Ramsay Jones 0ef9d2aa 2010-01-03T22:56:54 Fix some "signed v unsigned comparison" warnings with -Wextra Signed-off-by: Ramsay Jones <ramsay@ramsay1.demon.co.uk>
Ramsay Jones a4f863af 2010-01-03T19:37:04 Fix an always false comparison "unsigned < 0" warning Signed-off-by: Ramsay Jones <ramsay@ramsay1.demon.co.uk>
Ramsay Jones 803a6b4d 2010-01-03T19:12:05 Save the git_file in the gitfo_cache when enabling caching Signed-off-by: Ramsay Jones <ramsay@ramsay1.demon.co.uk>
Ramsay Jones 1cfb0ff4 2009-12-30T19:12:35 Makefile: Add some missing $(GIT_LIB) dependencies Signed-off-by: Ramsay Jones <ramsay@ramsay1.demon.co.uk>
Ramsay Jones e97179b6 2010-01-13T20:01:11 win32: Add a 'git__' prefix to the directory reading routines This reduces the global namespace pollution and allows for a win32 compiler (eg. Open Watcom) to provide these routines in a header other than <dirent.h> (eg in <io.h>). Signed-off-by: Ramsay Jones <ramsay@ramsay1.demon.co.uk>
Ramsay Jones 90d4d2f0 2010-01-11T19:27:50 win32: Use an 64-bit file offset type Signed-off-by: Ramsay Jones <ramsay@ramsay1.demon.co.uk>
Ramsay Jones a1c0728d 2009-12-21T15:54:50 Add support for the MinGW platform Signed-off-by: Ramsay Jones <ramsay@ramsay1.demon.co.uk>
Ramsay Jones cfe3a027 2010-01-15T22:07:44 Use a 64 bit off_t throughout the library and tests on POSIX Signed-off-by: Ramsay Jones <ramsay@ramsay1.demon.co.uk>
Ramsay Jones 960ca1d7 2009-08-28T21:22:46 Add the git_oid_to_string() utility function Signed-off-by: Ramsay Jones <ramsay@ramsay1.demon.co.uk>
Ramsay Jones e4553584 2009-08-19T17:06:39 Add test-suite coverage testing using gcov Add a new "coverage" Makefile target that re-builds the library and tests using the gcc compiler/linker flags required by gcov, runs the test suite to capture the runtime data, then compiles a coverage report. The report, which is saved in a file named "untested", consists of a list of untested files, followed by a list of untested functions. More detailed execution statistics are given in the gcov log files which are saved in the top-level directory (named like src#hash.c.gcov). Signed-off-by: Ramsay Jones <ramsay@ramsay1.demon.co.uk>
Ramsay Jones d2ef83fc 2009-08-28T20:22:03 t0101-oid.c: Fix a memory leak reported by valgrind Signed-off-by: Ramsay Jones <ramsay@ramsay1.demon.co.uk>
Ramsay Jones cac5d927 2009-08-27T16:11:07 Add support for running the tests via valgrind Add some makefile targets, which use valgrind's memcheck tool to run the tests, in order to help diagnose memory problems in the library. In addition, we enable the '--leak-check' option to report on any memory leaks. However, unlike the other memory problems reported by memcheck, memory leak reports do not result in an error exit from valgrind. (So memory leaks are reported on stderr, but don't halt the test run.) A suppressions file (tests.supp) is included since libz triggers some false positives. Signed-off-by: Ramsay Jones <ramsay@ramsay1.demon.co.uk>
Ramsay Jones 04e88240 2009-06-17T22:21:10 win32: Define the ssize_t type using SSIZE_T if supported Some win32 compilers define the SSIZE_T type, with the same meaning and intent as ssize_t. If available, make ssize_t a synonym of SSIZE_T. At present, the Digital-Mars compiler is known not to define SSIZE_T, so we provide an SSIZE_T macro to use in the typedef. Signed-off-by: Ramsay Jones <ramsay@ramsay1.demon.co.uk>
Ramsay Jones 5cae6c25 2009-06-17T15:54:59 Disable some msvc "deprecated function" warnings again In addition to removing the inline #define, commit 209849a also removed a #pragma to disable msvc deprecated function warnings. Without this #pragma, msvc currently issues 19 warnings related to "deprecated insecure c-library functions", such as strcpy() and 22 warnings related to "deprecated POSIX function names", such as open(). In order to supress these warnings, re-instate the #pragma. Signed-off-by: Ramsay Jones <ramsay@ramsay1.demon.co.uk>
Julio Espinoza-Sokal 209849a4 2009-06-15T21:27:49 Use GIT_INLINE macro instead of keyword inline. No need to define inline as __inline because libgit2 code should be using GIT_INLINE instead. Signed-off-by: Julio Espinoza-Sokal <julioes@gmail.com> Signed-off-by: Andreas Ericsson <ae@op5.se>
Julio Espinoza-Sokal 73c4dd92 2009-06-15T21:26:02 Add noreturn declaration compatible with the MSVC compiler. MSVC provides a compiler declaration to declare that a function never returns. This declaration is required in front of the function definition rather than at the end, but fortunately gcc is compatible with this location as well. Explicit returns are no longer required after calls to test_die. Signed-off-by: Julio Espinoza-Sokal <julioes@gmail.com> Signed-off-by: Andreas Ericsson <ae@op5.se>
Ramsay Jones c79dded3 2009-06-14T22:13:35 win32: Add an fsync() implementation for windows For information on FlushFileBuffers(), see the msdn document at msdn.microsoft.com/en-us/library/aa364439(VS.85).aspx Note that Windows 2000 is shown as the minimum windows version to support FlushFileBuffers(), so if we wish to support Win9X and NT4, we will need to add code to dynamically check if kernel32.dll contains the function. The only error return mentioned in the msdn document is ERROR_INVALID_HANDLE, which is returned if the file/device (eg console) is not buffered. The fsync(2) manpage says that EINVAL is returned in errno, if "fd is bound to a special file which does not support synchronization". Signed-off-by: Ramsay Jones <ramsay@ramsay1.demon.co.uk>
Ramsay Jones 8a086f87 2009-06-14T22:12:20 win32: Add support for the MS Visual C/C++ compiler Signed-off-by: Ramsay Jones <ramsay@ramsay1.demon.co.uk>
Ramsay Jones 2bf93fa1 2009-06-14T22:10:23 Correct the spelling of the FLEX_ARRAY macro When setting the default value, the macro name was specified as GIT_FLEX_ARRAY, which is inconsistent with it's earlier usage in the file. This caused a compilation error, using the MS Visual C/C++ compiler, when compiling the git_packlist struct definition in src/odb.c. In addition to changing the spelling of the FLEX_ARRAY macro to GIT_FLEX_ARRAY, including it's use in src/odb.c, we also rename the TYPEOF macro to GIT_TYPEOF. Signed-off-by: Ramsay Jones <ramsay@ramsay1.demon.co.uk>
Ramsay Jones 10aa3fa7 2009-06-04T17:14:35 Fix some "signed/unsigned mismatch" (msvc) compiler warnings Signed-off-by: Ramsay Jones <ramsay@ramsay1.demon.co.uk> Signed-off-by: Andreas Ericsson <ae@op5.se>
Ramsay Jones 4c9a3973 2009-06-04T17:13:49 Improve the portability of the gitfo_cache code (to 64-bit systems) This supresses some "conversion from 'size_t' to 'unsigned int', possible loss of data" warning messages from the MS Visual C/C++ compiler with -Wp64. Signed-off-by: Ramsay Jones <ramsay@ramsay1.demon.co.uk> Signed-off-by: Andreas Ericsson <ae@op5.se>
Ramsay Jones 3e0fb8fb 2009-06-04T17:12:59 thread-utils.h: Avoid using a non-standard C construct In particular, in standard C, a struct or union must have at least one member declared (ie. structs and unions cannot be empty). Some compilers allow empty structs as an extension and won't even issue a warning unless asked for it (eg, gcc requires -pedantic). Some compilers allow empty structs as an extension and will only treat it as an error if asked for strict checking (eg Digital-Mars with -A). Some compilers simply treat it as an error (eg MS Visual C/C++). Signed-off-by: Ramsay Jones <ramsay@ramsay1.demon.co.uk> Signed-off-by: Andreas Ericsson <ae@op5.se>
Ramsay Jones c8d42b9b 2009-06-04T17:12:00 t0020-dirent.c: Add explicit returns to the callback functions In particular, the one_entry() and dont_call_me() callback functions require explicit returns, in order to suppress some "control path" compiler warnings (from MS Visual C/C++). Signed-off-by: Ramsay Jones <ramsay@ramsay1.demon.co.uk> Signed-off-by: Andreas Ericsson <ae@op5.se>