summaryrefslogtreecommitdiff
path: root/examples
diff options
context:
space:
mode:
authorCarson Howard <carsonh@axosoft.com>2017-12-19 15:29:40 -0700
committerCarson Howard <tylerw+systemtest@axosoft.com>2018-03-27 07:18:31 -0700
commit7d079413ed6462f03aeac93aec967b1a706ba4ee (patch)
tree8a29b2d9c1818d10dfe5ee3a77135ab044e70df8 /examples
parentee1446506fef2b2837c9a8f8ce2c2c4d47ecddff (diff)
downloadlibgit2-7d079413ed6462f03aeac93aec967b1a706ba4ee.tar.gz
test: ls-files: remove dependency on git_array
Diffstat (limited to 'examples')
-rw-r--r--examples/ls-files.c23
1 files changed, 12 insertions, 11 deletions
diff --git a/examples/ls-files.c b/examples/ls-files.c
index 3dd3a617e..6ad5581c7 100644
--- a/examples/ls-files.c
+++ b/examples/ls-files.c
@@ -28,7 +28,8 @@
typedef struct {
int error_unmatch;
- git_array_t(char *) files;
+ char * files[1024];
+ int file_count;
} ls_options;
/* Print a usage message for the program. */
@@ -46,10 +47,8 @@ static int parse_options(ls_options *opts, int argc, char *argv[])
{
int parsing_files = 0;
int i;
- char **file;
memset(opts, 0, sizeof(ls_options));
- git_array_init(opts->files);
if (argc < 2)
return 0;
@@ -61,9 +60,12 @@ static int parse_options(ls_options *opts, int argc, char *argv[])
if (a[0] != '-' || parsing_files) {
parsing_files = 1;
- file = git_array_alloc(opts->files);
- GITERR_CHECK_ALLOC(file);
- *file = a;
+ // watch for overflows (just in case)
+ if (opts->file_count == 1024) {
+ break;
+ }
+
+ opts->files[opts->file_count++] = a;
} else if (!strcmp(a, "--")) {
parsing_files = 1;
} else if (!strcmp(a, "--error-unmatch")) {
@@ -79,12 +81,12 @@ static int parse_options(ls_options *opts, int argc, char *argv[])
static int print_paths(ls_options *opts, git_index *index)
{
- size_t i;
+ int i;
const git_index_entry *entry;
/* loop through the files found in the args and print them if they exist */
- for (i = 0; i < git_array_size(opts->files); ++i) {
- const char *path = *(char **)git_array_get(opts->files, i);
+ for (i = 0; i < opts->file_count; ++i) {
+ const char *path = opts->files[i];
entry = git_index_get_bypath(index, path, GIT_INDEX_STAGE_NORMAL);
if (!entry && opts->error_unmatch) {
@@ -121,7 +123,7 @@ int main(int argc, char *argv[])
goto cleanup;
/* if there are files explicitly listed by the user, we need to treat this command differently */
- if (git_array_size(opts.files) > 0) {
+ if (opts.file_count > 0) {
error = print_paths(&opts, index);
} else {
entry_count = git_index_entrycount(index);
@@ -133,7 +135,6 @@ int main(int argc, char *argv[])
}
cleanup:
- git_array_clear(opts.files);
git_index_free(index);
git_repository_free(repo);
git_libgit2_shutdown();